• CI/CD

 

Although continuous integration and continuous delivery (CI/CD) need automation, manual steps can still be valid. So, conscious decisions on what to automate are important.

Version control systems used
Without proper version control, CI/CD is not reaching its potential. CI starts with software changes, which need to be verified automatically. When version control is lacking, it is hard to track which changes have been made and what to undo when problems arise.

Automated process
For the purpose of short feedback loops, the development process needs to be automated. This ensures that whenever a change is made, all the necessary steps to verify and validate the product until a given stage are performed. Splitting the process into understandable steps and checks, helps the team to understand what the current status of the software is.

Focus on passing builds
Since the focus of Agile software development is to deliver working software, the focus of the team should be to keep the CI/CD process in a passing state (green builds). Whenever a build, step or check leads to a fail, immediate corrective actions are taken.

Levels and check points for CI/CD

The levels for CI/CD are typified as follows:

  • Forming: Builds are automated
  • Norming: Installs are automated
  • Performing: Promotions to other environments are automated

Please find the checkpoints below.

Forming
1. A tool for continuous integration is in place (e.g. Jenkins or Bamboo)
2. Code check-in leads to an automated build
3. Each build is verified by running all the unit tests
4. When the build fails, relevant people are notified automatically which leads to fixing the build
Norming
1. Integration tool installs and sets up the application
2. Integration tool executes automated business logic tests
3. Automated tests are grouped into feature sets
4. Insufficient test coverage results in a red build
Performing
1. Decisions on when to push to which environment are automated
2. Deployment to all environments is automated (including prod)
3. Non-functional tests are executed automatically
4. Rollback to previous versions is automated