CI/CD

Continuous integration and continuous delivery: A team approach to develop software quickly, efficiently and securely

2024-01-01 Gabi Moreno

Continuous integration and continuous delivery is a team approach to develop software quickly, efficiently and securely.

The first part of continuous integration is a process that automates the integration of new code pieces into an existing repository. Understanding integration as compilation and test execution. This means that every X hours this tool downloads the code, compiles it, runs tests and generates reports.

Continuous delivery is also a way to generate short release cycles and ensure your code can be released at any time.

Key Components

  • Compilation
  • Tests
  • Release generation

Benefits

  • Team efficiency and product quality
  • Early error detection
  • Fast feedback
  • Ensures product quality through various tests (Unit, Integration, Functional, Regression, Accessibility and Performance)
  • Code Push
  • Automation of repetitive tasks
  • Cut-off
  • Version bumping
  • Merge backs
  • Tags
  • Translations
  • Consistent and repetitive builds
  • No errors due to local configurations
  • Tests on different devices
  • Control of time-to-market
  • Improved security
  • Collaborative work
  • Facilitates Rollback
  • Makes the process scalable

Release Process

Pre-release Checklist

  • Features are properly tested
  • Regression test plan is up-to-date
  • Test parties are scheduled
  • Ensure Fix Version is accurate for the tasks
  • Grooming and fixing bugs

Release Steps

  • Preparing the release
  • Executing regression tests
  • Submitting to Apple & Google
  • Monitoring performance and Crash-Free-Rate

Patch Fixes

  • Everyone knows in which phase we are
  • Everyone knows when the train leaves
  • Everyone is involved
  • We cannot delay train, but we can reduce our baggage
  • Teams initiatives are decoupled from release
  • Integrate undone / turned-off behind Feature Flags
  • Reduce release cycle to 14 days