Files
CASAN/.github/workflows/ci.yml
T

79 lines
2.3 KiB
YAML

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
project-quality:
name: Project quality · ${{ matrix.project }}
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
include:
- project: okr
manifest: apps/okr/domain/project.manifest.json
- project: service-desk
manifest: apps/service-desk/domain/project.manifest.json
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
cache: npm
- run: npm ci
- name: Validate project contract
run: python3 packages/casan-harness/scripts/bash/project_manifest.py validate --root . --manifest "${{ matrix.manifest }}"
- name: Build
run: python3 packages/casan-harness/scripts/bash/project_manifest.py run --root . --manifest "${{ matrix.manifest }}" --kind build
- name: Test
run: python3 packages/casan-harness/scripts/bash/project_manifest.py run --root . --manifest "${{ matrix.manifest }}" --kind test
- name: Project security, corpus and traceability gates
env:
CASAN_PROJECT_MANIFEST: ${{ matrix.manifest }}
# The repository-level governance job runs the exhaustive corpus suite once.
CASAN_PROJECT_GATE_RUN_CORPUS: "0"
CASAN_PROJECT_GATE_RUN_BUILD: "0"
CASAN_PROJECT_GATE_RUN_TEST: "0"
run: bin/casan gate
casan-governance:
name: CASAN governance
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
cache: npm
- run: npm ci
- name: Run reusable governance suites
env:
CASAN_CI_RUN_PROJECT: "0"
CASAN_CI_RUN_CONTROL_PANEL: "0"
CASAN_CI_RUN_INFRA_LAB: "0"
run: bin/casan gate
control-panel:
name: Control panel
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
cache: npm
- run: npm ci
- run: npm run console:test
- run: npm run console:build