Chat-Powered Continuous Delivery Ben Lavender
Hi, I’m @bhuga I’m @bhuga everywhere I work on workflow I work at GitHub
This talk is: • Selling you on GitHub’s workflow • Tools to build your own workflow
GitHub Flow
The Rules • Anything on master is deployable. And will be. Right now. • Work o ff of short-lived named branches • Open a pull request for help, feedback, and signo ff • Once you merge, deploy immediately.
SCRUM or whatever Do work on a branch Automated tests Decide what's worth doing Manual tests feedback feedback Merge to master feedback Deploy to production auto-deploy
Story Time A Fix at GitHub Names have been changed to protect the innocent
Step 1: Decide what to do Step 1: Decide what to do
Step 2: Do it
Step 2: Do it git push
ASYNCHRONOUSLY • Not at the same time • At your leisure • When it’s not interrupting people
GitHub Flow
GitHub Flow is a version of Continuous Deployment
Professor Wikipedia says: • Techniques such as automated testing, continuous integration and continuous deployment allow software to be developed to a high standard and easily packaged and deployed to test environments, resulting in the ability to rapidly, reliably and repeatedly push out enhancements and bug fixes to customers at low risk and with minimal manual overhead.
…boring Continuous deployment is about developing and deploying in short, rapid increments.
Benefits for Developers: • A simple, easy-to-learn workflow • No release process • Frequent feedback • Low-risk, low-stress ships • Merge conflicts become trivial • Ownership, agency, quick wins, and responsibility
Continuously deploy everything
Story Time How to get from where you are to continuous deployment
Practices Part 1
Make TINY changes
Help your application understand development
• Feature flags
Use feature flags to make ships smaller and safer
Tools Part 2
Chat Chat. chat, chat, chat, chat, chat, chat. With a robot.
Shared Console • /deploy • /ci build • /merge • /config
Exceptions
Graphs
Hackable toolchain
CD needs to be automated • Builds on every commit • Results of signo ff (feedback) • Deployment • Setup for manual tests • Communication
Create pull Implement on Communicate Respond to build Run build request (request new branch Build status issues feedback) Communicate Communicate Respond to ready for Review signoff review review feedback Test in integrate master branch deploy Fix issues integrate master production Re-deploy ! Merge branch Deploy master branch
Create pull Implement on Communicate Respond to build Run build request (request new branch Build status issues feedback) Communicate Communicate Respond to ready for Review signoff review review feedback Test in integrate master branch deploy Fix issues integrate master production Re-deploy ! Merge branch Deploy master branch
WebHooks VCS server Webhook HTTP POST (GitHub) Receiver
Git push VCS server Webhook Commit Info (GitHub) Receiver
Git push VCS server Webhook HTTP POST (GitHub) Receiver Issue Assigned Tests Failed Repository Pull Request Starred Opened
GitHub Events • There’s a ton
GitHub Events • There’s a ton
GitHub Events • There’s a ton
Example: Announce Issue Creation
Announce Issue Creation Webhook Developer GitHub Receiver Create Issue Issue Event
Example: Build Every Commit
Build Every Commit Developer GitHub CI Server Commit Push Event Notifications Build Starts Update Status - Pending Update Status - Success
Example: Deployment
Deployment Developer GitHub Deploy Server Create Deployment Deployment Event Deploy Starts Notifications Deployment Status - Started Deployment Status - Finished
Example: Signo ff
Signo ff Deployment Developer GitHub QA Team Server Create pull request Notification Testing Notifications Comment ! Issue Comment Webhook Deploy Close Comment
198 API Endpoints
21 WebHook Events
Recommend
More recommend