mirror of
https://github.com/hanzoai/go-fuse.git
synced 2026-10-30 14:46:18 +00:00
github.com has no runner for hanzo-build-linux-amd64, so a caller under .github/workflows is a gate that can never be scheduled. This is the ~7-line caller on the plane that can (git.hanzo.ai git-runner fleet), pinned @v1. Also fixes the one defect the new gate found on its first run: example/loopback passed an UNBUFFERED channel to signal.Notify, which drops the SIGTERM that unmounts the filesystem whenever the receiving goroutine is not already parked. Buffered by 1, per os/signal's own documented contract. Co-authored-by: Hanzo Dev <[email protected]>
23 lines
1.2 KiB
YAML
23 lines
1.2 KiB
YAML
# Canonical CI/CD config for hanzoai/go-fuse — read by the hanzoai/ci reusable
|
|
# workflow (.hanzo/workflows/cicd.yml) and by platform.hanzo.ai.
|
|
#
|
|
# LIBRARY: native Go bindings for the FUSE kernel module. No image, no deploy.
|
|
#
|
|
# The gate is build + vet, and NOT `go test ./...`, for one concrete reason:
|
|
# almost every test in fs/ and fuse/ actually MOUNTS a filesystem. That needs
|
|
# /dev/fuse and CAP_SYS_ADMIN, which a container runner does not have, so
|
|
# `go test ./...` here would report a property of the runner rather than of the
|
|
# code — the most expensive kind of red, because it is never the code's fault
|
|
# and so nobody reads it twice. Mount-level testing belongs on a privileged
|
|
# host, out of band.
|
|
#
|
|
# `go vet` is what makes this more than a compile check: vet type-checks the
|
|
# _test.go files too, so a broken test still fails the gate, and it runs the
|
|
# real analyzers. It earned that on its first run — it found
|
|
# `make(chan os.Signal)` passed to signal.Notify in example/loopback, an
|
|
# unbuffered channel that silently drops the SIGTERM that unmounts the
|
|
# filesystem. Fixed in the same commit that added this file.
|
|
test:
|
|
- name: build-and-vet
|
|
run: go build ./... && go vet ./...
|