deploy: mount smoke's /data world-writable so the image can actually boot
cloud's release has been blocked for six consecutive runs. The smoke gate
sits before `Tag the release` and the universe pin, so nothing has shipped:
listen unix /data/credz.sock: bind: permission denied
open /data/gateway.db.cek.lock: permission denied
open sqlite "/data/audit-kms.db": ... permission denied
zip: Load(kms): exited before listening: exit status 1
zip: Load(pubsub): exited before listening: exit status 1
zip: Load(kafka): exited before listening: exit status 1
SMOKE FAIL: never reached listening
The image runs as USER 65532:65532 (Dockerfile). A bare `--tmpfs /data:rw`
lands root-owned 0755 on the runner's dind daemon, so every /data write is
refused. The credz broker dies first and every service behind it follows, so
the log reads like three独 service failures when it is one mount.
This header already promised "a writable /data" for the smoke env; it just
was not one.
Reproduced and fixed INSIDE a git-runner, which matters — Docker Desktop's
tmpfs defaults differ and report the broken form as already writable, so a
laptop test says the fix is a no-op:
docker run --rm --tmpfs /data:rw --user 65532:65532 alpine:3 \
sh -c 'touch /data/x && echo WRITABLE || echo DENIED'
git-runner: DENIED mode=1777: WRITABLE
macOS: WRITABLE (false negative)
Co-authored-by: Hanzo Dev <dev@hanzo.ai>
This commit is contained in:
@@ -224,7 +224,20 @@ jobs:
|
||||
|
||||
docker run --rm \
|
||||
--entrypoint /bin/sh \
|
||||
--tmpfs /data:rw \
|
||||
# mode=1777 is load-bearing. The image runs as USER 65532:65532 and
|
||||
# a bare `--tmpfs /data:rw` lands root-owned 0755 on the runner's
|
||||
# dind daemon, so EVERY /data write is refused — the gateway CEK
|
||||
# lock, the audit sqlite, and `listen unix /data/credz.sock`. With
|
||||
# the credz broker dead, kms/pubsub/kafka all fail to load and the
|
||||
# smoke never reaches "zip listening". Sticky-world-writable like
|
||||
# /tmp, not uid=65532, so it survives a USER change.
|
||||
#
|
||||
# Verify inside a runner, NOT on a laptop — Docker Desktop's tmpfs
|
||||
# defaults differ and report this as already writable:
|
||||
# docker run --rm --tmpfs /data:rw --user 65532:65532 alpine:3 \
|
||||
# sh -c 'touch /data/x && echo WRITABLE || echo DENIED'
|
||||
# git-runner: DENIED mode=1777: WRITABLE
|
||||
--tmpfs /data:rw,mode=1777 \
|
||||
-e CLOUD_DATA_DIR=/data \
|
||||
-e CLOUD_ENV=smoke \
|
||||
-e CLOUD_KMS_MASTER_KEY_REF="$(head -c 32 /dev/urandom | base64 -w0)" \
|
||||
|
||||
Reference in New Issue
Block a user