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
main
branch: 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
main
or 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.,
tflint
for 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
main
branch.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.