Continuous Integration (CI) is fundamentally a development practice where developers frequently integrate their code changes into a shared repository. The idea is to prevent the complexity of long integration cycles by working in small increments and ensuring everyone’s code can coexist.
Trunk-Based Development (TBD), as you mentioned, aligns closely with this. In TBD, all developers commit to a single branch (trunk/master/main), often multiple times a day. This helps minimize conflicts and ensures that the codebase remains deployable at any time.
While modern CI setups typically involve an automated build server (often referred to as a “CI server”) that runs tests and performs other checks upon each integration, it’s important to note that CI, at its core, is a human process. The automation adds value by giving fast feedback and enabling teams to detect integration issues early, but it’s not strictly necessary for CI to happen.
CI servers are just tools that make CI easier to implement and maintain, automating repetitive tasks like testing and building. The essence remains in developers regularly committing, pushing, and merging their code to maintain a healthy codebase.
Here are some interesting links on the subject:
- https://infrastructure-as-code.com/book/2021/01/02/pull-requests.html
- https://jhall.io/posts/replace-pull-requests
- Pull Requests are dragging you down | Things I don’t like | Software Development | CI/CD
- https://jhall.io/posts/cd-without-ci/#dynamic-review-environments
- https://www.jamesshore.com/v2/blog/2006/continuous-integration-on-a-dollar-a-day
- Real Programmers Commit To Master – Jakob Ehn
- Feature Branches & Toggles in a Post-GitHub World • Sam Newman • GOTO 2017
- Trunk Based Development
- https://trunkbaseddevelopment.com
Leave a Reply