Skip to content

Add an org-wide project backfill that runs on a public runner #122

Description

@ExtraToast

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.yml an 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 .github repo 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.yml accepts an org-wide scope that sweeps all repos, not just the caller's
  • A scheduled caller exists in the public .github repo and its runs are billed as free
  • An issue opened in a private repo reaches project build(deps): bump actions/checkout from 6 to 7 #2 within the cron interval, with no workflow run in that private repo
  • Re-running the sweep against a fully-boarded project adds nothing and fails nothing
  • Repos the App cannot see are skipped with a visible warning rather than failing the sweep

Blocked by

  • None — can start immediately.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: toolingReusable workflows, Gradle, templates, Renovate, and API tooling.component: ciContinuous integration workflow or check behavior.priority: P1High; important and should be handled in the current iteration.type: featureNew user-facing or operator-facing capability.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions