save progress
This commit is contained in:
329
docs/cicd/README.md
Normal file
329
docs/cicd/README.md
Normal file
@@ -0,0 +1,329 @@
|
||||
# CI/CD Infrastructure Overview
|
||||
|
||||
> **Sprint:** CI/CD Enhancement - Documentation
|
||||
> **Last Updated:** 2025-12-28
|
||||
> **Workflow Count:** 100 workflows
|
||||
|
||||
## Quick Links
|
||||
|
||||
- [Workflow Triggers & Dependencies](./workflow-triggers.md)
|
||||
- [Release Pipelines](./release-pipelines.md)
|
||||
- [Security Scanning](./security-scanning.md)
|
||||
- [Test Strategy](./test-strategy.md)
|
||||
- [Troubleshooting Guide](../.gitea/docs/troubleshooting.md)
|
||||
|
||||
---
|
||||
|
||||
## Architecture Overview
|
||||
|
||||
The StellaOps CI/CD infrastructure uses **Gitea Actions** (GitHub Actions compatible) with a sophisticated multi-tier triggering strategy designed for:
|
||||
|
||||
- **Determinism & Reproducibility** - Identical builds across runs
|
||||
- **Offline-First Operation** - Air-gap compatible pipelines
|
||||
- **Supply Chain Security** - SLSA Level 2-3 compliance
|
||||
- **Developer Velocity** - Fast PR feedback with comprehensive nightly testing
|
||||
|
||||
### Pipeline Tiers
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────────┐
|
||||
│ TRIGGER HIERARCHY │
|
||||
├─────────────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ TIER 1: PR GATING (Every Pull Request) │
|
||||
│ ├── test-matrix.yml (Unit, Architecture, Contract, Integration, │
|
||||
│ │ Security, Golden) │
|
||||
│ ├── build-test-deploy.yml (Build verification) │
|
||||
│ ├── policy-lint.yml (Policy file validation) │
|
||||
│ ├── sast-scan.yml (Static security analysis) │
|
||||
│ └── docs.yml (Documentation validation) │
|
||||
│ │
|
||||
│ TIER 2: MAIN BRANCH (Post-Merge) │
|
||||
│ ├── All Tier 1 workflows │
|
||||
│ ├── build-test-deploy.yml → Deploy stage (staging environment) │
|
||||
│ ├── integration-tests-gate.yml → Extended coverage │
|
||||
│ └── coverage-report (Full coverage analysis) │
|
||||
│ │
|
||||
│ TIER 3: SCHEDULED (Nightly/Weekly) │
|
||||
│ ├── nightly-regression.yml (2:00 AM UTC daily) │
|
||||
│ ├── test-matrix.yml → Extended tests (5:00 AM UTC daily) │
|
||||
│ ├── dependency-security-scan.yml (2:00 AM UTC Sunday) │
|
||||
│ ├── renovate.yml (3:00 AM & 3:00 PM UTC daily) │
|
||||
│ ├── sast-scan.yml (3:30 AM UTC Monday) │
|
||||
│ └── migration-test.yml (4:30 AM UTC daily) │
|
||||
│ │
|
||||
│ TIER 4: RELEASE (Tag-Triggered) │
|
||||
│ ├── release-suite.yml (suite-YYYY.MM tags) │
|
||||
│ ├── release.yml (v* tags) │
|
||||
│ └── module-publish.yml (module-*-v* tags) │
|
||||
│ │
|
||||
│ TIER 5: MANUAL (On-Demand) │
|
||||
│ ├── cli-build.yml, scanner-determinism.yml │
|
||||
│ ├── rollback.yml, promote.yml │
|
||||
│ └── 20+ specialized test/debug workflows │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Workflow Categories
|
||||
|
||||
### 1. Core Build & Test (12 workflows)
|
||||
|
||||
| Workflow | Purpose | Triggers |
|
||||
|----------|---------|----------|
|
||||
| `build-test-deploy.yml` | Main build pipeline | PR, main push, daily, manual |
|
||||
| `test-matrix.yml` | Unified test execution | PR, main push, daily, manual |
|
||||
| `integration-tests-gate.yml` | Extended integration testing | PR, main push, manual |
|
||||
| `nightly-regression.yml` | Comprehensive nightly suite | Daily 2 AM UTC |
|
||||
| `migration-test.yml` | Database migration validation | PR (migrations), daily |
|
||||
|
||||
### 2. Release Automation (8 workflows)
|
||||
|
||||
| Workflow | Purpose | Triggers |
|
||||
|----------|---------|----------|
|
||||
| `release-suite.yml` | Ubuntu-style suite releases | `suite-*` tags, manual |
|
||||
| `release.yml` | Version bundle releases | `v*` tags, manual |
|
||||
| `module-publish.yml` | Per-module publishing | `module-*-v*` tags, manual |
|
||||
| `cli-build.yml` | Multi-platform CLI builds | Manual only |
|
||||
| `promote.yml` | Environment promotion | Manual only |
|
||||
| `rollback.yml` | Emergency rollback | Manual only |
|
||||
|
||||
### 3. Security Scanning (6 workflows)
|
||||
|
||||
| Workflow | Purpose | Triggers |
|
||||
|----------|---------|----------|
|
||||
| `sast-scan.yml` | Static code analysis | PR, main push, weekly |
|
||||
| `secrets-scan.yml` | Credential detection | PR, main push |
|
||||
| `container-scan.yml` | Image vulnerability scanning | Dockerfile changes, daily |
|
||||
| `dependency-security-scan.yml` | NuGet/npm vulnerability audit | Weekly, PR (deps) |
|
||||
| `dependency-license-gate.yml` | License compliance | PR (deps) |
|
||||
|
||||
### 4. Quality Assurance (15 workflows)
|
||||
|
||||
| Workflow | Purpose | Triggers |
|
||||
|----------|---------|----------|
|
||||
| `policy-lint.yml` | Policy file validation | PR, main push |
|
||||
| `docs.yml` | Documentation linting | docs/** changes |
|
||||
| `scanner-determinism.yml` | Output reproducibility | Manual only |
|
||||
| `determinism-gate.yml` | Build determinism | Manual only |
|
||||
| `cross-platform-determinism.yml` | Multi-OS verification | Manual only |
|
||||
|
||||
### 5. Module-Specific (30+ workflows)
|
||||
|
||||
Specialized workflows for individual modules (Scanner, Concelier, Authority, etc.)
|
||||
|
||||
---
|
||||
|
||||
## Trigger Quick Reference
|
||||
|
||||
### Branch Patterns
|
||||
|
||||
| Pattern | Example | Workflows Triggered |
|
||||
|---------|---------|---------------------|
|
||||
| Push to `main` | Direct commit or merge | All Tier 1 + Tier 2 |
|
||||
| Push to `develop` | Feature integration | Selected gating workflows |
|
||||
| Pull Request | Any PR to main/develop | All Tier 1 (gating) |
|
||||
| Push to `feature/*` | Feature branches | None (PR required) |
|
||||
| Push to `release/*` | Release prep branches | Selected validation |
|
||||
|
||||
### Tag Patterns
|
||||
|
||||
| Pattern | Example | Workflow |
|
||||
|---------|---------|----------|
|
||||
| `v*` | `v2025.12.1` | `release.yml` |
|
||||
| `suite-*` | `suite-2026.04` | `release-suite.yml` |
|
||||
| `module-*-v*` | `module-authority-v1.2.3` | `module-publish.yml` |
|
||||
|
||||
### Schedule Summary
|
||||
|
||||
| Time (UTC) | Frequency | Workflow |
|
||||
|------------|-----------|----------|
|
||||
| 2:00 AM | Daily | `nightly-regression.yml` |
|
||||
| 2:00 AM | Sunday | `dependency-security-scan.yml` |
|
||||
| 3:00 AM | Daily | `renovate.yml` |
|
||||
| 3:30 AM | Monday | `sast-scan.yml` |
|
||||
| 4:30 AM | Daily | `migration-test.yml` |
|
||||
| 5:00 AM | Daily | `build-test-deploy.yml`, `test-matrix.yml` |
|
||||
| 3:00 PM | Daily | `renovate.yml` |
|
||||
|
||||
---
|
||||
|
||||
## Environment Flow
|
||||
|
||||
```
|
||||
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
|
||||
│ PR │───▶│ Staging │───▶│ Stable │───▶│ LTS │
|
||||
│ (Preview)│ │ (Edge) │ │ (Tested) │ │(Long-Term)│
|
||||
└──────────┘ └──────────┘ └──────────┘ └──────────┘
|
||||
│ │ │ │
|
||||
│ │ │ │
|
||||
▼ ▼ ▼ ▼
|
||||
PR tests Auto-deploy promote.yml promote.yml
|
||||
(gating) on main merge (manual) (manual)
|
||||
```
|
||||
|
||||
### Environment Matrix
|
||||
|
||||
| Environment | Branch/Tag | Auto-Deploy | Rollback |
|
||||
|-------------|------------|-------------|----------|
|
||||
| Preview | PR | Yes (ephemeral) | N/A |
|
||||
| Staging (Edge) | `main` | Yes | `rollback.yml` |
|
||||
| Stable | `v*` tags | Manual | `rollback.yml` |
|
||||
| LTS | `suite-*` tags | Manual | `rollback.yml` |
|
||||
|
||||
---
|
||||
|
||||
## Key Features
|
||||
|
||||
### 1. PR-Gating Tests
|
||||
|
||||
Required tests that must pass before merge:
|
||||
|
||||
- **Unit Tests** - Fast, isolated tests
|
||||
- **Architecture Tests** - Dependency rule enforcement
|
||||
- **Contract Tests** - API compatibility
|
||||
- **Integration Tests** - PostgreSQL integration
|
||||
- **Security Tests** - Security-focused assertions
|
||||
- **Golden Tests** - Corpus-based validation
|
||||
|
||||
### 2. Determinism Verification
|
||||
|
||||
All builds produce identical outputs:
|
||||
|
||||
- Binary checksums compared across runs
|
||||
- UTC timezone enforcement (`TZ: UTC`)
|
||||
- Stable JSON serialization
|
||||
- Reproducible SBOM generation
|
||||
|
||||
### 3. Supply Chain Security
|
||||
|
||||
- **SBOM Generation** - Syft for CycloneDX/SPDX
|
||||
- **Artifact Signing** - Cosign/Sigstore integration
|
||||
- **Provenance** - in-toto/DSSE attestations
|
||||
- **Dependency Scanning** - Automated vulnerability detection
|
||||
|
||||
### 4. Rollback Automation
|
||||
|
||||
Emergency rollback via `rollback.yml`:
|
||||
- Target: < 5 minute SLA
|
||||
- Helm-based deployment rollback
|
||||
- Health check verification
|
||||
- Notification integration
|
||||
|
||||
---
|
||||
|
||||
## Directory Structure
|
||||
|
||||
```
|
||||
.gitea/
|
||||
├── workflows/ # 100 workflow files
|
||||
│ ├── build-test-deploy.yml
|
||||
│ ├── test-matrix.yml
|
||||
│ ├── release-suite.yml
|
||||
│ └── ...
|
||||
├── scripts/ # CI/CD scripts
|
||||
│ ├── build/ # Build orchestration
|
||||
│ ├── test/ # Test execution
|
||||
│ ├── release/ # Release automation
|
||||
│ ├── sign/ # Signing operations
|
||||
│ └── validate/ # Validation scripts
|
||||
└── docs/ # CI-specific docs
|
||||
├── architecture.md
|
||||
├── scripts.md
|
||||
└── troubleshooting.md
|
||||
|
||||
devops/
|
||||
├── scripts/
|
||||
│ └── lib/ # Shared bash libraries
|
||||
│ ├── logging.sh
|
||||
│ ├── exit-codes.sh
|
||||
│ ├── git-utils.sh
|
||||
│ ├── path-utils.sh
|
||||
│ └── hash-utils.sh
|
||||
├── compose/ # Docker Compose profiles
|
||||
├── helm/ # Helm charts
|
||||
└── docker/ # Dockerfiles
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Getting Started
|
||||
|
||||
### Running Workflows Locally
|
||||
|
||||
```bash
|
||||
# Run test matrix locally
|
||||
./devops/scripts/test-local.sh
|
||||
|
||||
# Validate compose files
|
||||
./devops/scripts/validate-compose.sh
|
||||
|
||||
# Run a specific test category
|
||||
./.gitea/scripts/test/run-test-category.sh Unit
|
||||
```
|
||||
|
||||
### Triggering Manual Workflows
|
||||
|
||||
```bash
|
||||
# Via Gitea UI: Actions → Workflow → Run workflow
|
||||
|
||||
# Or via API:
|
||||
curl -X POST \
|
||||
-H "Authorization: token $GITEA_TOKEN" \
|
||||
"$GITEA_URL/api/v1/repos/owner/repo/actions/workflows/rollback.yml/dispatches" \
|
||||
-d '{"ref":"main","inputs":{"environment":"staging","version":"v2025.12.0"}}'
|
||||
```
|
||||
|
||||
### Creating a Release
|
||||
|
||||
1. **Module Release:**
|
||||
```bash
|
||||
git tag module-authority-v1.2.3
|
||||
git push origin module-authority-v1.2.3
|
||||
```
|
||||
|
||||
2. **Suite Release:**
|
||||
```bash
|
||||
git tag suite-2026.04
|
||||
git push origin suite-2026.04
|
||||
```
|
||||
|
||||
3. **Bundle Release:**
|
||||
```bash
|
||||
git tag v2025.12.1
|
||||
git push origin v2025.12.1
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Related Documentation
|
||||
|
||||
- [Workflow Triggers Deep Dive](./workflow-triggers.md)
|
||||
- [Release Pipeline Details](./release-pipelines.md)
|
||||
- [Security Scanning Guide](./security-scanning.md)
|
||||
- [Test Strategy](./test-strategy.md)
|
||||
- [CI Quality Gates](../testing/ci-quality-gates.md)
|
||||
- [Troubleshooting](../.gitea/docs/troubleshooting.md)
|
||||
- [Script Reference](../.gitea/docs/scripts.md)
|
||||
|
||||
---
|
||||
|
||||
## Metrics & Monitoring
|
||||
|
||||
### Key Metrics Tracked
|
||||
|
||||
| Metric | Target | Measurement |
|
||||
|--------|--------|-------------|
|
||||
| PR Build Time | < 15 min | Workflow duration |
|
||||
| Main Build Time | < 20 min | Workflow duration |
|
||||
| Test Flakiness | < 1% | Flaky test detection |
|
||||
| Security Scan Coverage | 100% | SAST/DAST coverage |
|
||||
| Rollback SLA | < 5 min | Rollback workflow duration |
|
||||
|
||||
### Dashboard Links
|
||||
|
||||
- [Workflow Runs](../../.gitea/workflows/) (Gitea Actions UI)
|
||||
- [Test Results](./test-results/) (TRX/JUnit artifacts)
|
||||
- [Coverage Reports](./coverage/) (Generated nightly)
|
||||
Reference in New Issue
Block a user