stir
is designed to speed up, automate, and integrate project commits, management, and deployment. Its main focus is Wordpress websites, but it can be used with any code repository.
Changelog • Known bugs • Installation
stir
is in daily use at EMRL, an advertising, design, and development agency in northern California. If you have any questions, please feel free to contact us.
Please note that there is quite a bit of setup involved in getting this running reliably. A full setup guide is coming soon™ but for now check out what we've got started in the wiki documentation.
Usage: stir [options] [target] ...
Options:
-F, --force Skip all user interaction, forces 'Yes' to all actions
-S, --skip-update Skip any Wordpress core/plugin updates
-u, --update If no available Wordpress updates, halt deployment
-U, --update-only Deploy only Wordpresss plugin/core updates
-D, --deploy Deploy current production code to live environment
-m, --merge Force merge of all branches
-c, --current Deploy a project from current directory
-t, --time Add time to project management integration
-p, --prepare Clone and setup local Wordpress project
-V, --verbose Output more process information to screen
-q, --quiet Display minimal output on screen
-v, --version Output version information and exit
-h, --help Display this help and exit
-H, --more-help Display extended help and exit
Other Options:
--automate For unattended execution via cron
--build Build project assets
--prepare Prepare project
--reset Resets local project files
--prepare-with-reset Reset and prepare project
--digest Create and send weekly digest
--report Create a monthly activity report
--no-check Override active file and server checks
--stats Generate project statistics pages
--invoice Create an invoice
--strict Any error will halt deployment completely
--debug Run in debug mode
--debug-to-file Save debug output to a file
--unlock Delete expired lock files
--repair Repair a deployment after merge failure
--scan Scan production hosts for malware issues
--update-acf Force an update or reinstall of ACF Pro
--test-ssh Validate SSH key setup
--test-email Test email configuration
--test-slack Test Slack integration
--test-webhook Test webhook integration
--test-analytics Test Google Analytics authentication
--test-monitor Test production server uptime and latency monitoring
--test-mautic Test Mautic integration
--test-bugsnag Test Bugsnag integration
--show-settings Display current global and project settings
--function-list Output a list of all functions()
--variable-list Output a project's declared variables
stir
consolidates a boatload of functions into a single command that simplifies web app deployment from a development or staging environment to a production server. It also can provide clients with a dashboard of information about their project.
stir
requires git
, and will make use of wp-cli
, grunt
, npm
, composer
, and mina
if they are installed.
stir
can be run from anywhere, but if you'd like it to be installed server-wide follow the instructions below.
- In the
stir
directory, typesudo ./install/doinst.sh
and enter your sudo password when/if asked - That's it. By default
stir
is installed to/usr/local/bin/
and support files are installed to/etc/stir/
Configuration is handled globally in the /etc/stir/global.conf
file. Individual users also have their own settings in ~/.stirrc
Repositories can each have their own configuration. An example of this file can be found here.
stir
is able to integrate with many third-party platforms, including Slack, Google Analytics, PHP Server Monitor, Bugsnag, Invoice Ninja, Mautic, and more. Check out the integration wiki for more information.
stir --automate
works well for unattended updates of Wordpress sites; great for maintaining updates via a cron. An example cron script can be found here. Running in this mode, the project will only be deployed if there are Wordpress core or plugin updates. If other code changes are detected the project will not be auto-updated. Smart Commits must be enabled or nothing will be deployed.