8. maintain a single source repository automate the project’s build make your build self-testing tests run locally before commit everyone commits to mainline every day every commit builds on an integration machine keep the build fast build in a clone of the production environment easy for anyone to visit the latest site everyone can see what’s happening automate deployment
- game-- cooperative-- goal-oriented-- group rules- set limits of action- freedom within the rules continuation as a goal- maintainability/fun-factor
at a high level it’s easy to agree-no defects-easy to read-fun to work withhow to actually implement that-consistent style-automated testsrules need to work for the team-not working?-change-replace-removenot intended to punish, intended to empower-put everyone on equal footing-
-some rules can be automated--compilation--unit tests--static analysis--functional automated tests-automating this has upsides--quick--accurate--impartial--saves money by getting the feedback quicker-still only provides information--often quite unambiguous--sometimes, judgment call will need to be made
=== 1 ===one place to get everythingsingle accepted version of the systemput everything in there! database scripts, source code, build tools(story of the box exploding on Cobra)=== 2 ===one command to runsimple to explainno inconsistencies between machines=== 3 ===more than just compilingunit testsfast feedbackokay if they are imperfect=== 4 ===run locally to vet changesminimize impacts on team membersensures safety before changes spread=== 5 ===does my code work with your code?do I need to consider the change you just made?have you made a change I can use?updating often is as important as committing oftenaim to commit at least once a daytry to break tasks down in to smaller chunks=== 6 ===machine set aside somewhere for integrationcatches missing files or other environment specific problemscan be completely automated=== 7 ===less than 2 minutes locallyless than 10 minutes on the serverfeedback is best fastdon’t want to always be buildingmany techniques to speed it up=== 8 ===accurate tests require accurate environmentbut, impersonators to make the commit build fastimpersonators are fast mimics of real systemsvirtualization has a roll=== 9 ===stakeholders are part of the team, need to see itthe “real” feedbackbut, be aware this is an unfinished environment – the sidewalk ends, the elevators go nowhereuseful to explorecheck on feature availabilitycritical for demonstrations, showcases=== 10 ===all about communicationa teammate is in trouble – maybe they need help?red light / green lightweb page with reportsbuild token=== 11 ===lots of deployment going on-- locally on developer’s machines-- in to the test and staging environmentsscripted. can be same as build tool, but there are better specialist tools too.not necessarily in to production, but can be rewarding if it is.
=== 1 ===one place to get everythingsingle accepted version of the systemput everything in there! database scripts, source code, build tools(story of the box exploding on Cobra)=== 2 ===one command to runsimple to explainno inconsistencies between machines=== 3 ===more than just compilingunit testsfast feedbackokay if they are imperfect=== 4 ===run locally to vet changesminimize impacts on team membersensures safety before changes spread=== 5 ===does my code work with your code?do I need to consider the change you just made?have you made a change I can use?updating often is as important as committing oftenaim to commit at least once a daytry to break tasks down in to smaller chunks=== 6 ===machine set aside somewhere for integrationcatches missing files or other environment specific problemscan be completely automated=== 7 ===less than 2 minutes locallyless than 10 minutes on the serverfeedback is best fastdon’t want to always be buildingmany techniques to speed it up=== 8 ===accurate tests require accurate environmentbut, impersonators to make the commit build fastimpersonators are fast mimics of real systemsvirtualization has a roll=== 9 ===stakeholders are part of the team, need to see itthe “real” feedbackbut, be aware this is an unfinished environment – the sidewalk ends, the elevators go nowhereuseful to explorecheck on feature availabilitycritical for demonstrations, showcases=== 10 ===all about communicationa teammate is in trouble – maybe they need help?red light / green lightweb page with reportsbuild token=== 11 ===lots of deployment going on-- locally on developer’s machines-- in to the test and staging environmentsscripted. can be same as build tool, but there are better specialist tools too.not necessarily in to production, but can be rewarding if it is.