railiance-infra/.forgejo/workflows/ci-smoke.yaml
codex 295bf43d54
Some checks failed
CI Smoke / source-contract (push) Failing after 9s
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Implement governed S1 backup recovery loop
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a02994-7685-7940-bf34-3555b8256018
2026-08-23 13:13:13 +02:00

55 lines
1.7 KiB
YAML

# Canonical CI smoke template (tier 1 routing drill).
# Copy to: .forgejo/workflows/ci-smoke.yaml in consumer repos.
name: CI Smoke
on:
push:
branches:
- main
workflow_dispatch:
jobs:
source-contract:
# The host lane is intentionally minimal and does not provide the Node
# runtime required by actions/checkout. Run source validation in the
# documented disposable container lane instead.
runs-on: ubuntu-latest
steps:
- name: Check out source
uses: actions/checkout@v4
- name: Prepare source-contract runtime
run: |
set -eu
apt-get update
apt-get install -y --no-install-recommends age make python3 python3-yaml
- name: Validate S1 source contracts
run: |
set -eu
python3 -c 'import yaml'
python3 scripts/inventory_contract.py
python3 scripts/baseline_contract.py --check-repo
python3 scripts/handoff_contract.py
python3 scripts/sops_rotation.py --check
python3 scripts/s1_receipt.py docs/evidence/s1-receipts/*.json
python3 scripts/s1_backup.py check
python3 -m unittest discover -s tests -v
make check-secrets
host-smoke:
runs-on: self-hosted
steps:
- name: Routing probe (host runner)
run: |
set -eu
echo "repository=${GITHUB_REPOSITORY:-unknown}"
echo "sha=${GITHUB_SHA:-unknown}"
echo "runner=${RUNNER_NAME:-unknown}"
uname -a
container-smoke:
runs-on: ubuntu-latest
steps:
- name: Routing probe (container label)
run: |
set -eu
echo "container-smoke ok for ${GITHUB_REPOSITORY:-unknown}"