Action Runners#
There are two broad catagories of Action Runners: Github Hosted and Self-Hosted. Github's documentation on how to use a runner for a job can be found Here.
Dependabot can also be set to run on Runners
Github Hosted Runners#
This is the default. They incur a cost per minute to run once our pre-allocated number has been reached. Currently we are allocated 50,000 minutes per month across the enterprise.
- These runners do NOT have access to on-prem resources.
- While we are nowhere near our limit of minutes you are free to use these, if we start to exhaust minutes we will work with teams to migrate to the U of M provided runners (see below).
How to use github hosted runners
Self-hosted Runners#
GitHub does not recommend using public repositories with self-hosted runners. Forks of your public repository enable potentially dangerous code to be run on the self-hosted runners via pull request.
U of MN Hosted Runners#
To help reduce this toil and additional consumption of University resources (vms), Devex will supply/manage U of MN self-hosted runners for Github Actions. The runners are created/updated by Github but run by Devex. The runners are deployed based on Github provided Actions Runner Controller
- These runners operate on UofM IP space and therefore can access on-prem resources.
- If you look on the Actions/runner groups page for your organization (github.com/organizations/YOUR-ORG-NAME/settings/actions/runner-groups) you will see a Default group listed under 'Shared by the Enterprise'. Example
- The runners are based off of this container image
- However it lacks some tools, so Devex maintains a custom version, updated monthly that adds some tools to the base. See here.
How to use the U of MN Runners#
All you have to do to is call out the label runs-on: arc-runner-enterprise
in the actions yaml file in .github/workflows/
Note: Currently this does not support Windows runners
Example:
# Simple workflow for deploying static content to GitHub Pages
name: Deploy static content to Pages
on:
# Runs on pushes targeting the default branch
push:
branches: ["main"]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
# Single deploy job since we're just deploying
deploy:
runs-on: arc-runner-enterprise # Devex maintained arc-runner
steps: ACTION_STEPS_HERE
Update Cycle#
First Monday of the month#
Updates are made to the "beta" deployment of the runner (runs-on: arc-runner-enterprise-beta
). This label will always be the latest version and is available for testing two weeks ahead of production patching to allow for testing your workflows to ensure no processes are interrupted after production patching.
Third Monday of the month#
Upgrades to our production runner (runs-on: arc-runner-enterprise
) are the third Monday of the month. Announcements will be made via the #github slack channel. Scheduling may be adjusted due to holidays, OIT events, or issues found during the non-prod upgrade phase.
Build your own self-hosted runners#
Self hosted runners are installed on your own hosts and do not include any tools/apps/binaries. Each team would be required to manage the installation and updates on their own.
Self Hosted runners may be needed to access on-prem resources such as Artifactory.