This document discusses using version control and continuous integration to deploy code. It recommends developing code locally, using distributed version control like Git, and deploying to a testing environment before production. The continuous integration workflow involves multiple developers sharing code through a central version control repository. Each code push is verified by automated builds to avoid integration issues and catch problems early. The document provides an example deployment script for Codeship that checks out code, installs dependencies, builds assets, commits changes, and pushes to the production remote. It also discusses testing deployments using Assertible and lessons learned around caching packages, installing dependencies, and using forceful Git pushes for deployment.
5. Deploy your
site
• Manage the way code is deployed
• Automate repetitive tasks for devs, admins when changes
go live
• Make it easy to use best practices
• Allow for flexibility, multiple deploy processes, safe testing
7. The Solution
• Develop Locally
• Distributed Version Control
• Don’t keep plugins and WP core in repository
• Deploy to testing environment prior to production
• Automate build and testing
8. Continuous
Integration
• Multiple developers share code
• Several pushes per day
• Each push verified by automated build
• Avoids “integration hell”
• Teams can detect problems early
9. Workflow
• Local Development
• Central Version Control
• Continuous Integration Pipelines
• Build Script
• Dependencies
• Push to server
37. Codeship
• Uses a virtual machine at time of deploy
• Has many common binaries installed, possible to install more
• Caches NPM packages
• Can be used in Debug mode which allows you to SSH into the
virtual machine and run commands until happy
38. Git Integration
• Understanding how to move files from Codeship was
difficult
• A few different attempts to make this happen
• Possible to use FTP, but Git is more streamlined and quicker
• git push — force option important - not all files in the repo
are needed in production
39. Build
• Gulp, Grunt, Webpack.js, etc. can all be run during
deployment
• Local development can use it’s own build script
• Possible to use different tasks or build scripts for each
branch
• Allows for release management - deploy different branches
to their own server environments (stage, test, production)
40. Next Steps
• Do more testing with Assertible 😁
• Remove all source files and unnecessary files like readme 😎
• Create automated rollback functionality, look at symlinks 😵
• Wishlist: Visual Regression Testing with NPM/Wraith, Backstop.js 👊
41.
42. Reference
Team Collaboration with Github
7 Easy Steps to Continuous Deployment
Optimize Local Development
Codeship Deployment Script
Post Deployment Smoke-Testing with Assertible