Skip to content

build(deps): bump the go-dependencies group across 1 directory with 11 updates #654

build(deps): bump the go-dependencies group across 1 directory with 11 updates

build(deps): bump the go-dependencies group across 1 directory with 11 updates #654

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
# Full history and tags so the GoReleaser dry run can build the
# changelog, matching the real release.
fetch-depth: 0
# This repository is public, so a committed account id, ARN, endpoint
# host, address or resource id would be a disclosure. Checked before
# anything else so it fails fast.
- name: No cloud identifiers
run: scripts/check-no-cloud-identifiers.sh
- uses: actions/setup-node@v7
with:
node-version: 22
# The specs under openspec/ are the source of truth this project works
# from, so a malformed one is a build failure rather than a docs nit.
# --all covers every spec plus every unarchived change; --strict fails on
# warnings too. Run early: it is quick, and a spec problem should not wait
# behind the Go build to surface.
#
# The version is pinned deliberately. openspec adds validation rules
# between releases, and an unpinned CLI would fail unrelated pull requests
# the day one lands. Bump it on purpose, with whatever spec fixes the new
# rules ask for.
- name: Validate specs
run: npx --yes @fission-ai/openspec@1.8.0 validate --all --strict
# validate checks a Purpose section exists; it cannot tell a real one
# from the stub the archive step writes. This catches the stub, and
# catches a new capability whose delta has no Purpose at all — which is
# what mints the stub in the first place.
- name: Spec purposes are filled in
run: scripts/check-spec-purposes.sh
- uses: actions/setup-go@v7
with:
go-version-file: go.mod
cache: true
- name: Check formatting
run: |
unformatted="$(gofmt -l .)"
if [ -n "$unformatted" ]; then
echo "These files need gofmt:" >&2
echo "$unformatted" >&2
exit 1
fi
- name: Vet
run: go vet ./...
- name: Test
run: go test ./... -race -cover
# Exercise the full release pipeline without publishing: --snapshot
# builds every target (and the Homebrew formula) but skips tagging and
# upload, so the release config is validated on every push and PR.
- name: GoReleaser (dry run)
run: curl -sfL https://goreleaser.com/static/run | bash -s -- release --snapshot --clean
# The dockerised fleet example, driven end to end: real daemons, a real
# supervised engine process, real auth over the network. Runs per-PR — it is
# the only coverage of the fleet client against something other than a stub,
# and it doubles as the example, so a break here means the example is broken.
fleet-integration:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-go@v7
with:
go-version-file: go.mod
cache: true
- name: Fleet integration test
run: examples/fleet-docker/run-tests.sh
# The dockerised gateway example, driven end to end: real daemons, a real
# gateway process selecting, waking and keying over the network. Same
# double duty as the fleet job — coverage and example at once.
gateway-integration:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-go@v7
with:
go-version-file: go.mod
cache: true
- name: Gateway integration test
run: examples/gateway-docker/run-tests.sh