Skip to content

ci: adopt the gt-managed pipeline - #47

Closed
pedromvgomes wants to merge 2 commits into
mainfrom
chore/gt-pipeline
Closed

ci: adopt the gt-managed pipeline#47
pedromvgomes wants to merge 2 commits into
mainfrom
chore/gt-pipeline

Conversation

@pedromvgomes

Copy link
Copy Markdown
Owner

Seventh repository onto gt's pipeline. Do not merge yet — see below.

What moved

Was Now
ci.ymllint, build ci-build.yml
ci.ymltest ci-test.yml, now with -race and a coverage profile
release.ymlgoreleaser cd-publish.yml, keeping the v* tag pattern

The v* pattern is preserved rather than narrowed to v*.*.* — this repository has always released on it, and uniformity is not a reason to change when a repo ships.

Two things changed rather than moved

The suite gains -race and a coverage profile, uploaded as gt-coverage. That is what lets the bulwark stage consume it instead of running the tests again, so the repo gets a coverage gate without paying for a second suite run.

goreleaser now declares contents: write on the job. release.yml had it at workflow level, and extracting the job alone drops it silently — actionlint is perfectly happy, and the failure would only appear when a real release tried to create itself. That trap has now bitten twice in this rollout.

Expected to fail until gt v1.0.0 ships

Callers pin reusable-*.yml@v1, which does not exist yet — the workflow fails to resolve with zero jobs started.

Before merging

Branch protection must move to exactly one required check, ci-gate, in the same window as the merge. gt repo settings apply does this.

Moves this repository onto gt's centrally-owned CI/CD orchestration. gt owns
the entry points and the shared stages; the ci-*/cd-* files hold this repo's
own work and gt never touches them again.

ci.yml's lint and build jobs become ci-build, and test becomes ci-test.
release.yml's goreleaser job becomes cd-publish, keeping the broader `v*` tag
pattern this repository has always released on rather than being narrowed to
v*.*.* for uniformity's sake.

Two things changed rather than moved:

The suite now runs with -race and writes a coverage profile, uploaded as
gt-coverage. That is what lets the bulwark stage consume it instead of running
the tests a second time, so the repository gains a coverage gate without paying
for a second suite run.

goreleaser's contents: write is now declared on the job. release.yml had it at
workflow level, and extracting the job alone would have dropped it silently —
the release would have failed at the point of creating itself.

gt and agentic-toolkit are the two halves of the same idea: gt governs how a
repository is shaped, agtk governs what its agents know. This repository being
governed by the other is the point, not a coincidence.

Branch protection needs exactly one check after this: `ci-gate`.
bulwark no longer takes tests-mode or go-report as action inputs; which side
produces coverage is coverage.source in .bulwark.yml. Without this the removed
inputs would be silently ignored and bulwark would re-run the suite ci-test
already ran.
@pedromvgomes

Copy link
Copy Markdown
Owner Author

Superseded by #48, which is the same onboarding rebased onto current main and with the CI jobs actually moved out of ci.yml.

Recording this branch's tip so nothing here is lost: f523d49dee7b7aeb5acadf23492a7a0df1f1e461.

The only files here that #48 does not carry are cd-orchestration.yml and cd-publish.yml. That is deliberate: release.yml already publishes on v* and gt's CD would fire on v*.*.*, so enabling both would give this repo two release pipelines — the same trap the CI half of this PR fell into. pipeline.cd.enabled is false in #48; if publishing moves under gt later, it moves as a migration, not as a second pipeline appearing beside the first.

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