Skip to content

fix(ci): select the hosted runner explicitly in ci-workflows callers - #28

Merged
rldyourmnd merged 2 commits into
mainfrom
chore/pin-hosted-runner-in-public-callers
Aug 10, 2026
Merged

fix(ci): select the hosted runner explicitly in ci-workflows callers#28
rldyourmnd merged 2 commits into
mainfrom
chore/pin-hosted-runner-in-public-callers

Conversation

@rldyourmnd

Copy link
Copy Markdown
Collaborator

Summary

This repository is public, so pull_request executes untrusted fork code. Its
callers of ci-workflows reusables relied on the reusable's own runner
default instead of naming a runner.

That default is a property of the pinned commit, not of this repository. At
the pin in use it is still ubuntu-latest, so this change is a no-op today. On
current ci-workflows main, 39 of 46 reusables default runner to the estate's
self-hosted amsterdam label — including the ones called here. A routine
Dependabot pin bump would therefore have moved these public pull_request jobs,
fork PRs included, onto trusted private infrastructure, with no diff in this
repository to review.

Naming the runner makes the caller, not the pin, decide where fork code runs.
The rule is recorded in both instruction projections so it is not later mistaken
for redundant boilerplate and removed.

ci-workflows enforces this for its own self-calls via
check_workflow_contracts.py, and now for its published examples too, but
nothing extends it to external consumers — hence the per-repository rule.

Verification

actionlint exit 0. The reusables accept runner at the pinned SHA and already
default it to ubuntu-latest there, so behaviour is unchanged until the pin
moves.

This repository is public, so `pull_request` executes untrusted fork code.
2 caller(s) relied on the reusable workflow's own `runner` default instead of
naming a runner.

That default is a property of the pinned commit, not of this repository. At
the current pin (ac4d1f4, 0.5.1) actionlint.yml and secret-scan.yml still
default to `ubuntu-latest`, so this change is a no-op today. On current
ci-workflows main, 39 of 46 reusables default `runner` to the estate's
self-hosted `amsterdam` label — including both of those. A routine pin bump
would therefore move these public `pull_request` jobs, fork PRs included,
onto trusted private infrastructure, with no diff here to review.

Naming the runner makes the caller, not the pin, decide where fork code runs.

Signed-off-by: rldyourmnd <danil@nddev.it.com>
Make the constraint enforced by the preceding change durable so it is not mistaken for redundant boilerplate and removed. Both projections state the rule and the pin-bump review step: diff `inputs.runner.default` across the two commits before merging.

Signed-off-by: rldyourmnd <danil@nddev.it.com>
@rldyourmnd
rldyourmnd merged commit 11d5587 into main Aug 10, 2026
13 checks passed
@rldyourmnd
rldyourmnd deleted the chore/pin-hosted-runner-in-public-callers branch August 10, 2026 15:08
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