ci(release): the build jobs run on the Forgejo runner #116

Merged
HumanBean merged 1 commit from HumanBean/Longshot:ci/runner-build-fixes into main 2026-11-13 05:56:03 +00:00
Owner

Why

The first nightly release on the Forgejo runner failed in its build jobs, so no nightly was published: the Windows back end looked for the Vulkan headers on our own forge, the AppImage job had no Node for its actions, and dav1d's download hit one refused connection.

What changed

  • checkouts: scripts/fetch_commit.sh (a repository URL, a pinned commit and a folder) replaces actions/checkout with repository: (on Forgejo that names a repository of this instance) in build-windows.yml, vulkan-dlss.yml and ci.yml: the same pinned commits, fetched from GitHub, with no token sent. Tested in act-24.04 on the runner's dind.
  • appimage: build-linux.yml installs Node.js v24.22.3 (pinned by SHA-256, only bin/node) in the ubuntu:22.04 container before the first action. The exit 127 was the checkout step itself (exec: "node": executable file not found); "Package installs without fsync" passed in the log. Tested in ubuntu:22.04 on the dind: checkout's dist runs.
  • dav1d: scripts/windows/dav1d.sh adds --retry-all-errors, then falls back to VideoLAN's GitHub mirror of the tag (it unpacks to the same pinned tree, 01ecdd01…). scripts/linux/deps.sh's curl retries refused connections too.
  • artifacts: each upload (build-linux.yml, build-windows.yml) and download (release.yml) is tried once more when it fails. Forgejo signs artifact links with ROOT_URL, which goes through Cloudflare, and the action does not resend a block that fails.
  • release notes: scripts/release.py notes() gives git-cliff no range when there is no tag before it and no first commit. This is the same change as LongshotLauncher's PR, and both copies of the file stay byte-identical, tests/test_release.py too.
  • docs: docs/forgejo-runners.md.

Flags and settings

None.

Measurements

main: 94bbc205 (2026-11-13, the failed nightly)
this PR: ci/runner-build-fixes @ 5aa09e05 (rebased on main 3cbf12e8)

build job on the runner main @ 94bbc205 this PR @ 5aa09e05 (these runs were at 9f31a214, the same changes before the rebase onto 3cbf12e8)
Longshot Builder zip passed passed
vulkan failed (Vulkan-Headers not found on the forge) was running, past the header fetches, when testing switched to fix-forward
appimage failed (no node) was running, past checkout, when testing switched to fix-forward
dav1d failed (curl 7) not reached

tests/run_all.py: 493 passed, 2 failed (test_bake_portability, test_builder_log_read_only, which also fail on main), the same on main and on this branch, in two interleaved runs each.

Testing

Tested: the new steps in the runner's own images (see above), and tests/run_all.py.

Not tested: a full release run. Main's nightly will verify it after the merge.

Needs other testers: None.

Screenshots

Nothing on screen

Risk and rollback

CI only. Reverting the commit is enough.

Reviewer notes

This PR's runs on the runner used temporary pull_request triggers on build-linux.yml and build-windows.yml. They have been removed.

Issues

None.

Checklist

For everyone

  • One topic.
  • The title is a Conventional Commit (type(scope): description).
  • Rebased on current main.
  • python -I -B tests/run_all.py run and passing (any failure that also fails on main is named above).
  • Tested in the game, or what wasn't is named under Testing.
  • Testing filled in: what was tested, what wasn't, and what needs other testers (with test requests).
  • Measured: main and this PR at named commits, on the same PC, scene and settings, at least 2 interleaved runs each, the median reported.
  • No game files, dumps, build output or generated files.
  • third_party/ untouched (a new folder with a PROVENANCE.md instead).
  • The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled.
