Files
1e0086678a ci: canonical hanzo.yml + hanzoai/ci (arc, no GHA minutes) — ZAP-native collector image (#5)
* ci: adopt canonical hanzo.yml + hanzoai/ci reusable (arc, no GHA minutes)

Build/test/deploy now driven by a root hanzo.yml read by the reusable
hanzoai/ci workflow, imported via a ~7-line .github/workflows/cicd.yml
(uses: hanzoai/ci/.github/workflows/build.yml@main, secrets: inherit).
Runs on the self-hosted arc pool (hanzo-build-linux-amd64) — zero
GitHub-hosted minutes; GHCR push via the automatic workflow token.

Two self-building images (compile in-image, no CI pre-build step):
  - collector       -> cmd/o11yotelcollector/Dockerfile.selfbuild
                       ghcr.io/hanzoai/otel-collector (tag-suffix zap-native)
  - schema-migrator -> cmd/o11yschemamigrator/Dockerfile.selfbuild (new)
                       ghcr.io/hanzoai/o11y-schema-migrator

* ci: remove broken/superseded workflows

Removed (all fail today):
  - build-ghcr.yaml, build-staging.yaml, build.yaml: broken reusables
    (hanzoai/.github docker-build.yml -> runtime-validation 'jobs: 0';
    o11y/primus.workflows -> inaccessible upstream org).
  - gor-signozotelcollector.yaml, gor-signozschemamigrator.yaml: goreleaser
    on GitHub-hosted ubuntu/macos runners (violates arc-only) + primus.
  - ci.yaml, postci.yaml: o11y/primus.workflows go-test/label; the go-test
    gate is folded into hanzo.yml test: instead.

Kept workflow-sanity.yml (unrelated Hanzo lint gate). cicd.yml supersedes.

* docs: canonical CI pattern note (hanzo.yml + hanzoai/ci on arc)

* ci: remove workflow-sanity.yml (broken hanzoai/.github reusable, jobs:0)

Same runtime-validation failure as the docker-build.yml reusable; fails at
0s on every PR touching .github/workflows. cicd.yml is the one CI path now.

* ci: temporarily pin hanzoai/ci@fix/provision-parse-toolchain (pending #4)

hanzoai/ci@main fails on the stock arc runner (no PyYAML/jq); hanzoai/ci#4
provisions them. Pin the fix branch so this repo's arc build goes green now;
flip back to @main (canonical) once #4 merges.

* ci: gate the ZAP surface in the build stage (bare/DinD runner has no Go)

The reusable runs hanzo.yml test: on a bare arc runner with no Go toolchain
and a DinD daemon (bind-mounts don't cross), so 'go test' there fails with
'go: command not found'. Move the ZAP receiver+exporter test into
Dockerfile.selfbuild's build stage — where the toolchain + source already are
and a failing test fails the image — and drop the runner-based test:.

---------

Co-authored-by: hanzo-dev <[email protected]>
2026-07-03 17:00:01 -07:00

1.9 KiB

otel-collector

Hanzo O11y Otel Collector

The Hanzo distribution of the OpenTelemetry Collector. Ingests traces / metrics / logs over ZAP-native (zap-proto/http, :4319) plus OTLP (:4317/:4318) and writes to the one hanzoai/datastore (ClickHouse). Adds receiver/zapreceiver

  • exporter/zapexporter over upstream.

CI/CD — canonical pattern (one and only one way)

Build/test/deploy is driven by a single root hanzo.yml + a ~7-line .github/workflows/cicd.yml that imports the reusable hanzoai/ci workflow:

# .github/workflows/cicd.yml
jobs:
  cicd:
    uses: hanzoai/ci/.github/workflows/build.yml@main
    secrets: inherit

All build/test/deploy logic lives once in hanzoai/ci. It reads hanzo.yml (images: / test: / deploy: / kms:), builds + pushes each image, runs the tests, and rolls the deployment. The build runs on our self-hosted arc pool (hanzo-build-linux-amd64) — zero GitHub-hosted minutes; GitHub only orchestrates, our infra does the work. GHCR push uses the automatic workflow token; KMS (kms.hanzo.ai) supplies only the deploy KUBECONFIG.

This repo builds two images from self-building multi-stage Dockerfiles (so no CI pre-build step is needed):

image dockerfile tags
ghcr.io/hanzoai/otel-collector cmd/o11yotelcollector/Dockerfile.selfbuild :zap-native-latest, :sha-<short>-amd64-zap-native
ghcr.io/hanzoai/o11y-schema-migrator cmd/o11yschemamigrator/Dockerfile.selfbuild :latest, :sha-<short>-amd64

This is the going-forward pattern for all native-PaaS repos. To onboard a new repo: add a root hanzo.yml and the cicd.yml above — nothing else. Do not add per-repo build logic, GitHub-hosted runners, or the legacy hanzoai/.github docker-build.yml / o11y/primus.workflows reusables (both removed here).