Information for: DEVELOPERS   PARTNERS

Post Code Deploy

Deploy – Back to intro
Previous lesson - Release the Kraken (code)

Lesson Goal

Perform application updates after new code has been deployed.

In order to complete this lesson you will need:

  • Command line access to an Cloud Platform subscription
  • An application running Drupal 8 or greater that is deployed to Cloud Platform

The following tools are not required, but recommended:

In this lesson we will:

  • Update production database to reflect code changes

Config and database updates

At this point, the code for your new release is on your production server(s). However, your database has not been updated in any way.

Database updates

A typical code release will require the following database-related actions to be performed:

  • Update hooks provided by contributed module should be executed. This is easily accomplished with drush updatedb.
  • Changes to exported configuration files should be imported. Depending on your configuration management strategy, this may require drush config-import or drush features-revert-all.
  • Your caches should be rebuilt. This will allow changes to Twig templates, CSS, JavaScript, and various other cached data to be registered. This can be accomplished with drush cache-rebuild.

Depending on the changes that your release contains, these commands may need to be run in a specific order or even multiple times. The consequences of running these commands incorrectly can be subtle and complex.

If you are using BLT, this is handled for you via the blt deploy:update command, which will run all aforementioned commands in the correct order.

Cloud Platform Hooks

Cloud Platform Hooks provide a mechanism for executing a script when a particular action is performed. For releases, the post-code-update and post-code-deploy cloud hooks are relevant. These will allow a custom script to be executed each time that a new tag is deployed to your production environment.

To implement a cloud hook, you must create an executable bash script and place it in a specific location in your codebase.

If you are using Acquia BLT, you can generate a set of default cloud hooks by executing blt setup:cloud-hooks. This will place default bash scripts into the appropriate directories and set the correct permissions on them. These scripts will implement the aforementioned blt deploy:update command to execute the suggested database updates each time that you make a deployment.

Important

When creating a new Cloud Platform CD environment, the post-code-deploy hook is not run, and this hook must be run twice for its changes to take effect. For more information, see this known issue.

Congratulations, you’ve successfully deployed a Drupal application to a production environment following Drupal best practices!