--- name: CI/CD Validation & Merge Workflow description: Pre-push validation checklist (cargo fmt, clippy with zero warnings, feature flag testing, test suite), CI monitoring, merge process, and release quality gates. Use when preparing to push code, validating changes before PR, running CI checks, merging PRs, or preparing releases. --- # CI/CD Validation & Merge Workflow This skill provides guidance on validation workflows, CI/CD processes, and merge procedures for cqlite. ## When to Use This Skill - Running pre-push validation - Preparing pull requests - Monitoring CI pipeline - Merging changes - Preparing releases - Troubleshooting CI failures ## Pre-Push Validation Checklist See [validation-checklist.md](validation-checklist.md) for complete steps. ### Quick Validation ```bash # Run all pre-push checks ./scripts/ci/validate-cleanup.sh ``` ### Manual Step-by-Step #### 1. Format Code ```bash cargo fmt --all git add -u git commit -m "style: cargo fmt" || echo "No formatting needed" ``` #### 2. Clippy (Zero Warnings) ```bash # MUST pass with -D warnings (warnings = errors) cargo clippy --package cqlite-core --lib --all-features -- -D warnings ``` **Requirements:** - Zero warnings - Fix all issues before proceeding - No `#[allow(clippy::...)]` without justification #### 3. Build (Minimal Features) ```bash # M1 scope: reading only, no default features cargo build --package cqlite-core --no-default-features --features=all-compression ``` **Must succeed** - tests feature gate correctness. #### 4. Build (All Features) ```bash # Full feature set cargo build --package cqlite-core --all-features ``` **Must succeed** - tests complete build. #### 5. Run Tests (Library) ```bash # Run all library tests cargo test --package cqlite-core --lib --all-features ``` **Track test count** - should not decrease unexpectedly. #### 6. Run Integration Tests ```bash # Run integration tests cargo test --test '*' ``` **Must pass** - validates end-to-end functionality. #### 7. Coverage Check ```bash # Generate coverage report cargo tarpaulin --out Html --output-dir coverage/ ``` **Target:** ≥90% coverage (PRD requirement) ## Feature Flag Testing ### M1 Feature Gates **Core reading** (minimal): ```bash cargo build --package cqlite-core \ --no-default-features \ --features=all-compression ``` **With benchmarks**: ```bash cargo build --package cqlite-core \ --no-default-features \ --features=all-compression,benchmarks ``` **All features**: ```bash cargo build --package cqlite-core --all-features ``` ### Validate Feature Combinations ```bash # Test feature matrix for features in "all-compression" "all-compression,benchmarks" "all-features"; do echo "Testing: $features" cargo test --package cqlite-core --no-default-features --features=$features done ``` ## CI Pipeline ### GitHub Actions Workflow Located: `.github/workflows/rust.yml` **Jobs:** 1. **Format Check** - Runs `cargo fmt -- --check` - Fast fail if unformatted 2. **Clippy** - Runs with `-D warnings` - Zero warnings required 3. **Build Matrix** - Minimal features - All features - Multiple Rust versions (stable, nightly) 4. **Test Matrix** - Linux, macOS, Windows - Unit + integration tests 5. **Coverage** - Generates with tarpaulin - Uploads to Codecov - Gates on 90% threshold ### Monitoring CI #### View Status ```bash # List recent runs gh run list --branch --limit 5 # View specific run gh run view # Watch live gh run watch ``` #### Check Failures ```bash # Download logs gh run view --log # Download failed job logs gh run view --log-failed ``` ## Merge Process See [merge-process.md](merge-process.md) for detailed workflow. ### Prerequisites Before merging: - ✅ All CI checks green (10/10) - ✅ Code review approved - ✅ Branch up to date with main - ✅ No conflicts - ✅ Coverage ≥90% ### Merge Methods **Squash merge** (default for cleanup): ```bash gh pr merge --squash --delete-branch ``` **Merge commit** (for feature branches): ```bash gh pr merge --merge --delete-branch ``` **Rebase** (for clean history): ```bash gh pr merge --rebase --delete-branch ``` ### Commit Message Format ``` ():