In this presentation Andrew De Ponte covers a few of the various types of workflows he has experienced through out the years as a developer. He, also discusses what his team currently uses and why.
• @cyphactor on GitHub & Twitter • Lead Software Engineer @ RealPractice • Dev’d professionally in C/C++, Python, Ruby, JS, PHP, etc. • Rails/Ruby is my life now! Tuesday, February 28, 12
makes sense.” ~ whichcharlie.com? • The “git-flow like” workflow • “You can’t process me with a normal brain” ~ whichcharlie.com? • The “GitHub like” workflow • Bi-Winning Tuesday, February 28, 12
• Modeled after older SVN based workflows • Everyone pushes to central repository at will • Why it fails? • Does not scale, hard to have confidence in code base Tuesday, February 28, 12
Changes in Topic Branch 2. Run Full Test Suite 3. Push Topic Branch to Fork 4. Make Pull Request 5. Reviews Pull Request 6. Run Full Test Suite 7. Merge Topic into RC Branch 8. Tag & Push RC Tuesday, February 28, 12
each week) • RC (Release Candidate) Branches & Tags • RF (Release Final) Branches & Tags • When RC Branch is ready tag it as RC release and push to QA. • If passes QA testing then push to Staging. If passes Staging tests then tag as RF and push to Production. Tuesday, February 28, 12
• Oversees general repository state and mucho amazing Git branch management • Tags and Deploys RC branches to QA, Staging • Tags and Deploys RF branches to Production • Make sure shit doesn’t hit the fan & help integrators with state of tree and branches in relation to RCs and RFs. Tuesday, February 28, 12
Changes in Topic Branch 2. Run Full Test Suite 3. Push Topic Branch to Fork 4. Make Pull Request 5. Reviews Pull Request 6. Run Full Test Suite 7. Merge Topic into RC Branch 8. Tag & Push RC Tuesday, February 28, 12
Only ONE Role (Dev) Push Topic Branches to Central Repo Multi-branch CI Server Runs Tests Peer Review before Merge Only ONE Merge Branch (master) Tuesday, February 28, 12
Progress) 2. Checkout “master” branch 3. Pull the “master” 4. Create Topic Branch task based on “master” 5. Make Changes 6. Push Topic to Central Repo 7. Repeat Steps 5 & 6 until complete 8. Make Pull Request (Mark Peer Review) 9. Wait for Peer Review Results 10. Merge into “master” & Push (Move to Stage Deploy) Central Repository GitHub Redmine Tuesday, February 28, 12
2. Checkout the Branch you are reviewing 3. Verify Branch test state in Octopusci 4. If Fail (mark :thumbsdown:) 5. Run Tests & Manually Test changes/feature 6. If Fail Provide Feedback (mark :thumbsdown:) 7. Code Review, converse if needed 8. If Fail Provide Feedback (mark: :thumbsdown:) 9. If looks good (mark :thumbsup:) GitHub Central Repository Tuesday, February 28, 12
confidence in ability to rapidly deploy • Insane amounts of cross-training going on • Forced us to make our test suite maintainable and efficient • Allows us to respond to business needs immediately • Marketing no longer needs a CMS to make language changes Tuesday, February 28, 12
2, Cucumber, Guard, Capybara • Octopusci • One Server Setup Running Octopusci • Three Servers setup to Run Octopusci Remote Jobs Tuesday, February 28, 12