Skip to content

ci: G1 — real-daemon integration lane - #17

Merged
gustavobertoi merged 1 commit into
mainfrom
nightly/G1
Jun 29, 2026
Merged

ci: G1 — real-daemon integration lane#17
gustavobertoi merged 1 commit into
mainfrom
nightly/G1

Conversation

@gustavobertoi

Copy link
Copy Markdown
Contributor

Chunk G1 (M7, pulled early) — integration CI lane

Adds the integration job: go test -tags=integration -race ./... against ubuntu-latest's Docker. Activates the //go:build integration tests already written for internal/{docker,health,hooks} (read-only ContainerInspect/Logs, the readiness Poll over healthy+unhealthy containers, a real compose exec hook) — 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

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
gustavobertoi merged commit 9b6dfca into main Jun 29, 2026
10 checks passed
@gustavobertoi
gustavobertoi deleted the nightly/G1 branch June 29, 2026 14:17
gustavobertoi added a commit that referenced this pull request Jun 29, 2026
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant