Continuous Delivery
continuousdelivery.com · Personal blog · on HN since 2011
Continuous Delivery is the site tied to the book of the same name, with posts on deployment pipelines, branching and software delivery practices.
What HN saysCommenters cite the book as a strong guide to building deployment systems and point to its case against long-lived feature branches.
20HN people shared it
9linked it in comments
11stories submitted
22story points
3 years agolast shared
2011people per year2026
Most-shared posts
- 1What is Continuous Delivery?6 people · 1 points · first shared 2011 · discussion on HN
- 2The Flaw at the Heart of Bimodal IT3 people · 6 points · first shared 2016 · discussion on HN
- 3On DVCS, continuous integration, and feature branches (2011)2 people · 1 points · first shared 2011 · discussion on HN
- 4Why Software Development Methodologies Suck1 people · 7 points · first shared 2012 · discussion on HN
- 5Jez Humble on Continuous Integration1 people · 2 points · first shared 2017 · discussion on HN
- 6On Antifragility in Systems and Organizational Architecture1 people · 2 points · first shared 2013 · discussion on HN
- 7Visualizations of Continuous Delivery1 people · 1 points · first shared 2014 · discussion on HN
- 8There's no such thing as a "DevOps Team"1 people · 1 points · first shared 2013 · 1 comments on HN
- 9Continuous Delivery vs Continuous Deployment | Continuous Delivery1 people · 1 points · first shared 2011 · discussion on HN
- 10Test automation1 people · first shared 2018
- 1102 CD test strategy low res.jpg1 people · first shared 2015
- 12Make large scale changes incrementally with branch by abstraction1 people · first shared 2014
- 13Continuous delivery1 people · first shared 2011
- 14Patterns1 people · first shared 2018
- 1503 CD automated acceptance test low res.jpg1 people · first shared 2015
What HN people wrote when they linked it
scorchin · 2011-02-13
On the whole you're on the right track, but I'd like to explain a little further about what you're doing and the possible long-term implications.
Feature Branches can become corrosive. Any changes made on the mainline will have to be merged with every feature branch. This is fine with small teams (< 3) but can become frustrating when you have a lot of feature branches or high velocity on your trunk/master. Long-lived branches and refactorings must be merged regularly to prevent merge conflict hell! A lot of this comes down to having disciplined developers.
Why develop on mainline? A lot of this comes from the non-dvcs days. It was expensive to make a branch/tag and they tended to be made when making a release. The beauty of keeping mainline up-to-date (commits once per day) is that you have a regular tracking point to revert changes back from on production. Instead of trying to remember which feature branch was deployed, you have a consistent (linear) timeline.
As you've said this becomes beneficial when you automatically test and deploy your code. A lot of this is to enable best practices for when you decide to setup a CI server like Jenkins to run your unit/integration tests and then deploy automatically (maybe) on a clean run.
Regarding git, I'm going to assume that you've taught your devs enough to follow good habits to keep them sane. Many find that learning git takes a fortnight or so to fully understand. Still, it's always worth throwing a bunch of resources their…
auslegung · 2018-12-02
1. The Problem of Pain by CS Lewis
2. A Philosophy of Software Design https://www.amazon.com/dp/1732102201/ref=cm_sw_r_cp_api_i_EKcbCbBZD412…
3. Haskell from First Principles http://haskellbook.com
4. Les Miserables
5. Continuous Delivery https://continuousdelivery.com
teh_klev · 2018-10-04
Just some friendly advice. When you're referencing stuff elsewhere on the web do it like this:
[1] https://trunkbaseddevelopment.com/
[2] https://continuousdelivery.com/
[3] https://cloudplatformonline.com/2018-state-of-devops.html
This means the links are clickable. Using the code indentation thing you did there causes all sorts of grief for mobile device users.
bergie · 2012-02-07
Some, like the authors of Continuous Delivery (http://continuousdelivery.com/) seem to be arguing against branches, and for a single codebase that is continuously tested, integrated, and releasable.
That said, private branches can make it easier for people to commit early and often, as all changes can easily be squished together so others don't have to see every "embarrassing" iteration.
brown9-2 · 2011-02-12
Continuous Delivery is a great book about how to build such deployment systems and infrastructure (I'm only about a third of the way through it):
http://continuousdelivery.com/2010/02/continuous-delivery/
regularfry · 2018-05-30
https://continuousdelivery.com/implementing/patterns/ and https://continuousdelivery.com/foundations/test-automation/ would be your starting point there.
GFischer · 2015-06-05
The most interesting thing for me was the link to http://continuousdelivery.com/ and the diagrams summarizing some of the concepts in the book (they're CC licensed):
http://continuousdelivery.com/wp-content/uploads/2014/02/01_CD_the_ide…
http://continuousdelivery.com/wp-content/uploads/2014/02/02_CD_test_st…
http://continuousdelivery.com/wp-content/uploads/2014/02/03_CD_automat…
http://continuousdelivery.com/wp-content/uploads/2014/02/04_CD_managin…
fathom108 · 2014-06-05
I used to use feature branches more heavily but these days Branch By Abstraction tends to be my first choice.
http://continuousdelivery.com/2011/05/make-large-scale-changes-increme…
tednaleid · 2011-08-31
This sounds like a feature branch strategy, which I've only used in 1 or 2 person teams, never on projects that big.
There have been some articles recently on the downsides of feature branching that my experience agrees with (http://continuousdelivery.com/2011/07/on-dvcs-continuous-integration-a… I'm curious if the GitHub people have hit the same issues.
So if 2 people are working on the same feature, they're probably working off the same named branch.
Are there any race conditions with merging to master? I'm assuming that only one head is allowed in master, correct? So that before a pull request is accepted and merged into master, the latest master must first be merged into the feature branch and have CI run all tests successfully on it before the pull request can go. Does GitHub stop you from merging into master if someone else just merged into master and you're about to create a new head?
Then you have to merge the latest master into your feature branch, run CI on it again and then merge to master after CI is successful (assuming someone else didn't beat you to merging to master again).
(I've got a lot more experience with Mercurial than Git so my mental model could be a little off)