/action-runner-orchestrator

Kotlin Scripts to manage GitHub Action Runners on self-hosted machines

Primary LanguageKotlinISC LicenseISC

GitHub Action Runner Orchestrator

Kotlin script to manage GitHub Action Runners on self-hosted machines.

Latest release License

About the project

This script helps to manage GitHub action runners for multiple GitHub repositories.

The script has been developed against Kotlin 1.7.22 and is using kotlin-shell and ktor.

Getting started

You need to create a GitHub personal access token with repo permissions and set it as environment variable in your system: export GITHUB_ACTIONS_RUNNER_REGISTRATION_TOKEN={token}

Usage

Clone the project on your desired runner machine and create a orchestrator_config.json file following this example:

{
  "config": {
    "version": "2.298.2",
    "folder": "github-action-runners",
    "isArm": false
  },
  "repositories": [
    {
      "organization": "ORG_NAME",
      "name": "REPOSITORY_NAME",
      "enabled": true
    }
  ]
}

Add the desired organization and repository names that you want to this machine to register to as GitHub runner.

Then just run the orchestrator: ./run-orchestrator.sh

It will create a new folder github-action-runners where all repository runners could be found. Every runner will be configured as a service.

If you set the repository config enabled to false, the runner will be uninstalled and removed for that repository.

Roadmap

This project is work in progress. We are working on adding more functionality, guidelines, documentation and other improvements.

See the open issues for a list of proposed improvements and known issues.

Changelog

All notable changes to this project will be documented in the changelog.

Versioning

We use Semantic Versioning as a guideline for our versioning.

Contributing

You want to help or share a proposal? You have a specific problem? Report a bug or request a feature.

You want to fix or change code? Read the Code of Conduct and contributing guide.

Copyright and license

Copyright (c) 2021-2022 Wolf-Martell Montwé.

Please refer to the ISC License for more information.

Acknowledgements