ci.yml RawHistoryFolder
1name: CI
2
3on:
4 push:
5 branches: [main]
6 pull_request:
7
8env:
9 # Test the module alone, with the versions in go.mod (never a go.work).
10 GOWORK: "off"
11 GOPRIVATE: bnema.dev/ermite*
12
13jobs:
14 lint:
15 name: Lint
16 runs-on: ubuntu-latest
17 steps:
18 - uses: actions/checkout@v6
19 # Job containers reach Forgejo through the Gordon edge on the host loopback,
20 # in plain HTTP on :8088 (see vps-infra homelab/igor/ci-runner).
21 - name: Fetch bnema.dev/ermite* modules through the runner's Forgejo route
22 run: git config --global url."http://git.bnema.dev:8088/".insteadOf "https://git.bnema.dev/"
23 - uses: actions/setup-go@v5
24 with:
25 go-version-file: go.mod
26 cache: true
27 - uses: golangci/golangci-lint-action@v9
28 with:
29 version: v2.14.0
30
31 test:
32 name: Test
33 runs-on: ubuntu-latest
34 steps:
35 - uses: actions/checkout@v6
36 # Job containers reach Forgejo through the Gordon edge on the host loopback,
37 # in plain HTTP on :8088 (see vps-infra homelab/igor/ci-runner).
38 - name: Fetch bnema.dev/ermite* modules through the runner's Forgejo route
39 run: git config --global url."http://git.bnema.dev:8088/".insteadOf "https://git.bnema.dev/"
40 - uses: actions/setup-go@v5
41 with:
42 go-version-file: go.mod
43 cache: true
44 - name: Verify tidy
45 run: |
46 go mod tidy
47 git diff --exit-code -- go.mod go.sum
48 - run: go vet ./...
49 - name: Static build
50 # The runner binary is attached read-only to every sandbox, which has no
51 # libc of ours: it must be a static executable (sandbox.CheckStatic
52 # refuses anything else at start).
53 run: |
54 CGO_ENABLED=0 go build -trimpath -o /tmp/ermite-runner .
55 file /tmp/ermite-runner | grep -q 'statically linked'
56 - name: Protobuf lint and drift
57 # buf and protoc-gen-go are pinned as `tool` directives in go.mod: the
58 # generated code is reproducible and must match the committed one.
59 run: |
60 go tool buf lint
61 go generate ./internal/execstream
62 git diff --exit-code -- internal/execstream/execpb
63 - run: go test -race ./...