Agile Austin Dev SIG June 2013 - Continuous Integration (CI)
Special thanks to: Our hosts, BancVue, for their hospitality and meeting facilities. And to Agile Austin for providing lunch. * For more SIGs and info, go to agileaustin.org
Agile Austin Developers SIG What: Topics relevant to Agile developers When: Third Thursday each month @ noon Where: BancVue Office Contact: devsig@agileaustin.org Google Group: agileaustin-dev
Recap from Last Meeting: TDD/BDD Highlights Chris and Eric talked about TDD/BDD TDD (Red-Green-Refactor cycle) described as design focused with testing as a side effect TDD Can be done at different levels and with BDD variant can aid cross-functional collaboration Survey from attendees indicated most not currently using TDD ** Any feedback or thoughts from group before we start the next topic?
Continuous Integration (CI)
What is Continous Integration? Continuous integration is the frequent merging of work with a main branch to simplify the merging process and test updates when integrated. The concept usually involves a unit testing framework and a process to trigger builds and/or tests.
Continuous Integration source: https://www.simple-talk.com/blogs/2012/04/12/what-is-database-continuous-integration/
Related Concepts Continuous Delivery - A software development discipline where you build software in such a way that the software can be released to production at any time. The key test is that a business sponsor could request that the current development version of the software can be deployed into production at a moment's notice - and nobody would bat an eyelid, let alone panic. Continuous Deployment - Every change goes through a pipeline and automatically gets put into production, resulting in many production deployments every day. Continuous Delivery just means that you are able to do frequent deployments but may choose not to do it, usually due to businesses preferring a slower rate of deployment. In order to do Continuous Deployment you must be doing Continuous Delivery.
Continuous Integration, Delivery and Deployment source: http://blog.assembla.com/assemblablog/tabid/12618/bid/92411/continuous-delivery-vs-continuous- Deployment-vs-Continuous-Integration-Wait-huh.aspx
Why CI? Simplify Merges Rapid Feedback Identify problems early Make bugs easier to find Reduce bug accumulation Visibility (team and stakeholders) Can be Automated minimize manual intervention plug-ins (i.e. for static code analysis) Enable Continuous Delivery & Deployment
CI Principles Maintain a code repository Automate the build Make the build self-testing Everyone commits to the baseline every day Every commit (to baseline) should be built Keep the build fast Test in a clone of the production environment Make it easy to get the latest deliverables Everyone can see the results of the latest build Automate deployment from http://en.wikipedia.org/wiki/continuous_integration
CI Concerns/Variables Branching Strategies and Version Control develop on trunk and branch for releases develop on branches and release from trunk Check-in Policies many times per day once per day no restriction Build Tools Testing Framework Reporting/Visibility streaming build metrics behind receptionist's desk
CI Notes from Past SIGs Build/CI Tools Jenkins Bamboo Cruise Control Code Analysis Sonar - useful for static code analysis Ndepend -.Net static analysis and code review tool Structure101 - Commercial product for resolving dependency problems and re-architecting Continuous Deployment Difficult for device driver development Nobody was doing CD because it was difficult and often required customization
Netflix Is this really a good idea? Who uses CI/CD? http://techblog.netflix.com/ - tech blog covering cloud, CI and CD topics among other things LinkedIn http://www.wired.com/business/2013/04/linkedinsoftware-revolution/ - article covering LinkedIn's transition to CD Etsy Facebook You?
How are you doing CI? (discussion)
Keys to Remember Automate your build process. Automate tests. (Build test suite over time.) Execute builds once a day minimum. Optimally, build on each commit. Keep build times low. Target < 10 min. Make build results/metrics visible. (Timmy broke the build!) CI/CD servers can and usually do require significant horsepower - $. Start small and grow to meet your needs.
July Dev Sig
Recent Dev SIGs Agile Tools (6 votes) - March Tech Debt (4 votes) - April TDD/BDD (3 votes) - May CI (3 votes) - June
Dev Sig Backlog - July Topic? 4 votes How to interface with external groups and stay agile. Dependencies on those groups. 3 votes Refactoring 2 votes 1 vote... Emerging Languages Mobile Development Processes/Practices Show and Tell - How do you do Agile?
Special thanks to: Our hosts, BancVue, for their hospitality and meeting facilities. And to Agile Austin for providing lunch. * For more SIGs and info, go to agileaustin.org