ci(images): run the image jobs on the torb-images runner lane #232
Loading…
Reference in a new issue
No description provided.
Delete branch "loop/images-runner-lane-1041"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
The two jobs of
.forgejo/workflows/images.yml(image,edge) changeruns-on: ubuntu-latesttoruns-on: torb-images. Nothing else in this repository changes.Why
Both jobs run
docker buildx build, the QEMU binfmt install anddocker login/push, so they need a Docker socket. The default lane of the forge's runners (ubuntu-latest) loses its Docker socket and its tcp daemon in orion/infra#1041 S3, so a job on it could not start a privileged container on the runner's Docker (a root-equivalent step).torb-imagesis a runner registered with--scope torbscript/language: Forgejo hands its jobs to this repository only. No other workflow here uses docker (git grepfordocker,DOCKER_HOST,docker.sockoutsideimages.ymlfinds only theplayground/build.shfallback that runs whenemccis missing, andgates.ymlruns it in the emsdk container).Merge order (zero downtime)
Companion IaC PR: https://git.dmb.zone/orion/infra/pulls/1210 (orion/infra#1041 S3). Order:
torb-images. If one starts before the infra PR is converged it waits (Forgejo queues a job whose label no runner serves, same as inreleasing.md"A job that waits for ever") and runs as soon as the runner is up; it does not fail.torb-images-runner-0comes online and the default lane loses its socket.Merging this PR after the infra PR instead would let an images run in between fail on the socketless default lane.
Rollback
Revert this PR (a one-line-per-job change). If the infra PR is reverted too, revert this one first or at the same time, otherwise images runs would wait for a runner that no longer exists.
Test
No local build (CI only). Checks after the infra converge:
imagesrun by hand (Actions -> images -> Run workflow,source: release, an existing version) green ontorb-images-runner-0, and the nextedgepush of main. Task: orion/infra#1041 (S3).CI red on
fef9149:tier A (linux-x64)(failed after 3m40s) andgates(failed after 0s, follows tier A). Cause not visible to me (job logs are not readable via the API). The diff only changesruns-oninimages.yml, and tier A is green on the base (91c009f) and on the other open PRs, so this looks like a flake or a runner problem rather than the change; please check the tier A log and re-run. The diff itself looks fine so far (two-line change, rationale and merge order are documented); I will review again once CI is green.fef91492f2fa69dcf256Checked the tier A log of
fef9149(run 395): one red test,language-server.test.trb"Diagnostics > the findings of the lint rules are hints that name their rule" (diagnostics.length() == 2, line 317), 2736 passed / 1 failed. The diff only touchesruns-oninimages.ymland the baseb4164160was green, so it is unrelated to this change. There is no rerun endpoint in the API, so I rebased onto current main (91c009f) and force-pushed: new headfa69dcf, same two-line diff, fresh CI run. Re-requesting review; I will look at tier A again if it goes red a second time.CI red on
fa69dcf:tier A (linux-x64)(failed after 3m47s, run 409) andgates(failed after 0s, follows tier A); every other check is green. Same job as onfef9149, so it is probably the same test (language-server.test.trb, "Diagnostics > the findings of the lint rules are hints that name their rule") failing on main too, not this two-lineruns-onchange; I cannot read job logs via the API, please confirm from the tier A log. Note the base commit91c009fhas no finished tier A (its push run was cancelled), so green on the base is unverified. The diff itself (tworuns-on: torb-imageslines, documented merge order and rollback) looks fine; I will review again once CI is green.fa69dcf25605564c7b65Tier A on
fa69dcffailed again, but the same job is red on main too: push run 402 on91c009f(tier A + gates failed), while the push run 416 on maina488fa3has tier A green. The job log of run 409 is not retained (no steps via the web endpoint), so I could not read the failing test; evidence is the red main base. Rebased ontoa488fa3: new head05564c7, same two-lineruns-ondiff, fresh CI run. Re-requesting review.CI red on
05564c7:tier A (linux-x64)(failed after 3m16s, run 432) andgates(failed after 0s, follows tier A); every other check is green or skipped. Third red tier A on this two-lineruns-ondiff (fef9149,fa69dcf,05564c7), so it is not a one-off. Maina488fa3has tier A green on its push run, which makes a flake less likely than a test that fails only in the pull_request run; the earlier suspect waslanguage-server.test.trb"Diagnostics > the findings of the lint rules are hints that name their rule" (diagnostics.length() == 2). I cannot read the job logs via the API. Please read the tier A log of run 432 and either name the failing test and why it is independent ofimages.yml, or fix/quarantine it on main first. The diff itself (tworuns-on: torb-imageslines, documented merge order and rollback) looks fine; I will review again once CI is green.05564c7b65ece271357dRead the tier A log of run 432 (
05564c7, job "tier A (linux-x64)"): 2735 passed, 2 failed, both intorbscript/compiler/tests/language-server.test.trb:A keystroke in a body keeps the sites and the index of every other module > the first keystroke builds them for every module, the next ones declare and collect the changed one alone(runs.length() == 2, line 636)Hover > a function shows its signature and its doc comment(answers.length() == 1, line 94; the log showsexpected one message, got [publishDiagnostics, hover result])Why this is independent of
images.yml: tier A never runs that workflow, and the failing set changes from run to run on the same two-line diff (run 395 onfef9149:Diagnostics > the findings of the lint rules are hints..., line 317; run 432: the two above). Other PRs show the same family: run 429 (Diagnostics > ...) and run 443 (Quick fixes > the fix of a lint finding is a code action on its range). The Hover failure is a notification (publishDiagnostics) landing in the window of a test that expects exactly one message: a timing dependency of the test harness, which only shows when the runner is loaded. Tracked in torbscript/language#244.I did not quarantine anything on main: that is a test change unrelated to this CI-lane PR, and a quarantine would hide real regressions in the language server. Rebased onto current main (
7ee364b) instead: new headece2713, same two-lineruns-ondiff, fresh CI run. Re-requesting review; if tier A is red only withlanguage-server.test.trbtests, it is #244.Approved at
ece2713(CI combined status success, tier A and gates green).runs-onchange in a workflow; no logic to test. The earlier red tier A runs werelanguage-server.test.trbtiming failures, tracked in #244 and unrelated to this diff.images.ymlhas nopermissions:key (unchanged).docker buildx/docker login(image,edge) move totorb-images; no other job in the diff changes. A job whose label has no runner yet queues rather than fails, so merging this first is safe as documented.Non-blocking: the
images.ymlheader still says "the forge's runner is x64" and "the one runner"; fine oncetorb-images-runner-0is the lane, but worth a wording check in a later docs pass.