Skip to content

feat(github): add self-hosted Actions runner orchestration - #11177

Open
andrasbacsai wants to merge 13 commits into
nextfrom
github-runner-integration
Open

feat(github): add self-hosted Actions runner orchestration#11177
andrasbacsai wants to merge 13 commits into
nextfrom
github-runner-integration

Conversation

@andrasbacsai

Copy link
Copy Markdown
Member

Summary

  • Add experimental, server-level configuration for ephemeral GitHub Actions runners, including labels, concurrency limits, capacity timeouts, and runner groups.
  • Provision JIT runners from workflow_job webhooks and automatically clean up completed, failed, dead, or timed-out executions.
  • Add runner execution monitoring, manual cancellation, artifact cleanup, and deferred repository loading.
  • Split GitHub App settings into General, Permissions & Events, and Resources pages, with permission and webhook event synchronization.
  • Add migrations and feature coverage for runner lifecycle, webhooks, cleanup, permissions, and source pages.

Implement end-to-end GitHub Actions runner support with provisioning,
tracking, and cleanup flows.

- handle `workflow_job` webhooks to provision and tear down runners
- add runner config/execution models, enum states, and relationships
- create jobs for provisioning, cleanup, and stale-runner reaping
- schedule periodic stale runner cleanup in the console kernel
- add Livewire server UI to manage runner configuration and executions
- store GitHub App runner permissions and runner group metadata
- add migrations for runner permissions, configs, executions, and group id
- update GitHub permissions URL generation for organization app settings
- include feature/unit tests for runner behavior and permission paths
…ding

Add configurable `capacity_wait_timeout` to runner configs and use it in
`ProvisionGithubRunnerJob` to re-dispatch jobs while at capacity, preserving
initial wait start time and stopping after timeout.

Improve runner provisioning by caching an extracted runner template and copying
it into new runner directories.

Update Livewire GitHub Runners UI to lazy-load accessible repositories via
`wire:init`, track loading state, add timeout input, and remove preinstall
binary action.

Add/extend feature tests for capacity retry timeout behavior and deferred
repository loading.
Add runner execution observability and lifecycle hardening for self-hosted
GitHub Actions runners, including:
- scheduled artifact cleanup job for cached runner tarballs/templates
- workflow_job in_progress handling to mark executions as running
- safer cleanup failure handling and non-functional server fallback
- persisted workflow job HTML URLs with execution "Open" links in UI
- configurable runner group name sync (UI + provisioning + GitHub API)
- webhook events persistence and auto-fix for missing required events
- strict enum/status checks and related model cast/query improvements

Also includes migrations and expanded feature/unit coverage for webhook,
provisioning, cleanup, and runner group/event sync behaviors.
Adjust the test app webhook events to only include `push` so it matches
the current expected event set in the no-patch scenario.
Refactor the GitHub source UI into dedicated General, Permissions & Events,
and Resources Livewire pages/components with route-based navigation.

Also keeps permission/event refetch and resource listing behavior intact while
improving page organization and adds feature coverage for the new pages.
Place Save beside the page heading via form association and keep
Delete under the config form. Add a unit test asserting layout order.
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