## Why The first nightly release on the Forgejo runner failed in its build jobs, so no nightly was published: the Windows back end looked for the Vulkan headers on our own forge, the AppImage job had no Node for its actions, and dav1d's download hit one refused connection. ## What changed - checkouts: `scripts/fetch_commit.sh` (a repository URL, a pinned commit and a folder) replaces `actions/checkout` with `repository:` (on Forgejo that names a repository of this instance) in `build-windows.yml`, `vulkan-dlss.yml` and `ci.yml`: the same pinned commits, fetched from GitHub, with no token sent. Tested in act-24.04 on the runner's dind. - appimage: `build-linux.yml` installs Node.js v24.22.3 (pinned by SHA-256, only `bin/node`) in the `ubuntu:22.04` container before the first action. The exit 127 was the checkout step itself (`exec: "node": executable file not found`); "Package installs without fsync" passed in the log. Tested in ubuntu:22.04 on the dind: checkout's dist runs. - dav1d: `scripts/windows/dav1d.sh` adds `--retry-all-errors`, then falls back to VideoLAN's GitHub mirror of the tag (it unpacks to the same pinned tree, `01ecdd01…`). `scripts/linux/deps.sh`'s curl retries refused connections too. - artifacts: each upload (`build-linux.yml`, `build-windows.yml`) and download (`release.yml`) is tried once more when it fails. Forgejo signs artifact links with ROOT_URL, which goes through Cloudflare, and the action does not resend a block that fails. - release notes: `scripts/release.py` `notes()` gives git-cliff no range when there is no tag before it and no first commit. This is the same change as LongshotLauncher's PR, and both copies of the file stay byte-identical, `tests/test_release.py` too. - docs: `docs/forgejo-runners.md`. ## Flags and settings None. ## Measurements main: 94bbc205 (2026-11-13, the failed nightly) this PR: ci/runner-build-fixes @ 5aa09e05 (rebased on main 3cbf12e8) | build job on the runner | main @ 94bbc205 | this PR @ 5aa09e05 (these runs were at 9f31a214, the same changes before the rebase onto 3cbf12e8) | |---|---|---| | Longshot Builder zip | passed | passed | | vulkan | failed (Vulkan-Headers not found on the forge) | was running, past the header fetches, when testing switched to fix-forward | | appimage | failed (no node) | was running, past checkout, when testing switched to fix-forward | | dav1d | failed (curl 7) | not reached | `tests/run_all.py`: 493 passed, 2 failed (test_bake_portability, test_builder_log_read_only, which also fail on main), the same on main and on this branch, in two interleaved runs each. ## Testing **Tested:** the new steps in the runner's own images (see above), and `tests/run_all.py`. **Not tested:** a full release run. Main's nightly will verify it after the merge. **Needs other testers:** None. ## Screenshots Nothing on screen ## Risk and rollback CI only. Reverting the commit is enough. ## Reviewer notes This PR's runs on the runner used temporary `pull_request` triggers on `build-linux.yml` and `build-windows.yml`. They have been removed. ## Issues None. ## Checklist ### For everyone - [x] One topic. - [x] The title is a Conventional Commit (`type(scope): description`). - [x] Rebased on current `main`. - [x] `python -I -B tests/run_all.py` run and passing (any failure that also fails on `main` is named above). - [x] Tested in the game, or what wasn't is named under Testing. - [x] Testing filled in: what was tested, what wasn't, and what needs other testers (with test requests). - [x] Measured: main and this PR at named commits, on the same PC, scene and settings, at least 2 interleaved runs each, the median reported. - [x] No game files, dumps, build output or generated files. - [x] `third_party/` untouched (a new folder with a `PROVENANCE.md` instead). - [x] The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled.
HumanBean force-pushed ci/runner-build-fixes from 9f31a21447
Some checks failed
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been skipped
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been skipped
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been skipped
Third-party parts / The same as upstream (pull_request) Has been skipped
PR description / Description follows the template (pull_request_target) Successful in 3s
Windows builder / Longshot Builder zip (pull_request) Successful in 2m27s
Windows builder / Windows Vulkan back end (llvm-mingw) (pull_request) Successful in 5m53s
Windows builder / dav1d for Windows (llvm-mingw) (pull_request) Successful in 2m51s
CI / Conventional Commit title (pull_request) Successful in 3s
CI / Workflow lint (actionlint) (pull_request) Failing after 4s
Third-party parts / As their notes say (pull_request) Successful in 7s
Linux AppImage / appimage (pull_request) Successful in 11m37s
to 5aa09e050f
Some checks failed
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been skipped
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been skipped
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been skipped
Third-party parts / The same as upstream (pull_request) Has been skipped
CI / Conventional Commit title (pull_request) Successful in 3s
CI / Workflow lint (actionlint) (pull_request) Failing after 4s
Third-party parts / As their notes say (pull_request) Successful in 5s
PR description / Description follows the template (pull_request_target) Successful in 6s
2026-11-13 05:19:09 +00:00
Compare
HumanBean changed title from WIP: ci(release): the build jobs run on the Forgejo runner to ci(release): the build jobs run on the Forgejo runner 2026-11-13 05:20:03 +00:00
HumanBean deleted branch ci/runner-build-fixes 2026-11-13 05:56:03 +00:00
Sign in to join this conversation.
No reviewers
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
MagicBeanDev/Longshot!116
No description provided.