Skip to content

Merge pull request #627 from hevayo/fix/586-failed-seed-wedges-spec-view #761

Merge pull request #627 from hevayo/fix/586-failed-seed-wedges-spec-view

Merge pull request #627 from hevayo/fix/586-failed-seed-wedges-spec-view #761

Workflow file for this run

name: CI
on:
pull_request:
push:
branches: [main]
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
verify:
name: build, test, lint
runs-on: ubuntu-latest
# Normal runs are ~8 min; this ceiling catches a hung test instead of letting
# it run to the GitHub 6h limit (a past run burned 76 min this way).
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
# setup-go caches the Go module + build caches (keyed on go.sum) by default.
- uses: actions/setup-go@v5
with:
go-version-file: go.work
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Enable corepack (pnpm)
run: corepack enable
# Resolve paths consumed by the cache steps below (as step outputs so the
# workflow linter can see them), and put the Go tool bin on PATH.
- name: Resolve tool paths + PATH
id: paths
run: |
GOBIN="$(go env GOPATH)/bin"
echo "$GOBIN" >> "$GITHUB_PATH"
echo "go-bin=$GOBIN" >> "$GITHUB_OUTPUT"
echo "pnpm-store=$(pnpm store path --silent)" >> "$GITHUB_OUTPUT"
# ── Caches ──────────────────────────────────────────────────────────────
# pnpm content-addressable store, keyed on the lockfile.
- name: Cache pnpm store
uses: actions/cache@v4
with:
path: ${{ steps.paths.outputs.pnpm-store }}
key: pnpm-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: pnpm-${{ runner.os }}-
# golangci-lint binary — lets us skip `make tools` (~1 min) on a hit. Keyed
# on the Makefile, which pins GOLANGCI_VERSION + GO_TOOLCHAIN.
- name: Cache golangci-lint binary
id: cache-golangci-bin
uses: actions/cache@v4
with:
path: ${{ steps.paths.outputs.go-bin }}/golangci-lint
key: golangci-bin-${{ runner.os }}-${{ hashFiles('Makefile') }}
# golangci-lint analysis cache — speeds the lint run itself.
- name: Cache golangci-lint analysis
uses: actions/cache@v4
with:
path: ~/.cache/golangci-lint
key: golangci-cache-${{ runner.os }}-${{ hashFiles('**/go.sum') }}
restore-keys: golangci-cache-${{ runner.os }}-
# Turborepo cache — unchanged TS packages replay from cache instead of
# re-running typecheck/build/test/lint. github.sha keeps each run's cache
# fresh; restore-keys seeds it from the most recent prior run.
- name: Cache turbo
uses: actions/cache@v4
with:
path: .turbo
key: turbo-${{ runner.os }}-${{ github.sha }}
restore-keys: turbo-${{ runner.os }}-
- name: Install dependencies
run: make install
- name: Install pinned Go tools (golangci-lint)
if: steps.cache-golangci-bin.outputs.cache-hit != 'true'
run: make tools
- name: go.sum consistency check
run: |
for d in $(go list -m -f '{{.Dir}}'); do
echo ">> go mod tidy -diff $d"
(cd "$d" && go mod tidy -diff)
done
- name: Typecheck
run: make typecheck
- name: Build
run: make build
- name: Test
run: make test
- name: Contract codegen freshness (aep-api)
run: make -C services/aep-api gen-api-check
- name: Dead-code gate (aep-api)
run: make -C services/aep-api deadcode-check
- name: Dead-code gate (TS — agents + playground)
run: make deadcode-ts-check
- name: Lint
run: make lint
- name: License header check
run: make license-check