version: "1" name: orca-ci description: Orca — offline/CLI-first orchestration engine. CI pipeline via CoreCI. # CoreCI configuration for orca (v0.16 rewrite — native jobs: format). # # CoreCI's Pipeline struct only recognizes `jobs:`, `services:`, and `env:` # top-level keys. Unknown keys (like the old `pipelines:`) are silently # dropped by yaml.Unmarshal, producing an empty Jobs map → zero jobs # execute. This file uses the native `jobs:`/`invoke:`/`vars:` format # with a DAG via `needs:`. # # DAG: build → test # # The Gitea Actions workflow (.gitea/workflows/release.yml) gates on # `on: push: tags: ['v*']`, so every `coreci run` invocation is already # a release run. The release step (build tarball + upload to Gitea) is # handled by a separate Gitea Actions step AFTER `coreci run` completes, # because CoreCI's SQLite logging can fill the runner's disk during # `go test -race`, causing the release job to fail when writing files. # # Each job uses `invoke:` only (no `plugin:`) — CoreCI's validate() # rejects jobs with both plugin and invoke set (mutually exclusive). # Jobs run via the shell-isolated executor (sh -c ). # # CoreCI's ValidateShellCommand forbids shell metacharacters (&|;`><$()) # in the invoke: string. All complex logic lives in scripts/ci-run.sh. jobs: # ── build ──────────────────────────────────────────────────────────── # CI_COMMIT_BRANCH contains the tag name on tag pushes (CoreCI's github.go # maps GITHUB_REF_NAME → CI_COMMIT_BRANCH). CI_COMMIT_SHA is the commit. build: invoke: "sh scripts/ci-run.sh build" # ── test (REQ-031: -race) ──────────────────────────────────────────── test: needs: [build] invoke: "sh scripts/ci-run.sh test"