Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable Fetching and Installing Latest Runner Software On Container Start #888

Closed
toast-gear opened this issue Oct 12, 2021 · 2 comments
Closed
Labels
enhancement New feature or request

Comments

@toast-gear
Copy link
Collaborator

toast-gear commented Oct 12, 2021

Current Behaviour
We provide a few runner images of which only the latest tag is continously updated to have the latest runner software in it automatically whilst retaining the same tag. There is no ability to pull in an alternative runner software version in any image.

Suggestion
Produce a solution to allow an end user to download and install the latest version of the runner software on container startup and use the baked in version as a fallback should this process fail.

Rationale
Containers don't always play with the self-update process, additionally, it's not ideal having to reference a public container (latest) from a community maintained open source project to always stay on the latest runner software. By providing an alternative bootstrap process enabled via a feature flag people can mitigate the self-update issues without the need to either constantly sync latest to their registry or have to rely on our image.

Furthermore, if you run a custom runner image you currently have to provide some solution for automatically pushing out a new version of your image when our image gets bumped.

Issues to Resolve:

  1. If we call the GitHub release API every container restart we'll very quickly consume the 5000 authenticated API calls / hour rate-limit on even semi busy environments. Calls will need to be cached (to a configurable period) probably by sending them through a Go HTTP proxy sidecar implementation instead of going directly to Github.
  2. Perhaps in addition we could allow a "pre-install" script to be ran in the container entrypoint a bit like philips-labs does for their user-data https://github.com/philips-labs/terraform-aws-github-runner/blob/develop/modules/runners/templates/user-data.sh#L4. This would enable people to then implement their own solutions to the problem such as syncing the binaries to an S3 bucket and having their containers get the binary from an S3 bucket instead avoiding the rate-limit issue to begin with.
@toast-gear toast-gear added the enhancement New feature or request label Oct 12, 2021
@toast-gear toast-gear changed the title Enable Fetching and Installing Runner Software On Container Start Enable Fetching and Installing Latest Runner Software On Container Start Oct 13, 2021
@toast-gear
Copy link
Collaborator Author

actions/runner#1396 (comment) this is probably not going to be needed in the new year 🎉

@mumoshu
Copy link
Collaborator

mumoshu commented Dec 2, 2021

Great news!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants