https://docs.google.com/presentation/d/e/2PACX-1vQTgpIA-rFcs0boLTiYsIQSqzzQM9onrf4S3nF6Lb_2nB_Goa6qu-rUsO-aWbMjrfGU8D6mECj5_xad/pub?start=false&loop=false&delayms=60000

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
  • WordPress History

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.

    • 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

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
  • 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
    • Deploying Plugin & Theme Updates Via A Plugin
    • 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.