All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
- Settings use specific versions of PHP with
composer
andwp-cli
are now available, per project - ACF Pro can now be updated via
composer
as well as the legacy method - Added
--skip-git
for projects that are focused only on client communication - Added ability to turn off RSS feed per project, even if set globally
- Added ability to define which Wordpress plugins are to be activated when using
--prepare-with-reset
and when running updates on a Wordpress project
- Fixed success color rendering in default html theme
- Fixed a bug in preparing new Wordpress projects
- Fixed an activity log email formatting error
- Resolved #189
- Updating Wordpress core should now be more reliable
- Gravatars are now being accessed securely
- Fixed potential unbound variable issue in
wp_activate_plugin
- Cleaned up old code here and there
- Resolved [#197]
- Added Mautic integration for reporting on marketing email performance
- Some variable names in configuration files have changed, and require a new migration process which is described in detail during the update process
- Removed the ability to set a default commit message
- Improved Wordpress core and plugin update functions
- Improved install process
- Smart Commits include Wordpress core updates once again (#151)
- Fixed a bug that prevented the sending of email in some environments (#193)
3.8.4 - 2-14-2021
- Updates to Wordpress production databases should now only happen when actually needed
- Fixed issues generating monthly reports
3.8.3 - 11-12-2020
- If there are analytics to report, digest emails will now be sent even if there are no code updates to report
- Monthly PDF format reports can now be attached to invoices when using the
--invoice
switch
- Cleaned up some reposnsive layout issues with digests
- Avg. session duration is displayed correctly in digests
3.8.2 - 10-17-2020
- Digests can now display detailed traffic, Goodle Ads, and ecommerce activity data
- Engagement reports and digests now use the more useful
pageviews
instead ofhits
- Variables changed to use more consistent naming
- Internal command variables are now correctly initialized
3.8 - 7-13-2020
- Notification emails can now be sent using external SMTP servers
- Launching
stir
using the--prepare-with-reset
will completely delete and reset the local copy of the target project, and then launch your defined prepare action - The number of days of engagement data to be displayed can now be configured in the projects'
theme.conf
- Project settings can be displayed in an easy to read format using the
show-settings
switch - Added a simple external script for perfoming batch stir actions, see
etc/extras/bulk.stir.sh
- Global project directory and repo host variables are now set during the initial install process
- Project settings are now backed up when performing a
--reset
when a globalCONFIG_BACKUP
is declared - Added
--update-acf
to account for unreliable update checks - Added
--debug-to-file
allowing for very verbose logs to be saved to file calleddebug.log
in your current working directory - New releases of
stir
will now update "in place" --skip-updates
now aliases to--skip-updated
because I kept forgetting the switch name- Added a workaround for emailing Invoice Ninja invoices with an offset invoice numbering
- Deprecated and removed the
gitStatus()
,gitStart()
,permFix()
andfix_index()
functions - Deprecated the
WP_CLI
andMAILPATH
global variables - Deprecated approval functionality
- Plugins are no longer activated by default, unless required for reliable upgrades
- Composer now creates less noise in log_files
- Improved dependency checks
- Improved temporary file management
- Improved first-run install process
- Binary files should no longer confuse log parsing functions
- Missing project configuration error now exits more gracefully
- Environment checking works more reliably
- Analytics functions changed to accept more variation in payloads received from Google
- Checking for new
stir
releases works more reliably - Fixed a small email text bug
- Commit authors with no Gravatar image are now correctly given the default profile image
- Fixed a layout bug in the default HTML email footer
3.7.4 - 11-18-2019
- Automated Worpdress updates may now made by cloning a temporary copy of the project's repo, running the updates, and destroying upon completion
- Origin sync is now forced when running using
--automate
- Prepare hook added
- Added
--reset
switch - Default HTML theme now includes a dark mode
deploy
is nowstir
- Invoice creation will now exit gracefully if project is not correctly configured
- Initial project preparation and cloning has been simplified
- Improved accuracy of smart commit messages
- Approval queue functions are now deprecated and slated for removal
- Production URL must now be defined before malware scans are attempted
- Fixed many small bugs
3.7.3 - 03-12-2019
- Wordpress projects can now be managed using either
composer
orwp-cli
(or both) transparently - ACF Pro update files must now pass an integrity check before proceeding with plugin upgrade
- Project deployment can be disabled by adding a file called
.donotdeploy
in the project's root directory (This is the equivalent of settingDO_NOT_DEPLOY="TRUE"
in.deploy.sh
)
- Fixed a bug that occasionally caused successful deployment to be incorrectly reported
3.7.2 - 09-25-2018
- Project dashboards have been redesigned to include more analytics charts and information
- Digest emails can now include a chart showing the week's analytics
- Improved HTML post-processing
- The
--stats
flag should no longer cause issues when being properly run from a cron process - Log files should no longer be left behind in the
/tmp
directory - Fixed a problem where statistic dashboard could get corrupted when multiple instances of
deploy --stats
are running - Unbound variable errors no longer occur when a Google Analytics result is zero
3.7.1 - 07-13-2018
- Added
deploy --build [project name]
for quickly building project assets - Option to set
TERSE="TRUE"
indeploy.conf
for slightly cleaner log files
- If a project is using
mina
and configured to build assets on every deployment,deploy
will skip the redunant build step - Test emails now contain more project information
- Improved readability of log files
- Improved unit testing
- Cleaned up language for more consistency
- Trapped an error that prevented
deploy --monitor-test [project]
from working
3.7 - 05-03-2018
- Digests now include information about recent malware scans, uptime, latency, and backup stats
- Invoice creation is now available via InvoiceNinja's API using
deploy --invoice
- Added a very simple built-in web deployment method for instances when using something like
mina
is unavailble - Added malware scanning using Nikto
- Ports other than 22 can be used for SSH/SCP functions
- Running with the
--automate
switch now requires the branch defined as "master" must be currently checked out. The behavior is the equivalent of settingCHECK_BRANCH="${MASTER}"
3.6.7 - 03-05-2018
- Configuration files now upgrade in place if needed when new versions of
deploy
are released - Statistic reports now display server uptime, latency, and a few handy Google analytics stats
- Configuration files restructured for better readability
- Many function and variable names changed for better consistency
- Remote hosted log files are now correctly deleted when they expire
- Fixed a crash that could occur when creating statistics for projects with code in approval queue
- Reports for the month of January now generate correctly
- Fixed a bug that could rarely report an incorrect Wordpress version number
- Google analytics no longer incorrectly display for projects that do not use them
- User configuration files are now created more reliably
3.6.6 - 01-13-2018
- Server health information now included in email/html logs via integration with PHP Server Monitor using this API
- Option to include web hosting as a line item on monthly reports
- Remote servers can now host project logs, digests, statistics, and reports
- New release check now runs upon launch
- Item descriptions are now editable in reports
- Cleaned up email output generated using
deploy --email-test
- Report URLs are now formatted
report/YEAR-MONTH.php
instead of using a hard to remember string
- Fixed a bug with running a report on dates in the previous calendar year
- Added a workaround for Google potentially displaying over 100% of user sessions as new
- Fixed a bug that kept SSH keys from being properly checked
3.6.5 - 11-17-2017
- Monthly reports can now be generated using
deploy --report [project name]
- Project configuration files can be named either
deploy.sh
or.deploy.sh
- New configuration switch
INCOGNITO
strips emails and file paths from verbose output and log files for greater security - Added Webhook integration for SMS digests using Zapier
- Deployments that fail on push can now be repaired using 'deploy --repair'
- Links to Github commits now use the correct URL
- Using
bundle
in deployment command should now pass checks more accurately - Poor analytics results are now correctly filtered from digests
3.6.4 - 09-14-2017
- Added
--update-only
switch, allowing for the deployment of only Wordpress plugin/core updates, while skipping over local code changes - Added option for email notification to be sent "clean," without full logging information
- Added a default check for a configuration file (
deploy.sh
) in project root directory - HTML theme colors can be configured in
[theme root]/theme.conf
- Added error handling for projects with no commits
- Recently changed files that are .gitignored will no longer halt automated deployment
- Running as root is no longer allowed; this can be overridden by setting
ALLOW_ROOT="TRUE"
- Slightly improved deployment error checking
- Tightened up many functions
- All HTML email variables are now correctly validated and post-processed
- Digests no longer post to Slack when there's been no activity
3.6 - 07-08-2017
- Added experimental approval/denial code queue functions
- Added ssh key checking when required, upon starting each deployment session
- Added ssh configuration check when deploying to live environments via
mina
- Added integration with
gitchart
for generation of graphic statistics - Added integration with Google Analytics for web projects
- Added Wordpress database checks
- Added another failsafe check;
deploy --automate
will not deploy unless repo is on master branch - Added
--time
switch to allowing tracking work time when deploying manually - Added project information to test emails sent with the
--email-test
switch - Added
deploy --unlock
to make it easier remove stale .lock files - Added options to define custom file paths used in your Wordpress projects
- Added email and Slack notification for automated deployments when no updates are available
- Added email integration test
- Added the ability to disable Wordpress core updates for sites that require it
- Improved rendering of emails in Windows 10 Mail client
- Brought back client emails in the form of a weekly digest
- When deploying using the
--current
directory; instead of app directory name, the actual repo name will be used to identify the project in Slack and email notifications - Improved readability of full logs
- Improved language for consistency in some functions
- Fixed a rare bug with saving HTML logs
- Fixed a visual bug that displayed incorrect branch names to the user
- Missing client logos no longer break HTML emails and logs
- Fixed a bug with Slack not including commit messages when using
deploy --automate
3.5.7 - 03-03-2017
- Added the ability to add time to task management system worklogs via email integration
- Added
deploy --publish
for deploying current production code to live environment
- Updated default HTML theme
- Logged output is now time stamped
- Rewrote Slack integration
- Improved log details
- Fixed issues with HTML log on mobile devices
- Fixed a bug with restoring previously checked out branch
- Fixed a bug in which an Advanced Custom Fields Pro update could create an empty smart commit message
3.5.5 - 02-12-2017
- Added
--no-check
switch to override active file and server checks - Added the option to stash dirty files during unsupervised deployment of Wordpress updates
- Added configurable From: email address for log files
- Upon exit, deploy will now return the repo's current active branch to its original state, instead of assuming checkout of master
- Improved dependency checks
- Emails are now sent using Sendmail
- When run as a cron (
--automate
) integration emails are now sent from the default email address, not the spoofed user's email - Slack webhook URL is no longer displayed in logs
- Fixed a bug with text-format emails not including complete logs
- Fixed issue with passing user variable to Slack integration when an error is triggered
- Fixed output from
deploy --function-list
anddeploy --variable-list [project]
- Fixed missing path variable that kept
deploy --automate
from running correctly
3.5 - 11-11-2016
- Added
deploy --automate
for scheduled update deployments. Equivalent todeploy --force --update --quiet
with the addition of a flag to enable sending a scheduled update email notice to clients - Added ability to save HTML logs to local filesystem
- Added ability to post log files to a remote host with scp
- Added option to delete log files after a certain amount of days
- Added HTML email log option, with custom templates assignable either globally or by project
- Added link to detailed log files from Slack messages
- Added more robust branch checking
- Added option to enforce server check
- Recently changed file checks are now more accurate
- Logs are now only emailed and posted when something noteworthy has occured - e.g. a commit has been made or an error has occurred
- Changed checkout behavior - master branch is now only checked out when needed
- Cleaned up log output
- Changed default merge behavior - deploy will no longer perform automatic merges unless ran as
deploy --merge
orAUTOMERGE="TRUE"
is defined inconfig/deploy.sh
- Existence of all defined branches is now confirmed before starting deployment process
- Fixed a small bug when repo name is undeclared when not running
deploy --current
3.4 - 07-07-2016
- Added a more reliable method of updating Advanced Custom Fields Pro
- Added "Garbage Collection" mode to help keep your repo neat and tidy
- Added optional fix for Wordfence firewall permission problems
- Added check for .git/index permission issues
- Fixed some issues that can cause permission problems in certain environments
3.3.4 - 05-16-2016
- Added Travis CI tests
- Added
deploy --function-list
to list all available functions() for help debugging with in the future
- Cleaned up many functions
- Cleaned up configuration files
- Exit codes now pass more reliably to Slack messages
- Fixed issue with deploy_project() not executing deployment command correctly
3.3.3 - 02-11-2016
- Added active file check as another failsafe when running as cron (
deploy --force --update --quiet
) to stop potential issues that may come up in multi-developer environments - Added a new option to include error messages in Slack integration
- Option added to projects'
config/deploy.sh
to enforce repo to have a certain branch checked out before beginning deployment session. - Added
deploy --slack-test
to allow testing of Slack integration - Added change log
- Running
deploy --current
will now deploy the current directory and no longer needs to be launched asdeploy --current [project name]
3.3 - 02-03-2016
- Added ssh key detection, allows manual login to repo host if keys not found
- Added Slack integration
- Added
deploy --force --update --quiet
for unattended Wordpress plugin/core updates via cron scheduling - Added
deploy --current
which will allow for deployment of current working directory if a project is found - Added
deploy --skip-update
3.1 - 11-12-2015
- Added install script
- Added progress indicators
- Implemented logging
- Added "Smart Commits" - commit messages are generated automatically based on Wordpress core/plugin updates that have occured
- Increased detail of verbose output
- Configuration files for both the user, and the project are now automatically created if not found
3.0 - 10-21-2015
- Basic
wp-cli
integration
- Old monolithic script rewritten