Files
cleveragents-core/robot/ci_nox_validation.robot
brent.edwards 00897be24a
CI / build (push) Successful in 21s
CI / lint (push) Successful in 3m30s
CI / typecheck (push) Successful in 3m55s
CI / benchmark-regression (push) Has been skipped
CI / security (push) Successful in 3m57s
CI / quality (push) Successful in 3m59s
CI / integration_tests (push) Successful in 5m52s
CI / e2e_tests (push) Successful in 8m15s
CI / coverage (push) Failing after 13m33s
CI / unit_tests (push) Failing after 17m29s
CI / benchmark-publish (push) Successful in 19m11s
CI / docker (push) Has been skipped
CI / status-check (push) Failing after 3s
feat(ci): CI/CD pipeline definitions (#983)
## Summary

Complete CI/CD pipeline definitions: release workflow, caching, status-check consolidation, and documentation.

### Changes

**New: Release pipeline** (`.forgejo/workflows/release.yml`):
- Triggered on `v*` tags
- 3 jobs: `build-wheel` → `build-docker` → `create-release`
- Builds wheel via `nox -s build`, Docker image via multi-stage Dockerfile
- Creates Forgejo release via API with wheel artifact attached
- Configurable registry push via `REGISTRY_*` secrets

**Updated: CI pipeline** (`.forgejo/workflows/ci.yml`):
- Added `actions/cache@v3` for `~/.cache/uv` on all 8 primary jobs (keyed on `pyproject.toml` hash)
- Added `status-check` consolidation job depending on all required checks — single gate for branch protection

**Updated: CONTRIBUTING.md**:
- New CI/CD section: pipeline overview, job table, required merge checks, release process, secrets documentation

**Tests**:
- 13 new Behave scenarios validating workflow YAML structure, tag triggers, job definitions, dependencies
- 9 new Robot tests validating file existence, content, nox session references

### Quality Gates

| Session | Result |
|---|---|
| `nox -s lint` | PASS |
| `nox -s typecheck` | PASS (0 errors) |
| `nox -s unit_tests` | PASS (10,819 scenarios) |
| `nox -s coverage_report` | 97.9% (>= 97%) |

Closes #858

Reviewed-on: #983
Co-authored-by: Brent E. Edwards <brent.edwards@cleverthis.com>
Co-committed-by: Brent E. Edwards <brent.edwards@cleverthis.com>
2026-03-21 00:29:49 +00:00

87 lines
3.8 KiB
Plaintext

*** Settings ***
Documentation Smoke test validating that nox sessions referenced in CI exist and can be listed
Library Process
Library OperatingSystem
*** Test Cases ***
Nox Lists All Required Sessions
[Documentation] Verify that nox can list sessions and the required CI sessions are present
[Tags] ci quality slow
${result}= Run Process nox --list
Should Be Equal As Integers ${result.rc} 0 msg=nox --list failed with: ${result.stderr}
# Verify required sessions exist in nox output
Should Contain ${result.stdout} lint
Should Contain ${result.stdout} typecheck
Should Contain ${result.stdout} unit_tests
Should Contain ${result.stdout} integration_tests
Should Contain ${result.stdout} coverage_report
Should Contain ${result.stdout} security_scan
Should Contain ${result.stdout} dead_code
Should Contain ${result.stdout} complexity
Should Contain ${result.stdout} build
CI Workflow File Exists
[Documentation] Verify the CI workflow file is present in the repository
[Tags] ci quality slow
File Should Exist .forgejo/workflows/ci.yml
Release Workflow File Exists
[Documentation] Verify the release workflow file is present in the repository
[Tags] ci quality slow
File Should Exist .forgejo/workflows/release.yml
Nightly Quality Workflow File Exists
[Documentation] Verify the nightly quality workflow file is present
[Tags] ci quality slow
File Should Exist .forgejo/workflows/nightly-quality.yml
Nox Lint Session Runs Successfully
[Documentation] Verify that nox lint session can be invoked
[Tags] ci quality slow
${result}= Run Process nox -s lint timeout=120s on_timeout=kill
Should Be Equal As Integers ${result.rc} 0 msg=nox -s lint failed: ${result.stderr}
Release Workflow Contains Build Wheel Job
[Documentation] Verify the release workflow defines a build-wheel job
[Tags] ci quality
${content}= Get File .forgejo/workflows/release.yml
Should Contain ${content} build-wheel:
Release Workflow Contains Build Docker Job
[Documentation] Verify the release workflow defines a build-docker job
[Tags] ci quality
${content}= Get File .forgejo/workflows/release.yml
Should Contain ${content} build-docker:
Release Workflow Contains Create Release Job
[Documentation] Verify the release workflow defines a create-release job
[Tags] ci quality
${content}= Get File .forgejo/workflows/release.yml
Should Contain ${content} create-release:
Release Workflow Triggers On Version Tags
[Documentation] Verify the release workflow triggers on v* tags
[Tags] ci quality
${content}= Get File .forgejo/workflows/release.yml
Should Contain ${content} tags:
Should Contain ${content} "v*"
CI Workflow Has Status Check Job
[Documentation] Verify the CI workflow has a status-check consolidation job
[Tags] ci quality
${content}= Get File .forgejo/workflows/ci.yml
Should Contain ${content} status-check:
CI Workflow Uses Dependency Caching
[Documentation] Verify the CI workflow uses actions/cache for uv packages
[Tags] ci quality
${content}= Get File .forgejo/workflows/ci.yml
Should Contain ${content} actions/cache@v3
Should Contain ${content} ~/.cache/uv
Nox Build Session Is Referenced In Release Workflow
[Documentation] Verify the release workflow uses nox -s build
[Tags] ci quality
${content}= Get File .forgejo/workflows/release.yml
Should Contain ${content} nox -s build