Bash script to deploy a Roots Bedrock project to WP Engine's hosting platform
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
README.md Redirect users to Toby's solution Nov 15, 2018
wpedeploy.sh Bumps version number Dec 29, 2016

README.md

This code is old and no longer works for Sage v9 and later. Check out Toby's blog post for a solution.


Deploy Roots Bedrock WordPress project to WP Engine hosting platform

Works up to Bedrock 1.7.2. Deploys themes, plugins, and mu-plugins.

Repo: https://github.com/hello-jason/bedrock-deploy-to-wpengine

Changelog

v2 - Removes build process for Sage theme. Now focuses purely on deploying your Bedrock project, regardless of theme. Grab the branch master.

v1 - Works up to Bedrock 1.7.2, Sage 8.5. Grab the branch release/1.0.0.

Description

This bash script prepares a WordPress project built on Root's Bedrock boilerplate and deploys it to the WP Engine hosting platform.

WP Engine expects to see a standard WordPress project in the document root for your account. Since Bedrock shifts folders and files around a bit, this script temporarily moves everything back to their original locations (on a safe, temporary branch), which is then pushed to WP Engine.

The result is a properly-versioned Bedrock repo that you can safely and repeatedly deploy to WP Engine's production and staging environments.

Demo:

Installation & Setup

1. Grab the script

Source code is available at https://github.com/hello-jason/bedrock-deploy-to-wpengine. This repo is not meant to be cloned into your project. Rather, just grab the wpedeploy.sh file and place it in the top-level directory of your Bedrock project, and keep it with your project's repo.

2. Setup git push

Follow these instructions from WP Engine to setup SSH access and git push for your WP Engine account.

This readme assumes your remotes are named as follows:

  • Production: wpeproduction
  • Staging: wpestaging

Usage

Run at the top level of your project, in the same directory as your .env and composer.json files. Replace each remote name with the ones you created during step 1.

Deploy to staging:

bash wpedeploy.sh wpestaging

Deploy to production:

bash wpedeploy.sh wpeproduction

FAQs

  • Which branch does it deploy? - Deploys the local branch you run it on to whichever WP Engine remote you specify (production or staging)
  • What about the uploads directory? - Completely ignores the uploads directory. You'll have to upload that separately via SFTP.
  • How does it handle plugin versions? - You can upgrade or downgrade version numbers in the composer.json file, run composer update, then run this script to deploy the new version to WP Engine. However, this script will not delete plugins from WP Engine's servers; you will have to do that via SFTP or wp-admin.
  • What about WordPress core? - This script only deploys the contents of wp-content to WP Engine's servers. You should keep WordPress core updated in your composer file, but that only benefits your local dev environment. You will manage WP core for your publicly-facing site in WP Engine's interface directly.
  • Why doesn't it work on Ubuntu? - It does! But Ubuntu defaults to dash rather than bash, and the script may fail if you simply run sh. Other distros may do the same, so running this script with the bash command is important.
  • Why did you remove the build processes for Sage? - Since each project will have a different build process for its theme, it makes more sense to focus solely on deploying to WP Engine. More info in this issue.