CI: build Windows natively on the windows runner #43

Closed
opened 2026-10-22 11:46:44 +00:00 by mira · 0 comments
Collaborator

Jerry's Windows Forgejo runner is live. It's instance-wide, uses the label windows, runs in host mode, and passed its smoke test (https://git.s1d3sw1ped.com/jerry/win-runner-smoke/actions/runs/1). It has Go 1.27.2, Wails v2.16.0, Node 24.21.0, MinGW gcc, NSIS 3.13, WebView2, fyne v2.3.5, and Redot 26.2 with export templates. There's no MSVC.

All three workflows cross-compile Windows on Linux.

  • pull-request-ci.yaml: the build job (63-112).
  • push-ci.yaml: the build job (67-116).
  • tag-release.yaml: the release job (66-115).

Each job runs on ubuntu-latest, installs gcc-mingw-w64 with apt, and runs "Build for windows" with GOOS: windows and CC: x86_64-w64-mingw32-gcc. Every fyne install uses @latest (pull-request-ci 54, 84; push-ci 58, 88; tag-release 57, 88).

#38 already covers pinning the fyne CLI and the toolchain preflight. This issue lands with or after #38 so the two don't fight.

What to do

  • Split each "Build for windows" step into its own job on runs-on: windows that runs fyne build --os=windows natively, with the same output name.
  • In tag-release.yaml, the release step collects the Windows binary from that job's artifact.
  • Remove the mingw apt install and the cross CC from the Linux jobs only where they were there for Windows. Keep what the Linux build and lint need.
  • Pin the fyne CLI to v2.3.5 everywhere instead of @latest.

Acceptance

  • The Windows jobs use runs-on: windows.
  • The native Windows build is green on that runner, with a run link in the PR.
  • Every go install fyne.io/fyne/v2/cmd/fyne uses @v2.3.5 and none uses @latest.
  • Linux jobs are unchanged.
  • One PR against the default branch. Blake has to GO the CI config before Linus merges.
  • If the runner is missing a toolchain piece, ask Jerry for it. Don't install it by hand in the workflow or on the runner.
Jerry's Windows Forgejo runner is live. It's instance-wide, uses the label `windows`, runs in host mode, and passed its smoke test (https://git.s1d3sw1ped.com/jerry/win-runner-smoke/actions/runs/1). It has Go 1.27.2, Wails v2.16.0, Node 24.21.0, MinGW gcc, NSIS 3.13, WebView2, fyne v2.3.5, and Redot 26.2 with export templates. There's no MSVC. All three workflows cross-compile Windows on Linux. - **pull-request-ci.yaml:** the `build` job (63-112). - **push-ci.yaml:** the `build` job (67-116). - **tag-release.yaml:** the `release` job (66-115). Each job runs on `ubuntu-latest`, installs gcc-mingw-w64 with apt, and runs "Build for windows" with `GOOS: windows` and `CC: x86_64-w64-mingw32-gcc`. Every `fyne` install uses `@latest` (pull-request-ci 54, 84; push-ci 58, 88; tag-release 57, 88). #38 already covers pinning the fyne CLI and the toolchain preflight. This issue lands with or after #38 so the two don't fight. ## What to do - Split each "Build for windows" step into its own job on `runs-on: windows` that runs `fyne build --os=windows` natively, with the same output name. - In tag-release.yaml, the release step collects the Windows binary from that job's artifact. - Remove the mingw apt install and the cross `CC` from the Linux jobs only where they were there for Windows. Keep what the Linux build and lint need. - Pin the fyne CLI to v2.3.5 everywhere instead of `@latest`. ## Acceptance - [ ] The Windows jobs use `runs-on: windows`. - [ ] The native Windows build is green on that runner, with a run link in the PR. - [ ] Every `go install fyne.io/fyne/v2/cmd/fyne` uses `@v2.3.5` and none uses `@latest`. - [ ] Linux jobs are unchanged. - [ ] One PR against the default branch. Blake has to GO the CI config before Linus merges. - [ ] If the runner is missing a toolchain piece, ask Jerry for it. Don't install it by hand in the workflow or on the runner.
linus closed this issue 2026-10-22 23:34:08 +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/SwipedModSwitcher#43
No description provided.