build: Add a toolchain preflight and pin GoReleaser in CI #14

Closed
opened 2026-10-10 21:47:03 +00:00 by mira · 1 comment
Collaborator

teleport needs only Go (go.mod:3) locally, with no toolchain line and no check. CI uses floating refs: actions/setup-go@main (.gitea/workflows/test-pr.yaml:13, release-tag.yaml:17) and goreleaser-action@master with version: 'latest' (release-tag.yaml:20-23), so a tag can break on an upstream push.

Justin's forge rule (2026-10-10): any toolchain that can only have one version installed at a time gets a preflight in the build. On a mismatch the build stops before doing anything, says what it found and what's required, and prints the exact fix. Standard and snippets: https://git.s1d3sw1ped.com/s1d3sw1ped/forge-standards/src/branch/master/forge-toolchain.md (preflight script: https://git.s1d3sw1ped.com/s1d3sw1ped/forge-standards/raw/branch/master/check-toolchain.sh). It follows the design in s1d3sw1ped/AI-Phone#322.

What to do

  • There's no Makefile. Add scripts/check-toolchain.sh from the snippet and a small Makefile whose build depends on it. Run the script in CI after setup-go.
  • The preflight also fails if go.mod's go, toolchain or wails lines differ from HEAD (a silent rewrite), when the repo has a go.mod.
  • Add a line to the README's build section: what's checked and how to fix a mismatch.

Align with the forge standard in the same PR (all patch/minor or CI-only):

  • Add toolchain go1.27.2 under the go 1.27.0 line in go.mod (go.mod:3), so everyone builds on the same patch release and Go fetches it if the local one is older.
  • setup-go @main to @v5 (test-pr.yaml:13, release-tag.yaml:17).
  • goreleaser-action @master to @v6 with version: v2.18.3 (release-tag.yaml:20-23).

Acceptance

  • With a mismatched toolchain, the build stops before doing any work and prints found, required and the fix command. Nothing in the tree changes (git status is clean).
  • With the right toolchain, every build target works as before.
  • Editing a pinned go.mod line away from HEAD is caught.
  • CI passes and runs the preflight.

Out of scope

Major bumps of the CI actions (setup-go v7, setup-node v7, checkout v7, goreleaser-action v7, golangci-lint-action v9): stay on the current standard here; they're being piloted in s1d3sw1ped/vulture#17 first. Node stays on 24 (recheck in November, after 26 becomes LTS on 2026-10-28).

Handoff

One PR against the default branch. Ask Eva for review and don't merge it yourself. If it gets in the way, git revert the merge; nothing else to undo. Line refs are the default branch at bcd1525.

Model: Gemma 26B censored.

teleport needs only Go (go.mod:3) locally, with no toolchain line and no check. CI uses floating refs: `actions/setup-go@main` (.gitea/workflows/test-pr.yaml:13, release-tag.yaml:17) and `goreleaser-action@master` with `version: 'latest'` (release-tag.yaml:20-23), so a tag can break on an upstream push. Justin's forge rule (2026-10-10): any toolchain that can only have one version installed at a time gets a preflight in the build. On a mismatch the build stops before doing anything, says what it found and what's required, and prints the exact fix. Standard and snippets: https://git.s1d3sw1ped.com/s1d3sw1ped/forge-standards/src/branch/master/forge-toolchain.md (preflight script: https://git.s1d3sw1ped.com/s1d3sw1ped/forge-standards/raw/branch/master/check-toolchain.sh). It follows the design in s1d3sw1ped/AI-Phone#322. ## What to do - There's no Makefile. Add `scripts/check-toolchain.sh` from the snippet and a small Makefile whose `build` depends on it. Run the script in CI after setup-go. - The preflight also fails if go.mod's go, toolchain or wails lines differ from HEAD (a silent rewrite), when the repo has a go.mod. - Add a line to the README's build section: what's checked and how to fix a mismatch. Align with the forge standard in the same PR (all patch/minor or CI-only): - Add `toolchain go1.27.2` under the `go 1.27.0` line in go.mod (go.mod:3), so everyone builds on the same patch release and Go fetches it if the local one is older. - setup-go `@main` to `@v5` (test-pr.yaml:13, release-tag.yaml:17). - goreleaser-action `@master` to `@v6` with `version: v2.18.3` (release-tag.yaml:20-23). ## Acceptance - [ ] With a mismatched toolchain, the build stops before doing any work and prints found, required and the fix command. Nothing in the tree changes (`git status` is clean). - [ ] With the right toolchain, every build target works as before. - [ ] Editing a pinned go.mod line away from HEAD is caught. - [ ] CI passes and runs the preflight. ## Out of scope Major bumps of the CI actions (setup-go v7, setup-node v7, checkout v7, goreleaser-action v7, golangci-lint-action v9): stay on the current standard here; they're being piloted in s1d3sw1ped/vulture#17 first. Node stays on 24 (recheck in November, after 26 becomes LTS on 2026-10-28). ## Handoff One PR against the default branch. Ask Eva for review and don't merge it yourself. If it gets in the way, git revert the merge; nothing else to undo. Line refs are the default branch at bcd1525. Model: Gemma 26B censored.
Author
Collaborator

Path update from the Forgejo cutover (10/17-18): this repo's CI workflows moved from .gitea/workflows/ to .forgejo/workflows/ (.forgejo/workflows/release-tag.yaml .forgejo/workflows/test-pr.yaml ). Wherever this issue says .gitea/workflows, edit the file under .forgejo/workflows/ instead, and don't recreate .gitea/. Line numbers may have shifted. Scope and acceptance are unchanged.

Path update from the Forgejo cutover (10/17-18): this repo's CI workflows moved from `.gitea/workflows/` to `.forgejo/workflows/` (.forgejo/workflows/release-tag.yaml .forgejo/workflows/test-pr.yaml ). Wherever this issue says `.gitea/workflows`, edit the file under `.forgejo/workflows/` instead, and don't recreate `.gitea/`. Line numbers may have shifted. Scope and acceptance are unchanged.
linus closed this issue 2026-10-24 08:28:45 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
s1d3sw1ped/teleport#14
No description provided.