You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
« Previous
Version 4
Next »
This page is documentation of the github actions runner we plan to use
Possible setup #1 - GitHub enterprise
Possible setup #2 - Self hosted runner
I made a self-hosted runner that runs on s3df on a repository named BuildSystem slaclab/BuildSystem: BuildSystem for EED software development and configuration management (github.com). The actions themselves doesn't do much, since this is a proof of concept.
But also communicates with github, and posts build results there under the 'Action' tab.
- Here is setup
- And then run, and manually trigger the workflow using Github CLI (I installed github CLI on my goenv)
Result on github repo 'Actions'
To think about: Should we use github CLI to be the base tool for our CLI? It seems to have features we need like triggering a workflow manually. But it also allows you to create your own commands. Maybe we can make a simplified wrapper around the CLI - And make only certain options visible to the end user?
Resources:
Adding self-hosted runners - GitHub Docs
If go this route:
- Add the self-hosted runner at the organization level (So every repo just needs to enable their self-hosted runner to the 'buildsystem' so they're able to communicate to the buildsystem).
- (optional) configure the self-hosted runner as a service
Possible setup #2.1 - Self hosted runner in a container
- This is the same as #2 except it runs in an apptainer container
- Run the workflow. (The first x means not completed, then it completes)
- The output of the runner is a bit verbose, so its better to look at the results on github actions
This works too but i am not sure if is scalable, because in the definition file (build_system_runner.def), i cd into the actions-runner/ directory which is already preconfigured for 1 runner. If multiple runners are made, then may have to configure all of them.
Resources:
Provide runner as a Docker Image · Issue #367 · actions/runner (github.com)
Package actions-runner (github.com)
Possible setup #3 - Self hosted runner with jobs in containers
May be the optimal route if we host the build system on our own hardware (or virtual).
This solves 2 problems:
- No bottleneck on the self hosted runner since the runner will just spin up containers to do the jobs, not the runner itself.
- Not having the runner rely on github resources that can potentially cost money if overused. Also not having a self-hosted runner for each project, we can host the runner organization wide (like propose #2) and have every project enable their actions runner to 'build-system'.
Running jobs in a container - GitHub Docs
Creating a Docker container action - GitHub Docs
Possible setup #4 - Self hosted runner autoscaling (kubernetes)
May also be optimal route, but need to look into it. Surface level: Runners are created/deleted based off usage. This route involves kubernetes infrastructure.
Autoscaling with self-hosted runners - GitHub Docs
About Actions Runner Controller - GitHub Docs