ci: pass the attestation lookup's jq filter to gh api without -r
Every image publish on main failed at "Resolve registry attestation eligibility" with "accepts 1 arg(s), received 2". The step ran `gh api ... --jq -r '.owner.type'`, but gh api has no -r option: --jq took "-r" as its filter and the real filter became a second positional argument. gh api --jq already prints strings without quotes, so the filter is now passed directly. The images were built and their manifests pushed; only the attestation decision failed. The workflow test now rejects `--jq -r`. Run with the repository's values, the fixed step reports a personal account and a private repository and skips attestation, as the guard intends. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EyQw3AEaHYXegvgvTPAsi1
This commit is contained in:
parent
49431def83
commit
b76f2413f2
4
.github/workflows/publish-server-image.yml
vendored
4
.github/workflows/publish-server-image.yml
vendored
@ -263,8 +263,8 @@ jobs:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
owner_type="$(gh api "repos/${GITHUB_REPOSITORY}" --jq -r '.owner.type')"
|
||||
private="$(gh api "repos/${GITHUB_REPOSITORY}" --jq -r '.private')"
|
||||
owner_type="$(gh api "repos/${GITHUB_REPOSITORY}" --jq '.owner.type')"
|
||||
private="$(gh api "repos/${GITHUB_REPOSITORY}" --jq '.private')"
|
||||
if [[ "$owner_type" == "User" && "$private" == "true" ]]; then
|
||||
echo "enabled=false" >> "$GITHUB_OUTPUT"
|
||||
echo "Skipping registry attestation: unavailable for private repositories on personal accounts."
|
||||
|
||||
@ -43,6 +43,8 @@ describe("server image publish workflow", () => {
|
||||
expect(workflowText).toContain("actions/attest-build-provenance@");
|
||||
expect(workflowText).not.toContain("github.repository_owner_type");
|
||||
expect(workflowText).toContain(`gh api "repos/\${GITHUB_REPOSITORY}"`);
|
||||
// `gh api --jq` already prints raw strings; `--jq -r` takes `-r` as the filter and fails.
|
||||
expect(workflowText).not.toContain("--jq -r");
|
||||
expect(workflowText).toContain(".owner.type");
|
||||
expect(workflowText).toContain("if: steps.attestation.outputs.enabled == 'true'");
|
||||
expect(workflowText).toContain('[[ "$owner_type" == "User" && "$private" == "true" ]]');
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user