Merge pull request #9 from GembaCore/feat/m4-workstream-b #596
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| build: | |
| name: ${{ matrix.os }} · go ${{ matrix.go }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| # Windows is intentionally not in the matrix: the | |
| # orchestration / hook / native-adapter family | |
| # (cmd/gemba-{ask,bd-hook,bridge,mcp,state}, adapter/{bd, | |
| # native,native/bridge,native/install,native/preamble}) is | |
| # Unix-centric — tmux, git-hook +x bits, fs path semantics, | |
| # and exec.Command shapes that don't translate. Re-add | |
| # windows-2022 only after a Windows-port bead lands the | |
| # build-tagged shims. | |
| os: [ubuntu-22.04, macos-14] | |
| # go.mod targets go 1.25. golangci-lint v2.5.0 (the lint | |
| # tool we install below) was built with go1.25 and panics | |
| # when asked to analyze go1.26 toolchain output, so the | |
| # matrix is pinned to 1.25 only until golangci-lint ships | |
| # a 1.26-aware build. | |
| go: ['1.25'] | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: ${{ matrix.go }} | |
| cache: true | |
| - uses: pnpm/action-setup@v4 | |
| with: | |
| version: 9 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: pnpm | |
| cache-dependency-path: web/pnpm-lock.yaml | |
| # actions/setup-node@v4 with `cache: pnpm` only restores the pnpm store | |
| # cache — it does NOT run `pnpm install`. Without this step, web/node_modules | |
| # is empty and `pnpm lint` fails with "eslint: command not found". | |
| - name: Install frontend deps | |
| working-directory: web | |
| run: pnpm install --frozen-lockfile | |
| - name: Install golangci-lint | |
| # v2.5.0+ is built with go1.25 so it can analyze code whose | |
| # go.mod targets go 1.25. The previous pin (v1.62.2) was | |
| # built with go1.23 and tripped the "build go version lower | |
| # than target" guard at config-load. | |
| run: | | |
| curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh \ | |
| | sh -s -- -b "$(go env GOPATH)/bin" v2.5.0 | |
| echo "$(go env GOPATH)/bin" >> "$GITHUB_PATH" | |
| - name: make lint | |
| run: make lint | |
| # Decision-doc frontmatter linkage check (D6 / gm-d1m1). Runs | |
| # in --docs-only mode because the runner has no bd/Dolt access; | |
| # the bead-side cross-check is exercised locally via | |
| # `make lint-decisions`. | |
| - name: check decision linkage (frontmatter) | |
| run: go run ./cmd/check-decisions --docs-only | |
| - name: make test | |
| run: make test | |
| - name: make build | |
| run: make build |