Skip to content

Pin generated workflows to ubuntu-24.04 - #123

Open
arvida wants to merge 1 commit into
mainfrom
chore/724-pin-runner-image
Open

arvida wants to merge 1 commit into
mainfrom
chore/724-pin-runner-image

Conversation

@arvida

@arvida arvida commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Needs Arvid's decision before merge. This is the pinning option from localheroai/localhero-ai#724, prepared so it is ready if you want it. Nothing is broken on Ubuntu 26 today (see below), so merging is a policy choice, not a fix.

Why

GitHub moves ubuntu-latest to the Ubuntu 26 image between October 19 and November 19. The workflow init writes lives in the customer's repository, so if a future image changes the toolchain under it (the Django path installs gettext from apt), we cannot fix the file for them. Pinning ubuntu-24.04 keeps that toolchain fixed for the two years GitHub supports the image.

Trade-off: pinned workflows age out. In about two years every repo created with this version needs a manual bump, or it stops running when GitHub retires the image.

Change

  • src/utils/github.ts: the generated job uses runs-on: ubuntu-24.04 via a RUNNER_IMAGE constant.
  • Test in tests/utils/github.test.ts (written first, failed on ubuntu-latest).
  • CHANGELOG entry under Unreleased.

Our own CI (.github/workflows/test.yml) stays on ubuntu-latest: breakage there is visible to us and cheap to fix. Existing customer workflows are unchanged either way.

Evidence from Ubuntu 26

django-trial-rig PR localheroai/django-trial-rig#12, run 37839209218, runs-on: ubuntu-26.04 (image ubuntu-26.04 version 20260927.149.1, Ubuntu 26.04.1 LTS), CLI 0.0.80:

  • sudo apt-get install -y -qq gettext installed gettext 0.23.2-1 without an apt-get update
  • actions/setup-python@v5 with 3.12: Successfully set up CPython (3.12.14), pip 26.2.1
  • makemessages --keep-pot -l sv -l ru -l pl: processed all three locales
  • Localhero CLI: Updated 1 keys in 3 languages, commit pushed to the PR branch
  • uv probe job on the same image: setup-uv@v5 installed uv 0.12.24, uv pip install plus uv run python manage.py makemessages updated the .pot and all three .po files

Verified

  • npm test: 82 suites, 1496 tests pass
  • npx tsc --noEmit, npx eslint 'src/**/*.ts': clean
  • Codex review of the diff: no findings

Companion server change for the setup PR: localheroai/localhero-ai#875. If this is approved, the workflow examples on the docs pages and blog posts still say ubuntu-latest and need a follow-up.

- The workflow init writes now uses runs-on: ubuntu-24.04 instead of ubuntu-latest
- A runner image migration can no longer change the toolchain in a file we cannot update in customer repos
- Our own CI stays on ubuntu-latest
- Refs localheroai/localhero-ai#724
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