WordPress DevOps – WordCamp Grand Rapids 2018
Tags: featured, programming, devops, grandrapids
Published: 2019-08-07 16:10:05

---
title: WordPress DevOps – WordCamp Grand Rapids 2018
published: true
tags: Featured,Programming,DevOps,Grand Rapids
canonical_url: https://www.timnolte.com/2018/06/30/wordpress-devops-wordcamp-grand-rapids-2018/
---

<iframe src="https://docs.google.com/presentation/d/e/2PACX-1vQTgpIA-rFcs0boLTiYsIQSqzzQM9onrf4S3nF6Lb_2nB_Goa6qu-rUsO-aWbMjrfGU8D6mECj5_xad/embed?start=false&amp;loop=false&amp;delayms=60000" frameborder="0" width="600" height="450" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe>

## 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](http://www.phpwcms.org/)
    - 2004-2006 – Church of the Lutheran Brethren of America & related ministries – [PHP CMS](http://www.phpwcms.org/), PHP Authorize.NET Donation Processing, [osCommerce](https://www.oscommerce.com/)
    - 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
- WordPress History
  - Personal
    - 2006 – [Personal Blog](https://tim.noltefamily.org/)
    - 2006 – [Faith Shaping Podcast](https://www.faithshaping.org/)
    - 2008 – [The Stamp Box](https://www.thestampbox.com/), wife stamping/craft site
    - 2009 – [Adoption Blog](https://adoption.noltefamily.org/)
  - Freelance
    - 2007-2017 – Daybreak Church (website, blog, podcast)
    - 2010 – Starfish Project Haiti
    - 2012 – [ITS Partners](https://www.itsdelivers.com/)
    - 2018 – [Warm Oven Bakehouse](https://warmovenbakehouse.com/) (WooCommerce)

## 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”](http://radar.oreilly.com/2014/06/revisiting-what-is-devops.html) – by [Mike Loukides](http://twitter.com/mikeloukides)  

> 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.

  - 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.
- 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.

## 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](https://carlalexander.ca/) – [Introduction to Automated WordPress Deployments](https://carlalexander.ca/introduction-automated-wordpress-deployments/)
    - [WP Pusher](https://wppusher.com/wordpress-git-course) – Git for WordPress Developers
    - [Tom McFarlin](https://tommcfarlin.com/) – [Ship It or Die](https://tommcfarlin.com/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
    - Source Control
      - [GitHub](https://github.com) – Git
      - [Bitbucket](https://bitbucket.org) – Git & Mercurial
      - [Assembla](https://www.assembla.com/) – Subversion & Git
    - Continuous Integration Platforms
      - [TravisCI](https://travis-ci.org)
      - [CircleCI](https://circleci.com)
      - [CloudBees](https://www.cloudbees.com) – Cloud-based Jenkins
      - [Codeship](http://codeship.com/)
      - [DeployHQ](https://www.deployhq.com/)
    - Reporting
      - [Codecov](https://codecov.io) – Code Coverage Reporting Service
    - Guides
      - OSTraining – [WordPress Deployment with Deploy, Git and Bitbucket](https://www.ostraining.com/blog/wordpress/deploy-git-wordpress/)
  - Plugins
    - Radish Concepts – [WordPress GitHub Plugin Updater](https://github.com/radishconcepts/WordPress-GitHub-Plugin-Updater)
  - Scripts
    - Dean Clatworthy – [GIT to WordPress.org’s SVN Repository](https://github.com/deanc/wordpress-plugin-git-svn)
    - Gary Jones – [WordPress Plugin Directory Deployment Script](https://github.com/GaryJones/wordpress-plugin-svn-deploy)
    - Mike Jolley – [Github to WordPress.org Deployment Script](https://github.com/mikejolley/github-to-wordpress-deploy-script)
    - Ahmad Awais – [WPGitDeploy CLI](https://github.com/ahmadawais/WPGitDeploy-CLI)
  - Build Tools
    - [Composer](https://getcomposer.org/)
      - [PHP Codesniffer](https://packagist.org/packages/squizlabs/php_codesniffer)
      - [WordPress Coding Standards](https://packagist.org/packages/wp-coding-standards/wpcs)
    - [NPM](https://www.npmjs.com/) – [Grunt](https://gruntjs.com/)
      - Cedaro – [grunt-wp-i18n](https://github.com/cedaro/grunt-wp-i18n)
      - Stephen Harris
        - [grunt-wp-readme-to-markdown](https://github.com/stephenharris/wp-readme-to-markdown)
        - [grunt-wp-deploy](https://github.com/stephenharris/grunt-wp-deploy)

## 4. What Does The End State Look Like? A Plugin Example.

[Scheduled Featured Images Plugin](https://github.com/timnolte/scheduled-featured-images/tree/1.0.0-dev) – https://travis-ci.org/ndigitals/scheduled-featured-images/branches

[Daybreak.tv Custom Theme](https://bitbucket.org/daybreakchurch/daybreakv5/branch/dev-5.0.10.1) – 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
- Practises
  - Run Local Local Checks
    - phpunit
    - phpcs
    - phpcbf
  - Test Automation Against Development Branches
    - TravisCI – branches
  - Test Automation Against Final Release
    - TravisCI – master
- Deployments
  - Deploying Plugin & Theme Updates Directly to Servers
    - [CodeShip](http://codeship.com/) – rsync
  - Deploying Plugin & Theme Updates Via A Plugin
    - [WordPress GitHub Plugin Updater](https://github.com/radishconcepts/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

## 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.

The post [WordPress DevOps – WordCamp Grand Rapids 2018](https://www.ndigitals.com/articles/wordpress-devops-wordcamp-grand-rapids-2018/) appeared first on [Nolte Digital Solutions](https://www.ndigitals.com).