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