Org-bound secrets are not being passed due to changed behaviour of runner registration #169204
Unanswered
brandshaide
asked this question in
Actions
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Why are you starting this discussion?
Question
What GitHub Actions topic or product is this about?
ARC (Actions Runner Controller)
Discussion Details
Recently we've migrated from the legacy mode of the ARC, resources tied to
actions.summerwind.net
, to the official supported ARC. We're using our custom runner image and everythings works fine just like it did with the legacy mode except when using a GithUb action workflow like this:If I'm not mistaken GitHub does not just hand that secret to the callee. It first runs a server-side check:
“Is this job context trusted enough to forward this specific secret into a new workflow run?”
If anything about the context looks less-trusted (event type, cross-repo call without secrets: inherit, etc.), GitHub drops the secret before the job is queued. Our runner never sees those secret(s).
Normal jobs in the same workflow file don’t go through that extra forwarding check; they just get the secret directly.
Can you verify/confirm the observations about different behaviour regarding registration of runners legacy ARC vs. modern ARC:
The legacy ARC (summerwind) — “org-level” but repo-bound at scale-out time
We do configure a RunnerDeployment with organization: <some_of_our_orgs>.
When a job arrives, the autoscaler path (
Webhook/HRA
) sees theworkflow_job webhook
, which includes the target repository.The controller then requests a repo-scoped registration token (
POST /repos/{org}/{repo}/actions/runners/registration-token
) and starts an ephemeral runner registered against that repo (config.sh --url https://github.com/org/repo
), even though our logical config is “org”.As opposed to the new ARC where everyting is strictly organization scoped and GitHub stripping the secrets
New ARC (gha-runner-scale-set) — truly org-only
We register our
gha-runner-scale-sets
at the respective org levels.GitHub does the job matching and hands jobs to the pool.
The controller asks for scale-set org tokens (
POST /orgs/{org}/actions/runner-scale-sets/{id}/runners/registration-token
) and runners register with the org URL (config.sh --url https://github.com/org
).There is no per-job repo registration step. The job payload the runner gets is clearly org-scoped, multi-repo capable.
Beta Was this translation helpful? Give feedback.
All reactions