Put your site’s updates on autopilot with Pantheon multidev and visual testing
If you are running a drupal or wordpress site you for sure dealing with regular updates. Time to time you are getting security updates that should be rolled out immediately.
Biggest problem is when you were not updating your site for a while and then because of security update you realize you need to update couple of versions of the core plus some contrib modules. This could be really messy process, specially if you are under time pressure.
Would it be nice if you could apply updates regularly as they come? Sure it would. But where to get all the time to check the site every time smaller updates come available?
In this article we discuss how you could run small, incremental updates and use visual regression tool to ensure your updates do not break things.
Because of the Pantheon’s multidev feature it is possible to deploy your site with updates to separate host. After that, we could check if it visually changed from your production. For updates we expect no changes. If there are none -- you can safely merge the code. If visual changes were found you could review them and fix the site if needed.
- Drupal site hosted on Pantheon with enabled Multidev
- Server that will regularly run cron job (to check updates and communicate with visual testing tool).
- An account with Diffy, our visual testing tool
- Slack channel for posting messages with results of testing
Step 1. Preparing our server to run cron jobs
You will need just a few things. First -- install Terminus. It is needed to orchestrate your Pantheon’s account -- create / delete a git branch / host. Make sure you have submitted your server user’s public ssh key to your Pantheon account so Terminus would be able to get to your hosting without requesting password.
Step 2. Configuring Diffy account
You can sign-up at https://diffy.website. You would need to create a project for your Live environment. During creation of the project make sure you covered all your critical pages for testing. Also if you have some dynamic elements on the site (sliders, ads, popups), make sure you have cleaned them up using masking and excluding.
Also, please generate a key so script could use REST API with Diffy.
Step 3. Set up webhooks for your Slack
Good documentation is available at slack documentation page.
Step 4. Configure the script
You will need to clone https://github.com/DiffyWebsite/pantheon-autoupdates to your server and edit configuration.sh file.
SITE_NAME is a machine name of your site at Pantheon
SITE_UUID is a uuid of your Pantheon’s site
DIFFY_PROJECT is an id of your Diffy project. Check it in the URL when viewing project details.
TMP_FOLDER is a folder where script has write access to. It will be used to download comparison report from Diffy and upload it to your Drupal site for review. Using /tmp should be just fine.
Step 5. Run & Debug
After you have configured the script try to run run-auto-updates.sh. It will create auto-update branch in your repo, set up the host and run all updates there.
If you have some custom steps (not just running
drush updatedb after pulling database) please edit scripts/auto-update.sh at around line 81.
Step 6. Set up a cron job
After successfully setting up the whole script it is a good idea to put it on auto-pilot by setting up a cron job. Something like once a week should probably do the job just fine. Alternatively you can set up this job to be run by Jenkins or any other system you like.
Please let us know how it works and reach out if need any assistance.