CI/CD Strategy and Branching Model¶
¶
Section 3.5: CI/CD Strategy and Branching Model (The Kitchen’s Workflow and Approval Process)¶
We’ll use GitHub Flow as our branching strategy and GitHub Actions for CI/CD.
3.5.1 Chosen Branching Strategy: GitHub Flow
mainbranch: Always reflects production-ready code.feature/*: Developers create feature branches frommain.Pull Requests (PRs): Used to review and merge feature branches into
main.
3.5.2 Outline of CI Pipeline Steps (Triggered on PR to
mainor push to feature branches)Checkout code.
Setup environment (Python, dependencies).
Static Testing:
Linters (e.g.,
flake8,black).Static type checking (e.g.,
mypy).IaC Linters (e.g.,
tflintfor Terraform).Security scans (e.g.,
bandit, Checkov for IaC).
Unit Tests:
For backend API logic.
For data processing scripts.
For individual ML pipeline components (if applicable).
(Optional) Build Docker images for services/pipeline steps.
Report status to PR.
3.5.3 Outline of CD Pipeline Steps
Trigger for Staging: Merge to
mainbranch.Build and push production-ready Docker images (FastAPI service, Airflow task containers if custom).
Deploy infrastructure changes via Terraform (
terraform apply) to Staging environment.Deploy application/pipeline updates (e.g., new Airflow DAG version, update App Runner service).
Run Integration Tests against Staging (API tests, pipeline end-to-end runs on sample data).
Run Performance/Load Tests (Locust) against Staging API.
Require Manual Approval for Production.
Trigger for Production: Manual approval after Staging validation (or tag/release on
main).Deploy same artifacts (Docker images, Terraform configs) from Staging to Production environment.
Perform smoke tests.
Implement progressive rollout if applicable (e.g., App Runner’s traffic splitting).
Monitor closely.