❖ Build binaries only once
❖ Separate environment speciﬁcs
❖ Deploy the same way in every environment
❖ Smoke test your deployments
❖ Deploy into a copy of production
❖ Each change should propagate through the pipeline instantly
❖ If any part fails, stop the line
Thoughtworks Continuous Integration Rules
❖ How to Do It
❖ Developers check out code into their private workspaces.
❖ When done, the commit changes to the repository.
❖ The CI server monitors the repository and checks out changes when they occur.
❖ The CI server builds the system and runs unit and integration tests.
❖ The CI server releases deployable artifacts for testing.
❖ The CI server assigns a build label to the version of the code it just built.
❖ The CI server informs the team of the successful build.
❖ If the build or tests fail, the CI server alerts the team.
❖ The team ﬁx the issue at the earliest opportunity.
❖ Continue to continually integrate and test throughout the project.
❖ Team Responsibilities
❖ Check in frequently
❖ Don’t check in broken code
❖ Don’t check in untested code
❖ Don’t check in when the build is broken
❖ Don’t go home after checking in until the system builds
“The long-term value of an enterprise is not
captured by the value of its products and
intellectual property but rather by its ability to
continuously increase the value it provides to
customers-and to create new customers-through
❖ I would recommend this organization as a good place to work.
❖ I have the tools and resources to do my job well.
❖ I am satisﬁed with my job.
❖ My job makes good use of my skills and abilities.
Steve Yegge’s Rant - Summary of Jeff Bezos
❖ 1) All teams will henceforth expose their data and functionality through service interfaces.
❖ 2) Teams must communicate with each other through these interfaces.
❖ 3) There will be no other form of interprocess communication allowed: no direct linking, no direct reads
of another team's data store, no shared-memory model, no back-doors whatsoever. The only
communication allowed is via service interface calls over the network.
❖ 4) It doesn't matter what technology they use. HTTP, Corba, Pubsub, custom protocols -- doesn't matter.
Bezos doesn't care.
❖ 5) All service interfaces, without exception, must be designed from the ground up to be externalizable.
That is to say, the team must plan and design to be able to expose the interface to developers in the
outside world. No exceptions.
❖ 6) Anyone who doesn't do this will be ﬁred.
❖ So when can you say you’re doing continuous delivery? I’d say it’s when you
could ﬂip a switch to go to continuous deployment if you decided that was
the best way to deliver value to your customers.
continuous-deployment/ - Jez Humble
294 Highlights – Kindle Version
❖ It should always be cheaper to create a new environment than to repair an
Humble, Jez; Farley, David (2010-07-27). Continuous Delivery: Reliable
Software Releases through Build, Test, and Deployment Automation (Addison-
Wesley Signature Series (Fowler)) (Kindle Location 1633). Pearson Education.
Let’s Take a Test!!!!11!!
If your conﬁguration management process is sound, you should be able
to answer “yes” to the following questions:
❖ Could you completely re-create your production system, excluding
production data, from scratch from the version -controlled assets that
❖ Could you regress to an earlier, known good state of your application?
❖ Can you be sure that each deployed environment in production, in
staging, and in test is set up in precisely the same way?
If not, then your organization is at risk.
❖ Focus on culture ﬁrst and continually
❖ Find largest outlier for lead time, automat that, repeat
❖ Use tooling the developers love and get out of their way
❖ Don’t use big bang; consider the strangler pattern
❖ Use master not branches