This GitHub Action can be used to deploy code from Github repo to a WP Engine environment of your choosing. Deploy a a full site directory, or optionally a theme, plugin or other directory with the TPO options. Optionally lint your php pre-deployment. Post deploy, this action will automatically purge your WP Engine cache to ensure all changes are visible.
V2.0 NOW AVAILABLE! Note: v2.0 enhancements WILL break previous version yaml configs. To utilize the new features, users must update main.yml to match format below. If issues persist post update, please contact WP Engine Support.
-
Create a
.github/workflows/main.yml
file in your root of your WordPress project/repo, if one doesn't exist already. -
Add the following to the
main.yml
file, replacing values forPRD_BRANCH
,PRD_ENV
andWPE_SSHG_KEY_PRIVATE
if they are anything other than what is below. Optionally, values forSTG_
andDEV_
environments and branches can be specified. Consult "Further Reading" on how to setup keys in repo Secrets. -
Git push your site repo. The action will do the rest
name: Deploy to WP Engine
on:
push:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: GitHub Action Deploy to WP Engine
uses: wpengine/github-action-wpe-site-deploy@main
env:
# Keys, lint & url options
WPE_SSHG_KEY_PRIVATE: ${{ secrets.WPE_SSHG_KEY_PRIVATE }}
PHP_LINT: TRUE
TPO_SRC_PATH: ""
TPO_PATH: ""
# Branches & Environments
PRD_BRANCH: main
PRD_ENV: prodsitehere
STG_BRANCH: feature/stage
STG_ENV: stagesitehere
DEV_BRANCH: feature/dev
DEV_ENV: devsitehere
Name | Type | Usage |
---|---|---|
PRD_BRANCH |
string | Insert the name of the Github branch you would like to deploy from, example; main. |
PRD_ENV |
string | Insert the name of the WP Engine environment you want to deploy to. |
WPE_SSHG_KEY_PRIVATE |
secrets | Private SSH Key for the SSH Gateway and deployment. See below for SSH key usage. |
Name | Type | Usage |
---|---|---|
STG_BRANCH |
string | Insert the name of a staging Github branch you would like to deploy from. Note: exclude leading / from branch names. |
STG_ENV |
string | Insert the name of the WP Engine Stage environment you want to deploy to. |
DEV_BRANCH |
string | Insert the name of a development Github branch you would like to deploy from. Note: exclude leading / in branch names. |
DEV_ENV |
string | Insert the name of the WP Engine Dev environment you want to deploy to. |
PHP_LINT |
bool | Set to TRUE to execute a php lint on your branch pre-deployment. Set to FALSE to bypass lint. |
TPO_SRC_PATH |
string | Optional path to specify a theme, plugin, or other directory source to deploy from. Ex. "wp-content/themes/genesis-child/" . Defaults to "." Dir. |
TPO_PATH |
string | Optional path to specify a theme, plugin, or other directory destination to deploy to. Ex. "wp-content/themes/genesis-child/" . Defaults to WordPress root directory. |
-
Generate a new SSH key pair as a special deploy key between your Github Repo and WP Engine. The simplest method is to generate a key pair with a blank passphrase, which creates an unencrypted private key.
-
Store your private key in the GitHub repository of your website as new 'Secrets' (under your repository settings) using the names
WPE_SSHG_KEY_PRIVATE
with the name in your specfic files. These can be customized, just remember to change the var in the yml file to call them correctly. -
Add the Public SSH key to your WP Engine SSH Gateway configuration. https://wpengine.com/support/ssh-gateway/#addsshkey
- Defining environment variables in GitHub Actions
- Storing secrets in GitHub repositories
- As this script does not restrict files or directories that can be deployed, it is recommended to leverage one of WP Engine's .gitignore tamplates.