WordPress DevOps – WordCamp Grand Rapids 2018
1. Introductions
- Development History
- High School
- 1996 – Personal School Website – image maps with cgi-bin processing written in C
- 1996 – Davisco Foods International (First Freelance Job) – static HTML site
- College
- 2000 – Inspiration Point Christian Camp & Retreat Center – perl for form processing, PHP template-based site
- Post-College
- 2002 – Cross Roads Range Christian Camp – PHP CMS
- 2004-2006 – Church of the Lutheran Brethren of America & related ministries – PHP CMS, PHP Authorize.NET Donation Processing, osCommerce
- 2006 – iPCS Wireless, Inc. (telecommunications) – PHP & Perl
- 2011 – Ericsson/Sprint (telecommunications) – PHP/.NET/C#/Java
- 2012 – Allen Extruders/SPI (manufacturing) – PHP/Ruby/C#/.NET
- 2016 – Sprint (telecommunications) – Java/C#/.NET
- High School
- WordPress History
- Personal
- 2006 – Personal Blog
- 2006 – Faith Shaping Podcast
- 2008 – The Stamp Box, wife stamping/craft site
- 2009 – Adoption Blog
- Freelance
- 2007-2017 – Daybreak Church (website, blog, podcast)
- 2010 – Starfish Project Haiti
- 2012 – ITS Partners
- 2018 – Warm Oven Bakehouse (WooCommerce)
- Personal
2. Intro to DevOps
- What is DevOps?
- DevOps is a software engineering culture and practice that aims at unifying software development (Dev) and software operation (Ops).
- DevOps is about a way of doing things not about the tools themselves.
- Revisiting “What is DevOps” – by Mike Loukides
It’s always easy to think of DevOps (or of any software industry paradigm) in terms of the tools you use; in particular, it’s very easy to think that if you use Chef or Puppet for automated configuration, Jenkins for continuous integration, and some cloud provider for on-demand server power, that you’re doing DevOps. But DevOps isn’t about tools; it’s about culture, and it extends far beyond the cubicles of developers and operators.
- Revisiting “What is DevOps” – by Mike Loukides
- DevOps is about a way of doing things not about the tools themselves.
- DevOps aims at shorter development cycles, increased deployment frequency, and more dependable releases, in close alignment with business objectives.
- The point of implementing DevOps practices is about saving time, money, resources.
- intimate understanding between the development and operations teams
- Many DevOps initiatives focus all on automating everything. If someone has done it more than 1 time then automate it so it never has to be manually done again.
- If we are spending all our time focusing on automating and implementing DevOps practices then the real product doesn’t launch or the real work doesn’t get done.
- DevOps is a software engineering culture and practice that aims at unifying software development (Dev) and software operation (Ops).
- What does DevOps offer to WordPress development?
- Increased Productivity – Developers, designers, and testers can work on solving new problems and not repeating the work needed to solve previous problems.
- Environment – How do we establish environment standards that developers can work within and operations can easily support?
- Repetitive Tasks – What work are developers or operations teams doing repetitively that make send to automate in some way that can be counted on and reliable?
- Business Workflows – How can business processes and workflows be standardized?
- Increased Quality – A team can rely on testable, reproducible, and quantitative results that can give a clear picture of the current product state.
- Unit Tests – Requiring code that can be tested to fulfill requirements.
- Standards – Code can be checked automatically against well define business or industry standards. (WordPress Coding Standards)
- Business Requirements – Test and standards compliance reports can be automated to confirm business requirements are being met.
- Reduced Time to Delivery of Releases – When standards and best practices are followed there are less mistakes and less changes required to prepare for a release.
- Automated Tests – Tests can be run on changes or on regular business defined schedules.
- On-Demand User Testing – Tests can be run by developers or quality control on-demand without spending time on setup.
- More Releases – Small regularly scheduled, or planned, releases can be made on an as-needed basis.
- Increased Productivity – Developers, designers, and testers can work on solving new problems and not repeating the work needed to solve previous problems.
3. What Are The First Steps
- Understand the Concepts
- You need to take small steps to start understanding what can be done, what should be done, and how it fits your business or organization.
- Resources
- Carl Alexander – Introduction to Automated WordPress Deployments
- WP Pusher – Git for WordPress Developers
- Tom McFarlin – Ship It or Die
- Identify Your Pain Points
- What are you repeating?
- What is taking you the most time?
- What is requiring the most support from your users?
- Leverage What Others Have Already Done
- Services
- Plugins
- Radish Concepts – WordPress GitHub Plugin Updater – Library/class that you can use in your own plugin to update from GitHub
- Andy Fragen – GitHub Updater – Plugin that can update plugins and themes from GitHub, Bitbucket, GitLab, or Gitea
- Scripts
- Dean Clatworthy – GIT to WordPress.org’s SVN Repository
- Gary Jones – WordPress Plugin Directory Deployment Script
- Mike Jolley – Github to WordPress.org Deployment Script
- Ahmad Awais – WPGitDeploy CLI
- Build Tools
4. What Does The End State Look Like? A Plugin Example.
Scheduled Featured Images Plugin – https://travis-ci.org/ndigitals/scheduled-featured-images/branches
Daybreak.tv Custom Theme – https://app.codeship.com/projects/48683/deployment_branches/54216
- Tools
- NPM & Composer – Reproducible Environment
- Grunt – Running Tasks
- Codecov – Code Coverage Reporting
- Configuration
- PHP Code Sniffer – WordPress Coding Standards
- phpcs/phpcbf
- PHPUnit – Unit Testing
- phpunit
- WordPress i18n – Internationalization
- grunt i18n (addtextdomain, makepot)
- WordPress Readme to Markdown – GitHub & WordPress.org Readme maintenance alignment
- wp_readme_to_markdown
- PHP Code Sniffer – WordPress Coding Standards
- Practises
- Run Local Local Checks
- phpunit
- phpcs
- phpcbf
- Test Automation Against Development Branches
- TravisCI – branches
- Test Automation Against Final Release
- TravisCI – master
- Run Local Local Checks
- Deployments
- Deploying Plugin & Theme Updates Directly to Servers
- CodeShip – rsync
- Deploying Plugin & Theme Updates Via A Plugin
- WordPress GitHub Plugin Updater – can select which branch to use as source for plugin updates, can install directly from GitHub
- Deploying Plugin & Theme Updates to WordPress.org
- Use a WordPress.org SVN pre/commit script
- Deploying Plugin & Theme Updates Directly to Servers
5. Q & A
This space will be reserved to capture questions asked at the end of the talk with the answer. Additional questions can be asked in the post comments.