We’d like to introduce you to our latest open source project: WP Snapshots.
WP Snapshots is a command line interface (CLI) tool that empowers engineering teams to quickly share WordPress projects – including files and the database. Up until now, onboarding a new engineer onto a project has been tedious: he or she had to setup a local development environment, check out repositories, install matching versions of WordPress and any plugins, track down and import database dumps, copy over uploaded media, search and replace paths in the database, and so on. WP Snapshots turns a painstaking process into a few simple commands.
How Does it Work?
WP Snapshots enables “pushing” and “pulling” of snapshots, moving project data and configuration from your computer to the cloud or the cloud to your computer. A “push” command takes a snapshot of the current environment and sends it to a central repository. A “pull” command downloads a specific snapshot and sets it up locally, either inside of an existing local WordPress setup or by creating a new installation. Pulling a snapshot automatically replaces URLs, upgrades or downgrades the local version of WordPress to match that of the snapshot, and works with multisite.
WP Snapshots stores data in a “central repository” on Amazon Web Services (AWS), using S3 and DynamoDB. Buckets and tables are namespaced with your repository name, and snapshots are secured via AWS IAM. Therefore, any engineer using WP Snapshots will require their own set of AWS keys with read permissions (and write for creating snapshots) on the S3 bucket and DynamoDB table, named wpsnapshots-<repository> in AWS.
The 10up engineering team is already benefiting from the efficiencies offered by WP Snapshots. We encourage everyone to share in those benefits, provide us feedback, and even contribute via pull requests and issues on GitHub. We are planning to integrate WP Snapshots with our local Docker environment, WP Local Docker, such that anyone can spin up a complete environment with a single CLI command.