Skip to content

ci: fix hosted GitHub CI (workspace can't resolve private siblings)#1

Merged
2ro merged 1 commit into
mainfrom
worktree-goblinpay-ci-fmt-fix
Jul 5, 2026
Merged

ci: fix hosted GitHub CI (workspace can't resolve private siblings)#1
2ro merged 1 commit into
mainfrom
worktree-goblinpay-ci-fmt-fix

Conversation

@2ro

@2ro 2ro commented Jul 3, 2026

Copy link
Copy Markdown
Owner

What was failing

The GitHub Actions job fmt / clippy / test failed on main (run 28645249200). It reports as a clippy failure only because that's the job name — the step that actually fails is the first one, cargo fmt --all -- --check, which dies inside cargo metadata:

error: failed to load manifest for workspace member `crates/gp-goblin-sender`
  Caused by: failed to read `.../goblin/node/core/Cargo.toml`: No such file or directory

Root cause

Every cargo command runs cargo metadata over the whole workspace before any -p scoping applies. Three members have path deps into out-of-repo siblings a hosted runner can't check out:

  • gp-nostrnip44, nym/smolmix
  • gp-servernip44
  • gp-goblin-sender → the private goblin tree (git.us-ea.st)

So -p gp-core never took effect and the job could not pass as written — fmt, clippy, and test would all fail identically at metadata resolution.

Fix

A CI-only step drops those three members from Cargo.toml before any cargo command, leaving the self-contained core gate (gp-core, gp-wallet). The committed manifest is unchanged, so:

  • Deploy host / gitea runner (siblings present) still builds the full workspace and runs the full ./ci.sh gate.
  • cargo build -p gp-server (deploy) is untouched.

Verification

Simulated a bare runner in a sibling-free checkout (same command order as CI):

  • cargo fmt --all -- --check → clean
  • cargo clippy -p gp-core --all-targets -- -D warnings → no warnings
  • cargo test -p gp-core --locked → 62 passed, 0 failed

🤖 Generated with Claude Code

The hosted CI job failed at the very first cargo command (reported as a
"clippy" failure only because the job is named "fmt / clippy / test").
The real cause: every cargo command runs `cargo metadata` over the whole
workspace first, and gp-nostr/gp-server/gp-goblin-sender have path deps
into out-of-repo siblings (nip44, nym, the private goblin tree) that a
hosted GitHub runner can't check out. `-p gp-core` scoping runs after
metadata, so it never helped — the job could not pass as written.

Add a CI-only step that drops those three members from Cargo.toml before
any cargo command runs, leaving the self-contained core gate (gp-core,
gp-wallet). The committed manifest is unchanged, so the deploy host
(where the siblings exist) still builds the full workspace and runs the
full ./ci.sh gate.
@2ro
2ro force-pushed the worktree-goblinpay-ci-fmt-fix branch from 4466f0e to def7646 Compare July 5, 2026 01:44
@2ro
2ro marked this pull request as ready for review July 5, 2026 01:49
@2ro
2ro merged commit ba1247d into main Jul 5, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant