mirror of
https://github.com/actions/actions-runner-controller.git
synced 2025-12-10 03:13:15 +00:00
This add support for two upcoming enhancements on the GitHub side of self-hosted runners, ephemeral runners, and `workflow_jow` events. You can't use these yet. **These features are not yet generally available to all GitHub users**. Please take this pull request as a preparation to make it available to actions-runner-controller users as soon as possible after GitHub released the necessary features on their end. **Ephemeral runners**: The former, ephemeral runners, is basically the reliable alternative to `--once`, which we've been using when you enabled `ephemeral: true` (default in actions-runner-controller). `--once` has been suffering from a race issue #466. `--ephemeral` fixes that. To enable ephemeral runners with `actions/runner`, you give `--ephemeral` to `config.sh`. This updated version of `actions-runner-controller` does it for you, by using `--ephemeral` instead of `--once` when you set `RUNNER_FEATURE_FLAG_EPHEMERAL=true`. Please read the section `Ephemeral Runners` in the updated version of our README for more information. Note that ephemeral runners is not released on GitHub yet. And `RUNNER_FEATURE_FLAG_EPHEMERAL=true` won't work at all until the feature gets released on GitHub. Stay tuned for an announcement from GitHub! **`workflow_job` events**: `workflow_job` is the additional webhook event that corresponds to each GitHub Actions workflow job run. It provides `actions-runner-controller` a solid foundation to improve our webhook-based autoscale. Formerly, we've been exploiting webhook events like `check_run` for autoscaling. However, as none of our supported events has included `labels`, you had to configure an HRA to only match relevant `check_run` events. It wasn't trivial. In contrast, a `workflow_job` event payload contains `labels` of runners requested. `actions-runner-controller` is able to automatically decide which HRA to scale by filtering the corresponding RunnerDeployment by `labels` included in the webhook payload. So all you need to use webhook-based autoscale will be to enable `workflow_job` on GitHub and expose actions-runner-controller's webhook server to the internet. Note that the current implementation of `workflow_job` support works in two ways, increment, and decrement. An increment happens when the webhook server receives` workflow_job` of `queued` status. A decrement happens when it receives `workflow_job` of `completed` status. The latter is used to make scaling-down faster so that you waste money less than before. You still don't suffer from flapping, as a scale-down is still subject to `scaleDownDelaySecondsAfterScaleOut `. Please read the section `Example 3: Scale on each `workflow_job` event` in the updated version of our README for more information on its usage.
60 lines
1.6 KiB
YAML
60 lines
1.6 KiB
YAML
apiVersion: actions.summerwind.dev/v1alpha1
|
|
kind: RunnerSet
|
|
metadata:
|
|
name: example-runnerset
|
|
spec:
|
|
# MANDATORY because it is based on StatefulSet: Results in a below error when omitted:
|
|
# missing required field "selector" in dev.summerwind.actions.v1alpha1.RunnerSet.spec
|
|
selector:
|
|
matchLabels:
|
|
app: example-runnerset
|
|
|
|
# MANDATORY because it is based on StatefulSet: Results in a below error when omitted:
|
|
# missing required field "serviceName" in dev.summerwind.actions.v1alpha1.RunnerSet.spec]
|
|
serviceName: example-runnerset
|
|
|
|
#replicas: 1
|
|
|
|
# From my limited testing, `ephemeral: true` is more reliable.
|
|
# Seomtimes, updating already deployed runners from `ephemeral: false` to `ephemeral: true` seems to
|
|
# result in queued jobs hanging forever.
|
|
ephemeral: ${TEST_EPHEMERAL}
|
|
|
|
repository: ${TEST_REPO}
|
|
#
|
|
# Custom runner image
|
|
#
|
|
image: ${RUNNER_NAME}:${RUNNER_TAG}
|
|
#
|
|
# dockerd within runner container
|
|
#
|
|
## Replace `mumoshu/actions-runner-dind:dev` with your dind image
|
|
#dockerdWithinRunnerContainer: true
|
|
#
|
|
# Set the MTU used by dockerd-managed network interfaces (including docker-build-ubuntu)
|
|
#
|
|
#dockerMTU: 1450
|
|
#Runner group
|
|
# labels:
|
|
# - "mylabel 1"
|
|
# - "mylabel 2"
|
|
labels:
|
|
- "${RUNNER_LABEL}"
|
|
#
|
|
# Non-standard working directory
|
|
#
|
|
# workDir: "/"
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: example-runnerset
|
|
spec:
|
|
containers:
|
|
- name: runner
|
|
imagePullPolicy: IfNotPresent
|
|
env:
|
|
- name: RUNNER_FEATURE_FLAG_EPHEMERAL
|
|
value: "${RUNNER_FEATURE_FLAG_EPHEMERAL}"
|
|
#- name: docker
|
|
# #image: mumoshu/actions-runner-dind:dev
|