Commit e34cbb8d66

e34cbb8d66871c25b3700b6d488a82d498366a68

parent: 49c030d83f

Verified · cmc ci/build: success ci/lint: success

cmc <hello@cleberg.net> · 2026-08-31 04:59 UTC

Pin where CI installs orgo

The runner's cargo home is not $HOME, so `cargo install` put the binary
outside the path the steps named, and then declined to reinstall it.

Layout: unified · split

.gitbay/ci.yml +16 −8
@@ -45,13 +45,20 @@ jobs:
4545 # orgo is installed from crates.io and takes minutes to compile, so it is
4646 # rebuilt only when this version changes. Nothing bumps it automatically:
4747 # raise it by hand, which is also how you find out orgo broke the site.
48 #
49 # --root pins where it lands, like ruff and lychee below. Without it cargo
50 # installs under whatever cargo home the runner sets, which is not $HOME:
51 # the binary goes somewhere this file does not name, and the next run's
52 # `cargo install` declines to repeat itself because its metadata already
53 # records the version as installed.
4854 - |
4955 set -eu
5056 v=0.22.0
51 if ! "$HOME/.cargo/bin/orgo" --version 2>/dev/null | grep -qx "orgo $v"; then
52 "$HOME/.cargo/bin/cargo" install orgo --version "$v" --locked
57 if ! "$HOME/tools/orgo/bin/orgo" --version 2>/dev/null | grep -qx "orgo $v"; then
58 "$HOME/.cargo/bin/cargo" install orgo --version "$v" --locked \
59 --root "$HOME/tools/orgo"
5360 fi
54 "$HOME/.cargo/bin/orgo" --version
61 "$HOME/tools/orgo/bin/orgo" --version
5562 python3 --version
5663
5764 # build.py deploys with rsync when DEPLOY=true and ENV=prod. This build
@@ -74,7 +81,7 @@ jobs:
7481 exit 1
7582 EOF
7683 chmod +x .ci-bin/rsync
77 PATH="$PWD/.ci-bin:$HOME/.cargo/bin:$PATH" ENV=prod BUILD=true python3 build.py
84 PATH="$PWD/.ci-bin:$HOME/tools/orgo/bin:$PATH" ENV=prod BUILD=true python3 build.py
7885
7986 - |
8087 set -eu
@@ -99,10 +106,11 @@ jobs:
99106 | sh -s -- -y --no-modify-path --profile minimal
100107 fi
101108 v=0.22.0
102 if ! "$HOME/.cargo/bin/orgo" --version 2>/dev/null | grep -qx "orgo $v"; then
103 "$HOME/.cargo/bin/cargo" install orgo --version "$v" --locked
109 if ! "$HOME/tools/orgo/bin/orgo" --version 2>/dev/null | grep -qx "orgo $v"; then
110 "$HOME/.cargo/bin/cargo" install orgo --version "$v" --locked \
111 --root "$HOME/tools/orgo"
104112 fi
105 "$HOME/.cargo/bin/orgo" --version
113 "$HOME/tools/orgo/bin/orgo" --version
106114
107115 # Prebuilt release binary, checksum-verified, kept in $HOME between runs.
108116 - |
@@ -125,7 +133,7 @@ jobs:
125133 # URLs to /img/, which is served from a different docroot and would look
126134 # like 198 broken links here. The development output keeps them absolute,
127135 # so the image host gets checked for real.
128 - $HOME/.cargo/bin/orgo build content -o .build-dev --strict
136 - $HOME/tools/orgo/bin/orgo build content -o .build-dev --strict
129137
130138 # Internal links are the half worth gating on: they are entirely within
131139 # this repo, so a failure is always a real defect and always fixable here.