diff --git a/playbooks/arbo-runner-uv-symlink.yaml b/playbooks/arbo-runner-uv-symlink.yaml new file mode 100644 index 0000000..2a7a31b --- /dev/null +++ b/playbooks/arbo-runner-uv-symlink.yaml @@ -0,0 +1,41 @@ +# Put `uv`/`uvx` on the irv-ml1-arbo Gitea Actions runner's PATH. +# +# WHY: the runner (`irv-ml1-arbo`, act_runner host-executor running AS lkraven +# under systemd) inherits the bare systemd service PATH — +# /usr/local/bin:/usr/bin:/bin +# — which does NOT include lkraven's `~/.local/bin` or `~/.cargo/bin`. uv is +# installed at /home/lkraven/.local/bin/uv (login-shell only), so the CI step's +# `uv run` failed with `uv: not found` even though uv is present on the box. +# `/usr/local/bin` IS on the systemd PATH, so symlinking uv there makes it +# visible to the runner. This also lets deploy.yml drop the per-run `curl|sh` +# uv bootstrap. Operator-asked ("fix cicd"); comfy-dev (engine owner) authorized +# the specific symlink 2026-06-16 (althing thread 01KV94VTS27B…). +# +# Re-apply this if the runner host is rebuilt or uv is reinstalled elsewhere. +# Sudo because /usr/local/bin is root-owned; uv is owned by lkraven (the runner +# identity), which is who actually executes the symlink at job time — traversal +# of /home/lkraven works for lkraven, not for infra-ops (don't be fooled by an +# infra-ops `env -i` exec test reporting Permission denied; that's the wrong +# identity — verify AS lkraven). + +vars: + uv_src: /home/lkraven/.local/bin/uv + uvx_src: /home/lkraven/.local/bin/uvx + +steps: + - name: Symlink uv into /usr/local/bin (on the systemd PATH) + shell: ln -s {{ uv_src }} /usr/local/bin/uv + creates: /usr/local/bin/uv + + - name: Symlink uvx into /usr/local/bin + shell: ln -s {{ uvx_src }} /usr/local/bin/uvx + creates: /usr/local/bin/uvx + +verify: + - name: uv resolves to the /usr/local/bin symlink under a systemd-like PATH (run AS lkraven) + shell: sudo -u lkraven env -i PATH=/usr/local/bin:/usr/bin:/bin sh -c 'command -v uv && uv --version' + changed_when: "false" + + - name: uvx resolves the same way + shell: sudo -u lkraven env -i PATH=/usr/local/bin:/usr/bin:/bin sh -c 'command -v uvx && uvx --version' + changed_when: "false"