ci: give cargo the credential for the private clawhdf5 git dep
deploy / test (push) Failing after 5m38s
deploy / build (push) Skipped

First run failed in `cargo test --workspace`: "failed to load source for
dependency clawhdf5", preceded by three "spurious network error: invalid packet
line" retries. Two separate causes, both needed:

- libgit2 cannot fetch from Gitea's smart-HTTP. images/server.Dockerfile already
  sets CARGO_NET_GIT_FETCH_WITH_CLI for exactly this; the test step did not.
- quantumclaw/clawhdf5 is private (401 anonymous), so the CLI fetch needs a
  credential. Supplied via an insteadOf rewrite from a repo secret, so the token
  is masked in logs and never committed.

The server image build does not hit this — it builds only clawmates-server,
which does not pull cm-brain's clawhdf5 path.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
Omar Sobh
2026-08-13 10:06:34 -07:00
co-authored by Claude Opus 5
parent b1bf50160a
commit 8129f58845
+22 -2
View File
@@ -50,6 +50,14 @@ jobs:
# Rust lives in a container because gw-04 has no cargo. The named volumes
# are the whole reason this is not painfully slow: without them every run
# recompiles the world.
# `cargo test --workspace` builds cm-brain, which pulls clawhdf5 from
# git.redclaw.dev — a PRIVATE repo. Two things are needed and neither is
# optional:
# CARGO_NET_GIT_FETCH_WITH_CLI — libgit2 fails against Gitea's smart-HTTP
# with "invalid packet line" (the server Dockerfile sets it for the
# same reason). Note it is _GIT_FETCH_WITH_CLI, not _NET_FETCH_.
# the insteadOf rewrite — supplies the credential to that CLI fetch.
# The token is a repo secret, so it is masked in logs and never in git.
- name: Rust tests
run: |
docker run --rm --network host \
@@ -58,9 +66,15 @@ jobs:
-v cm-ci-cargo-git:/usr/local/cargo/git \
-v cm-ci-target:/w/target \
-e SQLX_OFFLINE=true \
-e CARGO_NET_GIT_FETCH_WITH_CLI=true \
-e FORGE_TOKEN='${{ secrets.FORGE_TOKEN }}' \
-e CM_TEST_DATABASE_URL=postgres://postgres:[email protected]:55432/postgres \
rust:1.96-slim \
sh -c 'apt-get update -qq && apt-get install -y -qq pkg-config libssl-dev cmake git >/dev/null && cargo test --workspace'
sh -c 'set -e
apt-get update -qq
apt-get install -y -qq pkg-config libssl-dev cmake git >/dev/null
git config --global url."https://oauth2:[email protected]/".insteadOf "https://git.redclaw.dev/"
cargo test --workspace'
- name: Stop test Postgres
if: always()
@@ -99,8 +113,14 @@ jobs:
-v cm-ci-cargo-git:/usr/local/cargo/git \
-v cm-ci-target:/w/target \
-e SQLX_OFFLINE=true -e CARGO_NET_GIT_FETCH_WITH_CLI=true \
-e FORGE_TOKEN='${{ secrets.FORGE_TOKEN }}' \
rust:1.96-slim \
sh -c 'apt-get update -qq && apt-get install -y -qq pkg-config libssl-dev cmake git >/dev/null && cargo build --release -p clawmates-node && cp target/release/clawmates-node frontend/public/dl/clawmates-node-linux-amd64'
sh -c 'set -e
apt-get update -qq
apt-get install -y -qq pkg-config libssl-dev cmake git >/dev/null
git config --global url."https://oauth2:[email protected]/".insteadOf "https://git.redclaw.dev/"
cargo build --release -p clawmates-node
cp target/release/clawmates-node frontend/public/dl/clawmates-node-linux-amd64'
for svc in server frontend broker; do
docker build -f "images/$svc.Dockerfile" \