mirror of
https://github.com/hanzoai/ingress.git
synced 2026-10-20 15:07:40 +00:00
Mount took a cloud.Deps in order to read two fields out of it, Brand and Domain, and handed both straight back on /_/ingress/config. Nothing else in that struct was ever touched, and carrying it cost the whole dependency: hanzoai/cloud ships two editions under one module path, so cloud.Deps is a different type in each and a package that names it can be composed by exactly one of them. This repo has already been on both sides of that. Days ago its go.mod pinned cloud v1.801.293, where Deps has no Logger field and there is no package-level Register at all; today it pins v0.1.1, where both exist. One file, two truths, depending on which edition happened to be pinned. So ingress takes the two strings now and cloud is out of go.mod. The other half of the coupling was direction. An init() pushed ingress into cloud.Registry, so the host had to be imported for the subsystem to announce itself, and the graph closed on itself. App builds and returns its own *zip.App instead: a host holds what it gets back and mounts it where it likes, and ingress no longer knows a registry exists. The logger came out of the same struct and is the process default now, which cannot be nil and so needs no check. None of this was ever compiled. It sat behind a `cloud` build tag that no make target, no CI job and no Dockerfile passed, which is how a file gets to be valid against one edition of its dependency and dead against the other without anyone noticing. The tag protected nothing either -- cmd/ingress does not import this package, and `go list -deps ./cmd/ingress` still shows no zip -- so it is gone, and `.` joins test-unit and the hanzo.yml test list. A surface that nothing builds is how this rotted the first time.
34 lines
1.6 KiB
YAML
34 lines
1.6 KiB
YAML
# Canonical CI config for hanzoai/ingress — read by the hanzoai/ci reusable
|
|
# (.hanzo/workflows/cicd.yml) and platform.hanzo.ai. ci.hanzo.ai builds this on the
|
|
# git-runner pool (act_runner on git.hanzo.ai); hanzoai/ci pushes to `repo:` and
|
|
# server-side-mirrors to registry.hanzo.ai.
|
|
#
|
|
# WHY THIS FILE EXISTS: ingress was the last core repo still building through
|
|
# .github/workflows/ci.yml on GitHub Actions, so it was outside git.hanzo.ai /
|
|
# ci.hanzo.ai / cd.hanzo.ai — two ways to build one fleet. It is also why a commit
|
|
# that had been on main for hours had no image: nothing on the native pipeline was
|
|
# watching this repo.
|
|
#
|
|
# The Dockerfile is self-contained: its first stage builds the webui bundle with
|
|
# pnpm, which is what `go build ./cmd/ingress` needs (webui/embed.go embeds
|
|
# webui/static) and why a bare local Go build fails without it. So the image build
|
|
# needs no separate asset step.
|
|
#
|
|
# TAGS: `sha-<sha7>-amd64` on every main push, and the bare semver on a cut v* tag.
|
|
# PIN THE DIGEST in universe — infra/k8s/ingress/deployment.yaml already does
|
|
# (`:1.10.6@sha256:…`), which is the practice to keep: a digest cannot be re-pointed.
|
|
images:
|
|
- name: ingress
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
repo: ghcr.io/hanzoai/ingress
|
|
|
|
# Ported from the retired GitHub Actions `test` job. The Go tests need the webui
|
|
# bundle present, because webui/embed.go embeds webui/static and the package will
|
|
# not compile without it.
|
|
test:
|
|
- corepack enable && corepack prepare [email protected] --activate
|
|
- cd webui && pnpm install --frozen-lockfile && pnpm build
|
|
- go mod download
|
|
- go test . ./pkg/provider/acme/... ./pkg/tls/...
|