ci: G1 — real-daemon integration lane - #17
Merged
Merged
Conversation
Add the `integration` CI job: `go test -tags=integration -race ./...` against
ubuntu-latest's Docker. This activates the //go:build integration tests already
written for internal/{docker,health,hooks} (read-only ContainerInspect/Logs,
the readiness Poll over healthy+unhealthy containers, and a real `compose exec`
hook), which until now ran only locally. Tests self-isolate with per-run names
(devstack-it-<pid>) + t.Cleanup teardown and skip gracefully if the daemon is
unreachable.
This is also the isolation foundation the saga daemon e2e (C5) needs — the
follow-up parameterizes the shared network/prefix so the saga test never touches
a real devstack_shared. macOS + config-conformance lanes are noted as the next
placeholders (G2).
Verified the full integration suite green locally against Engine 29.5.3.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
gustavobertoi
added a commit
that referenced
this pull request
Jun 29, 2026
gustavobertoi
added a commit
that referenced
this pull request
Jun 30, 2026
Per owner decision, drop the two-workflow + RELEASE_TOKEN (PAT/App token) split in favor of ONE release.yml that computes -> tags -> releases in a single job using the built-in GITHUB_TOKEN. Rationale: contents:write lets a workflow push a tag, but a tag pushed with GITHUB_TOKEN does NOT re-trigger another workflow (GitHub's recursion guard) -- so the only way to avoid a separate token is to run tag-compute and goreleaser in the same job, never depending on a re-trigger. - Remove .github/workflows/tag.yml. - Rewrite .github/workflows/release.yml: triggers on push:main (svu compute + 0.x guard + tag, gated on the RELEASE_ENABLED repo *variable*) AND on push of a v* tag (a human hand-cut release) AND workflow_dispatch; goreleaser runs once, guarded by github.ref so the two paths never double-release. - Kill-switch is now the RELEASE_ENABLED repo variable (no secret to rotate); default unset = compute + log, never release. - Update spec 25 / FEATURES #17 / ROADMAP M8.0 to the no-token design. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
gustavobertoi
added a commit
that referenced
this pull request
Jun 30, 2026
… (spec 25) (#79) * docs(specs): add specs 22-25 + FEATURES/ROADMAP M8 beta-DX lane Design the four newly requested features as spec-quality docs: - 22 interactive `init` wizard (workspace + shared services) - 23 interactive template & Dockerfile authoring (TUI) - 24 `.env` ingestion -> secrets/vars (no more committed .env) - 25 release automation + 0.x conventional-commit versioning All TUIs are Bubble Tea v2 + the Charm plugin stack (bubbles/lipgloss/huh v2, CGO-free) behind one shared internal/prompt theme, each with a --json/flag fallback. Wire them into FEATURES (#14-17) and a new ROADMAP M8 beta-DX lane that stays on the 0.x line (next release v0.2.0, never an automated 1.0.0). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat(release): conventional-commit versioning (svu) + fix self-update v-prefix bug Implements spec 25's thin slice (the v0.2.0 gate): - .svu.yaml (v0:true): keeps BETA on the 0.x line (a BREAKING change bumps the MINOR, never 1.0.0). - .github/workflows/tag.yml: push-to-main -> `svu next --v0` (pinned v3.4.1) -> push a v* tag, gated on an owner-provisioned RELEASE_TOKEN (absent = kill switch) with a CI v0.* guard, which fires the unchanged release.yml/goreleaser. - .github/workflows/pr-title.yml: pure-shell conventional-commit PR-title lint (squash-merge makes the PR title the commit svu reads). - .goreleaser.yaml: grouped changelog (Features/Bug fixes/Performance) under `use: github`, and the load-bearing ldflags fix Version=v{{.Version}}. The ldflags fix is a real regression, not cosmetic: goreleaser's {{.Version}} is v-stripped ("0.2.0"), which golang.org/x/mod/semver rejects, so internal/ selfupdate.IsDevBuild() returns true for a real release -> the update notifier and `self update` silently treat it as a dev build and never fire. Verified against the real code: IsDevBuild("0.2.0")=true vs IsDevBuild("v0.2.0")=false; goreleaser snapshot now stamps v0.1.1-dev-<sha>. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * refactor(release): single-workflow release, built-in token (no PAT) Per owner decision, drop the two-workflow + RELEASE_TOKEN (PAT/App token) split in favor of ONE release.yml that computes -> tags -> releases in a single job using the built-in GITHUB_TOKEN. Rationale: contents:write lets a workflow push a tag, but a tag pushed with GITHUB_TOKEN does NOT re-trigger another workflow (GitHub's recursion guard) -- so the only way to avoid a separate token is to run tag-compute and goreleaser in the same job, never depending on a re-trigger. - Remove .github/workflows/tag.yml. - Rewrite .github/workflows/release.yml: triggers on push:main (svu compute + 0.x guard + tag, gated on the RELEASE_ENABLED repo *variable*) AND on push of a v* tag (a human hand-cut release) AND workflow_dispatch; goreleaser runs once, guarded by github.ref so the two paths never double-release. - Kill-switch is now the RELEASE_ENABLED repo variable (no secret to rotate); default unset = compute + log, never release. - Update spec 25 / FEATURES #17 / ROADMAP M8.0 to the no-token design. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Chunk G1 (M7, pulled early) — integration CI lane
Adds the
integrationjob:go test -tags=integration -race ./...against ubuntu-latest's Docker. Activates the//go:build integrationtests already written forinternal/{docker,health,hooks}(read-onlyContainerInspect/Logs, the readinessPollover healthy+unhealthy containers, a realcompose exechook) — until now they ran only locally.Tests self-isolate (
devstack-it-<pid>names +t.Cleanup) and skip gracefully if the daemon is unreachable.Also the isolation foundation the saga daemon e2e (C5) needs. macOS + config-conformance lanes noted as next placeholders (G2).
Verified the full integration suite green locally (Engine 29.5.3). Watching the new lane on this PR.
🤖 Generated with Claude Code