-
Notifications
You must be signed in to change notification settings - Fork 0
Add an org-wide project backfill that runs on a public runner #122
Copy link
Copy link
Labels
area: toolingReusable workflows, Gradle, templates, Renovate, and API tooling.Reusable workflows, Gradle, templates, Renovate, and API tooling.component: ciContinuous integration workflow or check behavior.Continuous integration workflow or check behavior.priority: P1High; important and should be handled in the current iteration.High; important and should be handled in the current iteration.type: featureNew user-facing or operator-facing capability.New user-facing or operator-facing capability.
Description
Activity
Metadata
Metadata
Assignees
Labels
area: toolingReusable workflows, Gradle, templates, Renovate, and API tooling.Reusable workflows, Gradle, templates, Renovate, and API tooling.component: ciContinuous integration workflow or check behavior.Continuous integration workflow or check behavior.priority: P1High; important and should be handled in the current iteration.High; important and should be handled in the current iteration.type: featureNew user-facing or operator-facing capability.New user-facing or operator-facing capability.
What to build
Boarding an issue costs a billable minute in whichever repo fires the event, and the private repos fire ~130 of those a week — ~516 minutes/month — for a job that averages 7 seconds and touches no repository content at all. It is pure Projects-V2 GraphQL.
Actions minutes are billed to the caller, never to the repo holding the reusable workflow, so the existing
uses:shims into this repo save nothing. The only way this work stops costing minutes is if the run itself is triggered in a public repo, where standard runners are free.Give
add-to-project.ymlan org-wide backfill scope: sweep every repo in the organization for open issues and pull requests not yet on the board and add them. Then add a scheduled caller in the public.githubrepo that runs it. Because the caller is public the run is free, so the cron can be frequent enough that boarding still feels immediate.The existing backfill is repo-scoped (
Empty = backfill all open issues and PRs in this repo) — this extends the scope, it does not replace the existing modes. The add is already idempotent, which is what makes a sweep safe to run on a tight schedule.This also removes a standing failure mode: when GitHub stops creating runs from webhooks — documented in the estate as having stranded 24 issues at once — a cron-driven sweep keeps boarding items, where the event-driven path silently stops.
Acceptance criteria
add-to-project.ymlaccepts an org-wide scope that sweeps all repos, not just the caller's.githubrepo and its runs are billed as freeBlocked by