You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ci+test: consolidated fail-fast CI + tests/ folder with functional & e2e CLI tests (#18)
Per request: a dedicated tests/ folder driving the built binary, a consolidated
fail-fast CI, Docker for the tests that need it, and dependency caching.
tests/ (new):
- tests/e2e — drives the compiled `devstack` CLI. All `//go:build e2e` (never in
the fast unit lane; builds the binary once via TestMain).
- functional (no daemon): generate + --check, config validate, template list,
status, version, and `up` outside a workspace errors.
- daemon e2e (Docker): a full `up → status → re-up(idempotent) → down` against
a real Engine, gated on DEVSTACK_E2E=1 (it mutates the shared stack) with
t.Cleanup teardown of the stack + network. Verified locally (14s, green) and
leaves the machine clean.
- tests/README.md documents the layout + how to run.
CI (.github/workflows/ci.yml): collapse 7 jobs → 2.
- `ci`: one lane ordered cheap → expensive so a lint/unit failure fails fast
before the costly Docker + cross-compile work: gofmt → vet → installer lint →
static build → unit -race → smoke → determinism → cross-compile (4 targets in
one step) → govulncheck → integration (-tags=integration -race) → e2e
(-tags=e2e, DEVSTACK_E2E=1). setup-go caches GOMODCACHE+GOCACHE (keyed by
go.sum); ubuntu-latest's Docker backs the integration + e2e steps.
- `release-dryrun`: kept separate (expensive, independent, needs full history) so
it never gates the fast feedback.
- concurrency group cancels superseded runs.
Makefile: `make integration` + `make e2e` targets; help regex now matches names
with digits (e2e).
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
0 commit comments