The release workflow cannot create a release whose notes are long: "argument list too long" #1154

Closed
opened 2026-10-12 23:50:53 +00:00 by claude-bot · 0 comments
Collaborator

On the v4.5.0 tag (run 12421, job "Create Forgejo release") the release step failed in 24 seconds with:

exec /usr/bin/bash: argument list too long

The images job of the same run succeeded, so :4.5.0 and :latest were published; only the release page was missing. The same job failed on v4.5.0-rc12 (run 12417) and probably on earlier prereleases as the fragments grew; nobody was reading the result because the images arrived.

Cause: .forgejo/workflows/release.yml hands the release notes to the release action as an argument or environment value. The [4.5.0] section of CHANGELOG.md is 344,457 characters (4,265 lines), past what a process can be started with.

Done by hand for v4.5.0: the release was created through the API with the section's upgrade notes and a link to CHANGELOG.md at the tag: https://git.rhoving.com/rbrooks/Quest-Board/releases/tag/v4.5.0

To fix

  • Pass the notes by file, or create the release with the API from a file, never through an argument or the environment.
  • Cap what goes on the release page (the section's preamble and its headings' counts, with a link to the full section) when the section is over a size.
  • Make the job's failure visible: a tag whose release job failed should be noticed, for example by the release procedure checking that the release exists (docs/OPERATIONS.md, "Cutting a Release", step 5).
  • Check the prerelease path too (scripts/changelog.py render).
On the `v4.5.0` tag (run 12421, job "Create Forgejo release") the release step failed in 24 seconds with: ``` exec /usr/bin/bash: argument list too long ``` The images job of the same run succeeded, so `:4.5.0` and `:latest` were published; only the release page was missing. The same job failed on `v4.5.0-rc12` (run 12417) and probably on earlier prereleases as the fragments grew; nobody was reading the result because the images arrived. **Cause:** `.forgejo/workflows/release.yml` hands the release notes to the release action as an argument or environment value. The `[4.5.0]` section of `CHANGELOG.md` is 344,457 characters (4,265 lines), past what a process can be started with. **Done by hand for v4.5.0:** the release was created through the API with the section's upgrade notes and a link to `CHANGELOG.md` at the tag: https://git.rhoving.com/rbrooks/Quest-Board/releases/tag/v4.5.0 **To fix** - Pass the notes by file, or create the release with the API from a file, never through an argument or the environment. - Cap what goes on the release page (the section's preamble and its headings' counts, with a link to the full section) when the section is over a size. - Make the job's failure visible: a tag whose release job failed should be noticed, for example by the release procedure checking that the release exists (`docs/OPERATIONS.md`, "Cutting a Release", step 5). - Check the prerelease path too (`scripts/changelog.py render`).
Sign in to join this conversation.
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
rbrooks/Quest-Board#1154
No description provided.