Repository navigation
feat: let a bake reach more than one service - #798
Merged
Merged
Conversation
host-alias mapped one name to one address, which was enough while Chart's renderer was the only service a site pointed MediaWiki at during a bake. actions/bake takes a hosts list instead -- a "name=address" a line -- so a site with a second service, such as a Shellbox, gives each one its own line. It defaults to host.docker.internal=host-gateway, which is what host-alias defaulted to, so a site with one service sets nothing. A line without "=" is a name with nowhere to go, and the action says so rather than baking against a service it cannot reach. The input is unreleased -- 1.2.0 has not gone out -- so no site carries the old spelling. The two workflows that dogfood the action move to the new name here; nothing else changes for a one-service site. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HnGL1B3zcDSmmc9XBAPcWg
… one The view-source tab's width was measured once, immediately after an attribute assertion, and read 0 often enough to turn smoke red on three different commits in one afternoon -- one of which passed on a re-run of the same commit, which is what says it is the measurement and not the tab. The tab is fine by the time anyone looks: its href and its icon mask both assert cleanly in the same test, and the failure is always a flat 0 against a history tab that has already been laid out. The skin sizes the page actions once the styles it is still fetching land, and a run where that lands a moment later measured a tab that was not sized yet. So poll instead of measuring the once. The assertion is the same ratio it was; it is just allowed to arrive. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HnGL1B3zcDSmmc9XBAPcWg (cherry picked from commit 406121f) (cherry picked from commit 8616083) (cherry picked from commit 3ac0f7e)
lens0021
marked this pull request as ready for review
September 22, 2026 04:18
claude Bot
pushed a commit
that referenced
this pull request
Sep 22, 2026
<!-- ccr-projects-attribution: {"github_login":"lens0021"} -->
_Requested by **lens0021** · [project
thread](https://claude.ai/code/project/chan_01EZp6MxSW4HYd9cdG5YMsLF?thread=cmsg_01EZp6MxSW4HYd9cdG5YMsLF3vYPtZMjxWAZ7gwm8PSJ7P)_
Score is the fourth extension this site documents and the second of
Chart's kind: it wants a program of its own beside the bake. It does not
run LilyPond itself — it sends the command to a **Shellbox**, which is
what its own message asks for, since LilyPond has had no safe mode since
2.23.12 and a `<score>` is a program it will run.
> **This is the Score half of the original #796.** The "let a bake reach
more than one service" capability was split into #798, which has since
merged; this branch is rebased onto `main` and is now Score-only, a
single commit.
## The Shellbox comes from upstream
Wikimedia already publishes one. `mediawiki-libs-shellbox` builds a
`score83` flavour — LilyPond from bookworm-backports, Ghostscript,
ImageMagick, and the Noto fonts lyrics want — and runs it as the
`shellbox` service in `operations/deployment-charts`. This takes that
image and lets them keep it up to date, rather than wikven maintaining a
Dockerfile full of LilyPond.
It is php-fpm alone, so it speaks FastCGI rather than HTTP and upstream
puts an httpd in front of it. A `services.json` entry can name an
`image` to pull and a `sidecar` to run in the service's own network
namespace — which is how the two share a localhost in a pod. One address
still reaches the pair.
An entry may also name a `probe`, and naming one means that path has to
answer **200** rather than merely answer. An httpd says 502 on its own
while what is behind it is still starting, and `/healthz` reaches
Shellbox through the whole chain, so it is the readier signal.
## Two quiet failures, documented
Both send the build down the local path, where a bake has no LilyPond,
so the page fills with an error instead of music:
- The key under `ShellboxUrls` is `score`, the service. It is not
`score-lilypond`, which is the route.
- `ShellboxSecretKey` is not optional even though MediaWiki lets it be:
without it, `getUrl()` returns null and the command runs locally.
A score that cannot be engraved is published as an error box with the
build none the wiser, as a chart was, so `score-error-category` joins
`WikvenFailOnCategories`.
## Checks
- The bake sends four requests to the Shellbox, and the page comes back
with an `<svg>` and a PNG beside it, both files the build wrote.
- Broken on purpose: the `ShellboxUrls` route name, then the missing
secret — each sent the work back to the local path with nothing said,
which is what the page now warns about.
- All 28 bake assertions pass, verified end to end in CI: the upstream
image pulled, the sidecar attached, `/healthz` answered, and the two
bakes stayed byte-identical.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01HnGL1B3zcDSmmc9XBAPcWg
Co-authored-by: Claude <noreply@anthropic.com>
lens0021
pushed a commit
that referenced
this pull request
Sep 27, 2026
🤖 I have created a release *beep* *boop* --- ## [1.2.0](v1.1.0...v1.2.0) (2026-09-24) ### Features * let a bake reach more than one service ([#798](#798)) ([2d25205](2d25205)) * say above the tables what baked the site ([#774](#774)) ([7f36389](7f36389)) * say what built a site, in the footer of every page ([#799](#799)) ([2b17d0b](2b17d0b)) * say what the translations phase spends its time on ([#800](#800)) ([eb78cfa](eb78cfa)) ### Bugfixes * copy the pictures an extension serves out of its own directory ([#787](#787)) ([541a21a](541a21a)) * give a chart's identifiers numbers of the page's own ([#782](#782)) ([659d8dd](659d8dd)) * import again, in a fresh boot, the pages that waited on another page ([#772](#772)) ([1a58d19](1a58d19)) * name the page an import refuses instead of ending in a trace ([#765](#765)) ([8506b52](8506b52)) * turn off JsonConfig's cache for a build that makes what it reads ([#770](#770)) ([feff623](feff623)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This was referenced Sep 27, 2026
This was referenced Oct 9, 2026
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by lens0021 · project thread
Before:
actions/baketook a singlehost-alias, one name mapped to one address — enough while Chart's renderer was the only service a site pointed MediaWiki at during a bake.After: it takes a
hostslist, aname=addressto a line, so a site with a second service gives each one its own line.What this is
This is the "let a bake reach more than one service" half of the original combined change, split out so it stands on its own — it is a capability of the released
actions/bake, independent of any one site's services.It defaults to
host.docker.internal=host-gateway, exactly whathost-aliasdefaulted to, so a site with one service sets nothing and behaves as before. A line without=is a name with nowhere to go, and the action fails loudly rather than baking against a service it cannot reach.The input is unreleased — 1.2.0 has not gone out — so no site carries the old spelling. The two workflows that dogfood the action (
deploy-docs,pr-preview) move to the new name here;smokehand-rolls--add-hostand does not use this input, so it is untouched.Split
The Score documentation that motivated this rides on top, in a separate PR (#796, based on this branch), so each lands as its own release-note line. Because the repo hides
docs:from the changelog and surfacesfeat:, splitting also puts this capability correctly under Features rather than burying it inside a docs entry.Note on the last commit
The
test:commit on top is the Citizen flake fix from #797, carried here so this PR — and #796 stacked on it — is green for review. It becomes a no-op once #797 merges.🤖 Generated with Claude Code
https://claude.ai/code/session_01HnGL1B3zcDSmmc9XBAPcWg