Home

Awesome

Project maintainers welcomed

April, 2016

It just so happened that in the last year, my development interests shifted away from WordPress. As such, I ended up not writing a single line of PHP in over twelve months.

I believe that the tools we build are best when we use them ourselves, and the reality is I don't use wp-cli-deploy anymore, so I decided to hand off maintenance of this project to someone else.

If you’re interested in the gig, ping me on Twitter and we can take it from there.

Update from new project maintainer

May, 2018

I look over this project thinking it would be something I could maintain, but I have recently been using different tools and have left wp-cli-deploy to gather dust. I do plan to incorporate the new tools into the plugin and bring it back up to speed at some point soon.

In the mean time, if someone else wants to take the reigns, you can contact robrecord on Twitter to discuss.

WP-Cli Deploy

Current Version: 1.0.0 (stable), 1.1.0-beta (in dev)

Deploys the local WordPress database or uploads directory.

The tool requires defining a set of constants in your wp-config.php file. The constants should be prefixed with the environment handle which you will use as the first parameter for your desired subcommand. An example configuration for a "dev" environment:

<?php
define( 'DEV_URL', 'the-remote-website-url.com' );
define( 'DEV_WP_PATH', '/path/to/the/wp/dir/on/the/server' );
define( 'DEV_HOST', 'ssh_host' );
define( 'DEV_USER', 'ssh_user' );
define( 'DEV_PORT', '22' );
define( 'DEV_PATH', '/path/to/a/writable/dir/on/the/server' );
define( 'DEV_UPLOADS_PATH', '/path/to/the/remote/uploads/directory' );
define( 'DEV_THEMES_PATH', '/path/to/the/remote/themes/directory' );
define( 'DEV_PLUGINS_PATH', '/path/to/the/remote/plugins/directory' );
define( 'DEV_DB_HOST', 'the_remote_db_host' );
define( 'DEV_DB_NAME', 'the_remote_db_name' );
define( 'DEV_DB_USER', 'the_remote_db_user' );
define( 'DEV_DB_PASSWORD', 'the_remote_db_password' );
define( 'DEV_POST_HOOK', 'echo "something to be executed when the command finishes"' );

=> wp deploy push dev ...

Not all commands / subcommands require all constants to be defined. To test what a subcommand requires, execute it with a non-existing environment handle. e.g. wp deploy dump johndoe.

You can define as many constant groups as deployment enviroments you wish to have.

Examples

# Deploy the local db to the staging environment
wp deploy push staging --what=db

# Pull both the production database and uploads
wp deploy pull production --what=db && wp deploy pull production --what=uploads

# Pull both the production themes and plugins
wp deploy pull production --what=themes && wp deploy pull production --what=plugins

# Dump the local db with the siteurl replaced
wp deploy dump andrew

Installation

require: "relative/path/to/deploy.php"

Configuration

In order to be able to use the deploy command, you need to define certain constants in your wp-config.php file.

Configuration Dependecies

Subcommands depend on different constants in order to work. Here's the dependency list:

wp deploy pull: In order to pull to your server, you need to define the sh credentials constants. These constants are needed whatever the arguments assed to the pull subcommand: * %%ENV%%_USER * %%ENV%%_HOST

%%ENV%%_POST_HOOK

You can optionally define a constant with bash code which is called at the end of the subcommand execution.

You can refer to environment variables using placeholders. Some of the available environment variables are:

Example

Here's an example of a DEV_POST_HOOK that posts a message to a hipchat room after a pull or a push is performed using the HipChat REST API (https://github.com/hipchat/hipchat-cli). For pushes, it also clears the cache.

<?php
$hipchat_message = "http://%%url%%"
	. "\njeandoe has successfully %%command%%ed %%what%%";
$command = "if [[ '%%command%%' != 'dump' ]]; then "
		. "echo '$hipchat_message' | %%abspath%%/hipchat-cli/hipchat_room_message -t 1245678 -r 123456 -f 'WP-Cli Deploy';"
	. "fi;"
	. "if [[ '%%command%%' == 'push' ]]; then "
		. "curl -Ss http://example.com/clear_cache.php?token=12385328523;"
	. "fi;";
define( 'DEV_POST_HOOK', $command );

Credits