Files
Brad Anderson 18fa177049
tests / runner-env (confined) (pull_request) Successful in 3m6s
tests / tests (pull_request) Successful in 1m53s
tests / compose-schema (pull_request) Successful in 1m34s
tests / runner-env (privileged) (pull_request) Successful in 1m24s
Point the units at the directory the installer actually uses
Reported as a degraded host after a restart, and the status line named it
exactly: ExecStart=/usr/local/bin/dejima-ci-allowlist, status=203/EXEC. The
programs are installed to /usr/local/sbin. The unit had the path wrong since it
was written.

So the refresh timer has never worked on any host built by this. That is worse
than a failing unit: the whole point of reading the allowlist from main is that
merging a domain reaches the runners without anyone doing anything, and instead
it only ever moved when someone ran the command by hand. The one visible sign
was a service in the failed list, which reads as a fault in the thing it runs
rather than as the file naming it.

The cause is one this project keeps warning about and then committed itself: a
path written down twice. The units carry @@BIN_DIR@@ now and install.sh
substitutes what it is actually using, so there is one copy and it is the one
that placed the file.

It also checks. After writing each unit it resolves the ExecStart and refuses
to finish if that program is not executable, because the alternative is finding
out at the next timer tick - or, as here, at a restart weeks later.

Three tests: no unit hard-codes a path, every ExecStart resolves to a program
bin/ actually ships, and install.sh both substitutes the marker and keeps the
check. Also ran install.sh end to end against stubs with BIN_DIR overridden and
confirmed the installed units name that directory, that the programs there are
executable, and that no marker survives.

87 ok, 0 failed.
2026-08-08 19:54:22 -07:00
..
2026-08-05 12:21:59 -07:00