Files
pubsub/hanzo.yml
zeekay 890a5ed9b1 ci: retire .github/workflows, one pipeline on the forge
.hanzo/workflows already existed here, and the forge reads the first workflow
directory that exists — so these eight files had stopped running on the forge
while github.com kept executing them. Removing them leaves one pipeline.

Moved. deploy.yml built ghcr.io/hanzoai/pubsub through a reusable in
hanzoai/.github; the image is now declared in hanzo.yml `images:` and built by
the same lane that gates it. vuln.yaml becomes .hanzo/workflows/vuln.yml with a
runner label this fleet serves -- govulncheck is cheap and answers a question
the gate cannot, since a vulnerability lands in a dependency without anyone
touching this repo. Its SARIF upload is gone with it: that fed GitHub code
scanning, which has no counterpart here, so findings now read from the run.

Dropped. long-tests, nightly and mqtt-test are upstream NATS lanes that select
runners through `vars.GHA_WORKER_*`, an upstream-only variable that resolves to
ubuntu-latest here -- a label no runner answers, so they would queue rather than
fail. With them go the daily 60-minute JetStream long tests, the nightly
multi-arch Docker build assembled from nats-io/nsc and nats-io/natscli, and the
MQTT suite that installs hivemq mqtt-cli. The ./server suites they cover still
live in the tree and still run locally. release.yaml minted GitHub Releases with
cosign signatures and a syft SBOM for the upstream NATS server binaries; the
image is what we ship, so that lane and those artifacts are gone.
claude.yml called a synadia-io reusable on GitHub PR events and
workflow-sanity.yml triggered only on `.github/workflows/**`, which no longer
exists. .github/actions/nightly-release was reachable only from nightly.yaml.

Kept: CODEOWNERS, FUNDING, ISSUE_TEMPLATE, PULL_REQUEST_TEMPLATE, dependabot,
hero.svg.
2026-08-13 21:06:40 -07:00

32 lines
1.4 KiB
YAML

# Canonical CI/CD config for hanzoai/pubsub — the one file both the hanzoai/ci
# reusable (.hanzo/workflows/cicd.yml) and platform.hanzo.ai read.
#
# The gate compiles and vets EVERYTHING, then runs the suites that need no
# cluster: config parsing, the internal packages, the logger, and the embedded
# server. That split is the point. ./server holds 87 test files that stand up
# real routes, JetStream stores and MQTT sessions — the repo's own workflows
# give them 60-minute timeouts, `-p 1`, and separate scheduled runs for exactly
# that reason, and they still live there. Pulling them into a per-push gate
# would trade a signal that arrives in minutes for one that times out.
#
# `go vet ./...` is unscoped on purpose: it is cheap, it reads the server tree
# too, and it is the part of the whole-repo check that does not need a cluster.
images:
# ghcr.io/hanzoai/pubsub was built by a reusable in hanzoai/.github called from
# .github/workflows/deploy.yml. github.com is no longer where this repo's
# pipeline lives, so the image is declared here and built by the same lane
# that gates it — one build, one place.
- name: pubsub
context: .
dockerfile: Dockerfile
repo: ghcr.io/hanzoai/pubsub
test:
- name: build
run: |
set -e
go build ./...
go vet ./...
go test -count=1 ./conf/... ./internal/... ./logger/... ./embed/...