Open the version bump as a pull request #6

Merged
thatguygriff merged 2 commits from bump-version-by-pull-request into main 2026-08-27 23:57:24 +00:00
Owner

The bump job has never worked. On the 1.2.1 release (run 649) its first step died in two seconds:

shell: sh -e {0}
/var/run/act/workflow/next.sh: 2: set: Illegal option -o pipefail

It is the only job here that runs in a container:, and a container job is handed sh -e {0} rather than the bash the runner gives its own jobs. Dash has no pipefail, and no 10# either, so the arithmetic on the next line would have failed the same way. The job now asks for bash, which node:22 carries.

That fix alone would only have moved the failure along: the last step pushes straight to main, which had never run once and needs the token to be allowed past whatever protects the branch — the reason VERSION_BUMP_TOKEN was standing by. unsupervised-scheduler has been bumping its version on every release for a while by pushing a branch and opening a pull request with the ordinary task token, so this adopts that.

  • The bump is committed to release/bump-<next> and opened as a pull request against main.
  • VERSION_BUMP_TOKEN is gone; secrets.GITHUB_TOKEN is what scheduler uses and it is enough to push a branch.
  • [skip ci] is gone with it — main is never pushed, so there is no rebuild of the just-published image to suppress. The pull request instead puts the changed package.json through a build before it lands.
  • fetch-depth: 0, matching scheduler: a shallow clone cannot reliably push a branch back.
  • The request body is built by node, not jq — scheduler can use jq because its CI image carries it, and node:22 does not.
  • An HTTP 409 (a pull request for that branch already open, on a release re-run) is success; anything but 201 prints the response and fails.

The second commit sets the tree to 1.2.2 by hand. 1.2.1 has shipped and is immutable, and the job only fires on a tag, so no re-run will do that retroactively.

Verified locally: the YAML parses and the job's four steps resolve, all three run blocks pass bash -n, and the node -e payload builder run with NEXT=1.2.2 RELEASED=1.2.1 emits valid JSON with head: "release/bump-1.2.2". The branch push and the pull-request call can only really be exercised by the next release tag — they are what scheduler does on every release, just from inside a container this time.

🤖 Generated with Claude Code

https://claude.ai/code/session_01XBT25ZDzm453A8XViSRqRB

The `bump` job has never worked. On the 1.2.1 release ([run 649](https://git.unsupervised.ca/Unsupervised/antisocial/actions/runs/649/jobs/2647)) its first step died in two seconds: ``` shell: sh -e {0} /var/run/act/workflow/next.sh: 2: set: Illegal option -o pipefail ``` It is the only job here that runs in a `container:`, and a container job is handed `sh -e {0}` rather than the bash the runner gives its own jobs. Dash has no `pipefail`, and no `10#` either, so the arithmetic on the next line would have failed the same way. The job now asks for bash, which `node:22` carries. That fix alone would only have moved the failure along: the last step pushes straight to main, which had never run once and needs the token to be allowed past whatever protects the branch — the reason `VERSION_BUMP_TOKEN` was standing by. `unsupervised-scheduler` has been bumping its version on every release for a while by pushing a branch and opening a pull request with the ordinary task token, so this adopts that. - The bump is committed to `release/bump-<next>` and opened as a pull request against main. - `VERSION_BUMP_TOKEN` is gone; `secrets.GITHUB_TOKEN` is what scheduler uses and it is enough to push a branch. - `[skip ci]` is gone with it — main is never pushed, so there is no rebuild of the just-published image to suppress. The pull request instead puts the changed `package.json` through a build before it lands. - `fetch-depth: 0`, matching scheduler: a shallow clone cannot reliably push a branch back. - The request body is built by `node`, not `jq` — scheduler can use jq because its CI image carries it, and `node:22` does not. - An HTTP 409 (a pull request for that branch already open, on a release re-run) is success; anything but 201 prints the response and fails. The second commit sets the tree to 1.2.2 by hand. 1.2.1 has shipped and is immutable, and the job only fires on a tag, so no re-run will do that retroactively. Verified locally: the YAML parses and the job's four steps resolve, all three `run` blocks pass `bash -n`, and the `node -e` payload builder run with `NEXT=1.2.2 RELEASED=1.2.1` emits valid JSON with `head: "release/bump-1.2.2"`. The branch push and the pull-request call can only really be exercised by the next release tag — they are what scheduler does on every release, just from inside a container this time. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01XBT25ZDzm453A8XViSRqRB
thatguygriff added 2 commits 2026-08-27 23:36:02 +00:00
The bump job has never once worked. Its first step died in two seconds on
`set: Illegal option -o pipefail` -- it is the only job here that runs in a
container, and a container job is handed `sh -e {0}` rather than the bash the
runner gives its own jobs. Dash has no `pipefail`, and no `10#` either, so the
arithmetic on the line after would have gone the same way. It now asks for
bash, which node:22 carries.

That would have got the job as far as its last step, which pushed straight to
main. Nothing had ever exercised that, and it needs the token to be allowed
past whatever protects the branch -- hence the second token, VERSION_BUMP_TOKEN,
standing by for where it is not. unsupervised-scheduler has been bumping its
version on every release for a while by pushing a branch and opening a pull
request with the ordinary task token, so that is what this does now. The second
token is no longer needed, and neither is `[skip ci]`: main is never pushed, so
there is no build of the just-published image to suppress. The pull request
puts the changed package.json through a build before it lands.

scheduler builds the request body with jq because its CI image carries jq. This
one is node:22, where node is the thing that certainly is there.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01XBT25ZDzm453A8XViSRqRB
Set the working version to 1.2.2
CI / Typecheck, test, build (pull_request) Successful in 14s
Publish / Build and push (pull_request) Successful in 20s
Publish / Move the working version on (pull_request) Skipped
43dc10e1dc
1.2.1 shipped, so the tree was left on a version that is published and
immutable, which is the thing the bump job exists to prevent. It failed before
it got that far. Done by hand here, once: the job only fires on a tag, so no
re-run of it will do this retroactively.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01XBT25ZDzm453A8XViSRqRB
thatguygriff merged commit 3ff7375320 into main 2026-08-27 23:57:24 +00:00
thatguygriff deleted branch bump-version-by-pull-request 2026-08-27 23:57:24 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Unsupervised/antisocial#6