Multiple environments
Development
• libraries_development.mit.edu
Testing
• libraries_testing.mit.edu
Production
• libraries.mit.edu
This is getting out of hand...
Development
Testing
Production
Developer
Developer
Contractor
FTP
FTP
You take this, you take that, I’ll be over here
Plugins
Home Page News
Pending Posts
Multisearch Widget
Private Debug Log
ThemesParent
Child
News
Music Oral History
150Books
Connick
TwentyTwelve
Developer
Developer
Contractor
WordPress UI for Core / CommunityGitHub for Local / Custom code
WordPress Core Plugins
Community
Custom
Themes
Core
Community
Custom
17 repositories
• Seven plugins• Plugin Canary
• Multisearch widget
• Private debug log
• Analytics
• Home page news
• Pending posts
• Custom child post types
• Ten themes• Parent
• Child
• 8 Site-specific themes
What about non-developers?
Developer
Developer
Contractor
Development
Testing
Production
UX Specialist
Content Owner
Communications
Developer
Developer
Contractor
Development
Testing
Production
UX Specialist
Content Owner
Communications
Developer
Developer
Contractor
Development
Testing
Production
UX Specialist
Content Owner
Communications
Agile?Basecamp?
Enter Waffle.io
• Focused on issues, not code
• Stores (almost) no data itself
• Alternate UI for GitHub
• Free for open source
• Multiple repos summarized on one board
One system, many interfaces
• Developers get to use git
• Non-developers get to not use git
• Everybody has interface choices based on their desire
• Everything is free
Developer
Developer
Contractor
Development
Testing
Production
UX Specialist
Content Owner
Communications
Waffle.io
Development and review process
Developer
Development
• Simple visual inspection
Testing
Production
Stakeholder
Development and review process
Developer
Development
Testing
• Rigorous User Testing
• Cross-browser inspection
• Pull request / code review
Production
Stakeholder
Developer
Development and review process
Developer
Development
Testing
Production
• Post-deploy verification
Stakeholder
Static Code Analysis
Travis CI
• Runs PHP CodeSniffer
• Includes WP Code Standards
• Scans the entire codebase for each PR
• Customizable deploy script
CodeClimate
• Runs PHPCS, ESlint, CSSlint
• Includes WP Code Standards
• Scans only the methods/lines that have changed
• Only performs code analysis
Example implementations
Plugin Template
• https://github.com/MITLibraries/wp-plugin-template
Underscores theme (Travis/PHPCS only)
• https://github.com/automattic/_s• Specifically .travis.yml
Developer
Developer
Contractor
Development
Testing
Production
UX Specialist
Content Owner
Communications
Waffle.io
Ghosted plugins to local repository
• Enables code analysis to try and guess why removed
• Ensures backup if a site needs to be rebuilt
Visual Regression Testing
• Ramparthttps://github.com/mitlibraries/rampart
• Based on BackstopJShttps://github.com/garris/BackstopJS
• Also evaluating Instadiff
Visual Regression Testing
• Automated visual comparisons
• Multiple window sizes
• Selenium-based (only one render engine)
• Tricky to tune
• Manually initiated (so far)
Future (and latest) steps
• Visual regression testing
• Move from Waffle to JIRA• Combines code- and non-code changes
• Not as easy to use, but more expansive
• Better build/deploy workflow from GitHub to servers
• Refactor WordPress code to be testable
• Submit projects to WordPress / SVN / TRAC?
• Pantheon?
Thank You
• GitHub for source control• One repository per (local) project
• Waffle as an alternative UI• …although we’ve moved to JIRA
• Automatic code linting• Travis CI
• CodeClimate
• Continuously examine your tooling choices
• MIT Librarieshttps://libraries.mit.eduhttps://github.com/mitlibraries/
• Matthew [email protected]@morphosis7
Top Related