CI-CD Standards
Document: 28-ci-cd-standards.md
Version: 1.0.0
Purpose
This document defines the Continuous Integration (CI) and Continuous Delivery (CD) standards used across all Rundown projects.
CI/CD automates repetitive engineering tasks such as code validation, testing, building, and deployment while maintaining human oversight for significant release decisions.
The objective is to improve reliability, consistency, and developer productivity without sacrificing engineering judgment.
CI/CD Philosophy
Automation should eliminate repetitive work.
Human engineers should remain responsible for decisions that require context, business understanding, or architectural judgment.
CI/CD exists to increase confidence—not replace responsibility.
Responsibilities
The CI/CD pipeline owns:
-
Code validation
-
Dependency installation
-
Linting
-
Type checking
-
Automated testing
-
Application builds
-
Docker image creation
-
Deployment automation
-
Release artifacts
Non-Responsibilities
The CI/CD pipeline should not own:
-
Architecture decisions
-
Code reviews
-
Business approvals
-
Product releases
-
Infrastructure design
Automation supports engineering; it does not replace it.
Standard Platform
Rundown standardizes on:
GitHub Actions
Reasons include:
-
Native GitHub integration
-
Version-controlled workflows
-
Broad ecosystem
-
Excellent Docker support
-
Strong community adoption
Continuous Integration (CI)
Every Pull Request should automatically execute:
-
Dependency installation
-
Type checking
-
ESLint
-
Unit tests (where applicable)
-
Production build validation
No Pull Request should be merged if mandatory CI checks fail.
Continuous Delivery (CD)
After code is merged into main:
-
Build production artifacts.
-
Build Docker images.
-
Deploy to the staging environment.
-
Execute post-deployment validation.
Production deployment should require explicit approval.
Pipeline Stages
Standard pipeline:
Pull Request
↓
CI Validation
↓
Merge to Main
↓
Build
↓
Docker Image
↓
Deploy to Staging
↓
Validation
↓
Production Approval
↓
Deploy to Production
Every stage should complete successfully before progressing to the next.
Quality Gates
Quality gates should prevent deployments when:
-
Linting fails.
-
Type checking fails.
-
Tests fail.
-
Build fails.
-
Required approvals are missing.
Quality gates protect production from avoidable issues.
Build Artifacts
Build outputs should be:
-
Reproducible
-
Versioned
-
Immutable
The same artifact validated in staging should be promoted to production whenever practical.
Secrets Management
CI/CD secrets should:
-
Be stored securely.
-
Never appear in repository history.
-
Remain environment-specific.
-
Follow least-privilege access.
Production secrets should only be available to production workflows.
Notifications
Pipeline notifications should report:
-
Successful builds
-
Failed builds
-
Deployment status
-
Production releases
Notifications should provide actionable information without creating unnecessary noise.
Failure Handling
If the pipeline fails:
-
Stop further execution.
-
Report the failure.
-
Investigate the cause.
-
Correct the issue.
-
Restart the pipeline.
Manual workarounds should be avoided unless formally documented.
Workflow Files
CI/CD workflows should remain:
-
Version controlled
-
Documented
-
Modular
-
Reviewable
Workflow definitions should evolve alongside the application.
Engineering Decision
Human-Guided Automation
Status: Accepted
Decision
Rundown automates repetitive engineering tasks while retaining human approval for production releases.
Reasoning
This approach:
-
Reduces repetitive work.
-
Improves reliability.
-
Preserves engineering oversight.
-
Prevents accidental production deployments.
-
Keeps automation understandable and maintainable.
CI/CD Checklist
Before enabling a deployment pipeline, verify:
-
GitHub Actions configured.
-
CI validation complete.
-
Docker builds reproducible.
-
Secrets securely stored.
-
Staging deployment automated.
-
Production approval required.
-
Notifications configured.
Summary
CI/CD provides the automation layer for Rundown's deployment workflow.
By automating repetitive validation and deployment tasks while preserving human decision-making for critical releases, Rundown achieves reliable software delivery without introducing unnecessary operational complexity.
Related Documents
Related ADRs
- ADR-003: Documentation Information Architecture