Scope /ci-local to the host's architecture and named jobs #21

Merged
geusebio merged 1 commit from docs/ci-local-scope-multiarch-cost into main 2026-08-13 17:15:46 +00:00
Owner

Summary

  • /ci-local treats a multi-architecture build/publish job the same as a deploy/publish
    job — skip it by default. act always emulates whichever architecture isn't the host's
    own rather than skipping it, so reproducing one locally pays the same QEMU cost the real
    runner pays, for no extra assurance CI doesn't already give for real on every push.
  • Fixes a latent bug in the default example: a bare act push/act pull_request runs
    every job in the workflow. Whether that happens to dodge the expensive jobs depends on
    their own if: conditions, which is a property of one workflow today, not something the
    skill can assume generally. The skill now says to enumerate jobs, read their if:/needs:,
    and name the wanted set explicitly with -j.

Found while reproducing someones.computer's CI locally on an ARM Mac: its
publish-dry-run job hardcodes --platform linux/amd64,linux/arm64
(.github/actions/publish-image/action.yml), which is exactly the kind of job this change
tells /ci-local to skip by default.

Test plan

Docs-only change to a skill's Markdown instructions — no code, no CI in this repo.
Read through the updated commands/ci-local.md for consistency.

## Summary - `/ci-local` treats a multi-architecture build/publish job the same as a deploy/publish job — skip it by default. `act` always emulates whichever architecture isn't the host's own rather than skipping it, so reproducing one locally pays the same QEMU cost the real runner pays, for no extra assurance CI doesn't already give for real on every push. - Fixes a latent bug in the default example: a bare `act push`/`act pull_request` runs *every* job in the workflow. Whether that happens to dodge the expensive jobs depends on their own `if:` conditions, which is a property of one workflow today, not something the skill can assume generally. The skill now says to enumerate jobs, read their `if:`/`needs:`, and name the wanted set explicitly with `-j`. Found while reproducing someones.computer's CI locally on an ARM Mac: its `publish-dry-run` job hardcodes `--platform linux/amd64,linux/arm64` (`.github/actions/publish-image/action.yml`), which is exactly the kind of job this change tells `/ci-local` to skip by default. ## Test plan Docs-only change to a skill's Markdown instructions — no code, no CI in this repo. Read through the updated `commands/ci-local.md` for consistency.
Treat any job that builds more than one target platform (a
--platform a,b buildx invocation, an architecture matrix) the same as
a deploy/publish job: skip it by default. act always emulates
whichever architecture isn't the host's own rather than skipping it,
so reproducing a multi-arch build locally pays the same QEMU cost the
real runner pays for zero extra assurance CI doesn't already give on
every push.

Also stop relying on a bare `act push`/`act pull_request` to exclude
expensive jobs. It runs every job in the file; whether it happens to
skip the costly ones depends on that job's own if:, which varies per
workflow and isn't something the next invocation can assume. Name the
wanted jobs explicitly with -j instead.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Grey.ooo/agent-standards!21
No description provided.