ci(plugin): drop with: from the plugin job's checkout
CI & Build / Python lint (push) Successful in 2s
CI & Build / Plugin hooks (push) Successful in 3s
CI & Build / integration (push) Successful in 30s
CI & Build / TypeScript typecheck (push) Successful in 32s
CI & Build / Python tests (push) Successful in 52s
CI & Build / Build & push image (push) Successful in 19s

Run 3027: the Plugin hooks job failed at checkout, before the script ran.
Adding a `with: fetch-depth: 0` block made actions/checkout@v6 fail to
extract on the act_runner —

  Cannot find module '/var/run/act/actions/<sha>/dist/index.js'

— while every bare `uses: actions/checkout@v6` in the same run succeeded.
The runner's action-cache handling is the difference, not git.

No depth was needed in the first place. The version check compares two
TREES, and a tree diff needs both trees, not a common ancestor. Verified
against a real depth-1 clone: after `git fetch --depth=1 origin
main:refs/remotes/origin/main`, both `git diff origin/main -- plugin` and
`git show origin/main:plugin/.claude-plugin/plugin.json` work. So the
explicit fetch already in the step is sufficient, and cheaper than the
full history the `with:` block was asking for.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UaYUaouG9jjhATyuxCKrQs
This commit is contained in:
2026-07-28 21:00:14 -04:00
parent 51e5c22818
commit 1feef179d2
2 changed files with 12 additions and 10 deletions
+9 -8
View File
@@ -121,21 +121,22 @@ jobs:
container: container:
image: git.fabledsword.com/bvandeusen/ci-python:3.14 image: git.fabledsword.com/bvandeusen/ci-python:3.14
steps: steps:
# Bare `uses:`, no `with:` block. Adding one made this action fail to
# extract on the act_runner ("Cannot find module .../dist/index.js") while
# every bare checkout in the same run succeeded — see run 3027. Nothing
# here needs `fetch-depth: 0` anyway: the version check diffs two trees,
# and a tree diff needs both trees, not a common ancestor. A depth-1 fetch
# of main's tip is enough, and cheaper.
- uses: actions/checkout@v6 - uses: actions/checkout@v6
with:
# The version-bump check diffs shipped plugin content against
# origin/main, so it needs history — a shallow clone can't resolve it
# and the check would fail loudly rather than pass blind.
fetch-depth: 0
# On main the comparison is against itself, so only the syntax and # On main the comparison would be against itself, so only the syntax and
# pattern checks are meaningful there. # pattern checks mean anything there.
- name: Check plugin hooks and manifest - name: Check plugin hooks and manifest
run: | run: |
if [ "${{ github.ref }}" = "refs/heads/main" ]; then if [ "${{ github.ref }}" = "refs/heads/main" ]; then
python3 scripts/check_plugin.py --no-version python3 scripts/check_plugin.py --no-version
else else
git fetch --no-tags origin main:refs/remotes/origin/main git fetch --no-tags --depth=1 origin main:refs/remotes/origin/main
python3 scripts/check_plugin.py python3 scripts/check_plugin.py
fi fi
+3 -2
View File
@@ -171,8 +171,9 @@ def check_version_bump(base: str = "origin/main") -> None:
# of bug survives in the first place. # of bug survives in the first place.
fail( fail(
f"cannot resolve {base}, so the version-bump check could not run. " f"cannot resolve {base}, so the version-bump check could not run. "
f"Fetch it (checkout needs fetch-depth: 0) or pass --no-version " f"Fetch it first — `git fetch --depth=1 origin main:refs/remotes/"
f"deliberately." f"origin/main` is enough, since this diffs two trees and needs no "
f"common ancestor — or pass --no-version deliberately."
) )
return return