Files
kmsvc-proto/.forgejo/workflows/ci.yaml
T

80 lines
2.7 KiB
YAML
Raw Normal View History

name: ci
on:
push:
pull_request:
jobs:
buf:
runs-on: docker
container:
image: bufbuild/buf:latest
steps:
# actions/checkout@v4 is a JS action — it needs `node` inside the job's
# container to run, but bufbuild/buf has no Node.js. Plain git clone has
# no such dependency and works in any image.
2026-07-04 07:44:46 -07:00
#
# The runner's own homelab CA isn't trusted by this container's
# default CA bundle, so https clone fails cert verification — install
# the CA before cloning.
- name: trust homelab CA
env:
HOMELAB_CA_CERT: ${{ secrets.HOMELAB_CA_CERT }}
run: |
mkdir -p /usr/local/share/ca-certificates
echo "$HOMELAB_CA_CERT" > /usr/local/share/ca-certificates/homelab-ca.crt
update-ca-certificates
- name: checkout
env:
GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git clone "https://x-access-token:${GIT_TOKEN}@${GITHUB_SERVER_URL#https://}/${GITHUB_REPOSITORY}.git" .
git checkout "${GITHUB_SHA}"
- name: buf lint
run: buf lint
- name: buf breaking (against main)
run: buf breaking --against '.git#branch=main'
if: github.ref != 'refs/heads/main'
codegen-check:
runs-on: docker
container:
image: golang:1.25
steps:
# Same reason as the buf job: golang:1.25 has no Node.js, so the JS
# action actions/checkout@v4 can't run here — plain git clone instead.
2026-07-04 07:44:46 -07:00
- name: trust homelab CA
env:
HOMELAB_CA_CERT: ${{ secrets.HOMELAB_CA_CERT }}
run: |
mkdir -p /usr/local/share/ca-certificates
echo "$HOMELAB_CA_CERT" > /usr/local/share/ca-certificates/homelab-ca.crt
apt-get update -qq && apt-get install -y -qq ca-certificates >/dev/null
update-ca-certificates
- name: checkout
env:
GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git clone "https://x-access-token:${GIT_TOKEN}@${GITHUB_SERVER_URL#https://}/${GITHUB_REPOSITORY}.git" .
git checkout "${GITHUB_SHA}"
- name: Install buf and protoc plugins
run: |
go install github.com/bufbuild/buf/cmd/buf@latest
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@latest
- name: Regenerate and diff
run: |
export PATH="$PATH:$(go env GOPATH)/bin"
buf generate
git diff --exit-code -- gen || (echo "::error::gen/ is out of date — run buf generate and commit the result" && exit 1)
- name: go build
run: go build ./...