{"id":20761295,"url":"https://github.com/philips-labs/garo","last_synced_at":"2025-04-30T06:07:48.887Z","repository":{"id":103438623,"uuid":"239807470","full_name":"philips-labs/garo","owner":"philips-labs","description":"Github Actions Runners Orchestrator","archived":false,"fork":false,"pushed_at":"2021-01-19T13:08:56.000Z","size":253,"stargazers_count":3,"open_issues_count":5,"forks_count":3,"subscribers_count":4,"default_branch":"develop","last_synced_at":"2025-04-30T06:07:42.705Z","etag":null,"topics":["actions","cd","ci","cicd","github","runners","workflow"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/philips-labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-11T16:17:43.000Z","updated_at":"2024-12-14T15:36:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"8442469d-10a2-4aca-88b8-18a7e4a1f245","html_url":"https://github.com/philips-labs/garo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philips-labs%2Fgaro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philips-labs%2Fgaro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philips-labs%2Fgaro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philips-labs%2Fgaro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/philips-labs","download_url":"https://codeload.github.com/philips-labs/garo/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251651233,"owners_count":21621716,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actions","cd","ci","cicd","github","runners","workflow"],"created_at":"2024-11-17T10:18:50.860Z","updated_at":"2025-04-30T06:07:48.867Z","avatar_url":"https://github.com/philips-labs.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Github actions runners orchestrator\n\n![CI](https://github.com/philips-labs/garo/workflows/CI/badge.svg)\n[![codecov](https://codecov.io/gh/philips-labs/garo/branch/develop/graph/badge.svg)](https://codecov.io/gh/philips-labs/garo)\n\nGitHub allows developers to run GitHub Actions workflows on your own runners. This tool allows you to deploy self hosted runners for your repositories.\n\n[Documentation](docs/README.md)\n\n## Important notes\n\n\u003e GitHub [recommends](https://help.github.com/en/github/automating-your-workflow-with-github-actions/about-self-hosted-runners#self-hosted-runner-security-with-public-repositories) that you do **NOT** use self-hosted runners with public repositories, for security reasons.\n\n## Prerequisites\n\nThis project makes use of CMake to automate a few tasks in development. Therefore it is recommended to install **CMake**. Furthermore the Cmake tasks depend on Graphviz to generate the diagrams.\n\n| platform | install                     | url                                |\n| -------- | --------------------------- | ---------------------------------- |\n| Windows  | `choco install -y cmake`    | [cmake-3.16.2-win64-x64.msi][]     |\n| MacOSX   | `brew install cmake`        | [cmake-3.16.2-Darwin-x86_64.dmg][] |\n| Windows  | `choco install -y graphviz` | [graphviz-2.38.msi][]              |\n| MacOSX   | `brew install graphviz`     | [graphviz-2.42.2.tar.gz][]         |\n| Windows  | `choco install -y protoc`   |                                    |\n| MacOSX   | `brew install protobuf`     |                                    |\n\nTo get an overview of the available make targets simply run the following:\n\n```bash\n$ make\nclean-binaries       Cleans binaries\nclean-diagrams       Cleans plantuml.jar and generated diagrams\nclean                Clean binaries and diagrams\ncompile-agent        Compile garo-agent\ncompile-server       Compile garo-server\ncompile              Compile garo-agent and garo-server\ncoverage-html        Show coverage in browser\ncoverage-out         Show coverage in cli\ndiagrams             Generate diagrams in SVG and PNG format\ndownload             Fetches go.mod dependencies via go mod download\ninstall-protoc       Installs protoc\ninstall-tools        Installs tools from tools.go\npng-diagrams         Generate diagrams in PNG format\nproto-gen            Generate protocol buffer implementations\nsvg-diagrams         Generate diagrams in SVG format\ntest-cover           Run tests and coverage\ntest                 Run tests\n```\n\n## Run\n\nGithub Testing implementation _(To Be Removed)_ can be run as following.\n\n```bash\nexport GARO_GH_TOKEN=MYDUMMYPERSONALGHTOKEN\ngo build .\n./garo my-gh-organization my-repository\n```\n\n### Server\n\nThe Server currently exposes a http server where agents can fetch a configuration. _The configuration specifics and remainder of features still has to be implemented._\n\n```bash\n$ bin/garo-server\n2020-02-27T14:45:03.921+0100    DEBUG    server/api.go:75       Registering route  {\"method\": \"GET\", \"route\": \"/\"}\n2020-02-27T14:45:03.921+0100    DEBUG    server/api.go:75       Registering route  {\"method\": \"GET\", \"route\": \"/ping\"}\n2020-02-27T14:45:03.921+0100    DEBUG    server/api.go:75       Registering route  {\"method\": \"OPTIONS\", \"route\": \"/twirp/philips.garo.garo.AgentConfigurationService/*\"}\n2020-02-27T14:45:03.921+0100    DEBUG    server/api.go:75       Registering route  {\"method\": \"TRACE\", \"route\": \"/twirp/philips.garo.garo.AgentConfigurationService/*\"}\n2020-02-27T14:45:03.921+0100    DEBUG    server/api.go:75       Registering route  {\"method\": \"POST\", \"route\": \"/twirp/philips.garo.garo.AgentConfigurationService/*\"}\n2020-02-27T14:45:03.921+0100    DEBUG    server/api.go:75       Registering route  {\"method\": \"PUT\", \"route\": \"/twirp/philips.garo.garo.AgentConfigurationService/*\"}\n2020-02-27T14:45:03.921+0100    DEBUG    server/api.go:75       Registering route  {\"method\": \"GET\", \"route\": \"/twirp/philips.garo.garo.AgentConfigurationService/*\"}\n2020-02-27T14:45:03.921+0100    DEBUG    server/api.go:75       Registering route  {\"method\": \"CONNECT\", \"route\": \"/twirp/philips.garo.garo.AgentConfigurationService/*\"}\n2020-02-27T14:45:03.921+0100    DEBUG    server/api.go:75       Registering route  {\"method\": \"HEAD\", \"route\": \"/twirp/philips.garo.garo.AgentConfigurationService/*\"}\n2020-02-27T14:45:03.921+0100    DEBUG    server/api.go:75       Registering route  {\"method\": \"DELETE\", \"route\": \"/twirp/philips.garo.garo.AgentConfigurationService/*\"}\n2020-02-27T14:45:03.921+0100    DEBUG    server/api.go:75       Registering route  {\"method\": \"PATCH\", \"route\": \"/twirp/philips.garo.garo.AgentConfigurationService/*\"}\n2020-02-27T14:45:03.921+0100    INFO     garo-server/root.go:63 Server is ready to handle requests  {\"addr\": \":8080\"}\n^C\n2020-02-27T14:45:15.097+0100    INFO     server/server.go:81    Server is shutting down  {\"reason\": \"interrupt\"}\n2020-02-27T14:45:15.097+0100    INFO     server/server.go:90    Server stopped\n```\n\n### Agent\n\nThe Agent currently connects to the server to fetch a configuration. _The configuration specifics and the remainder of features still has to be implemented._\n\n```bash\nbin/garo-agent\n```\n\n## Test\n\n```bash\nexport GARO_GH_TOKEN=MYDUMMYPERSONALGHTOKEN\nmake test\n```\n\nTo run the tests from _VSCode_ you will have to copy the `.env.example` and fill out your personal Github Token.\n\n```shell\ncp .env.example .env\n```\n\nTo view the code coverage you can make use of `make coverage-out` or `make coverage-html`.\n\n## Update diagrams\n\nTo update the diagrams you simply edit the plantuml files followed by running the according `make` target.\n\n```bash\nmake clean-diagrams diagrams\n```\n\n\u003e **NOTE:** due to `make` caching ensure to run the `clean-diagrams` target to regenerate existing `png` and `svg` files.\n\n[cmake-3.16.2-win64-x64.msi]: https://github.com/Kitware/CMake/releases/download/v3.16.2/cmake-3.16.2-win64-x64.msi \"Download cmake-3.16.2-win64-x64.msi\"\n[cmake-3.16.2-darwin-x86_64.dmg]: https://github.com/Kitware/CMake/releases/download/v3.16.2/cmake-3.16.2-Darwin-x86_64.dmg \"Download cmake-3.16.2-Darwin-x86_64.dmg\"\n[graphviz-2.38.msi]: https://graphviz.gitlab.io/_pages/Download/windows/graphviz-2.38.msi \"Download graphviz-2.38.msi\"\n[graphviz-2.42.2.tar.gz]: https://gitlab.com/graphviz/graphviz/-/archive/2.42.2/graphviz-2.42.2.tar.gz \"Download graphviz-2.42.2.tar.gz\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphilips-labs%2Fgaro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphilips-labs%2Fgaro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphilips-labs%2Fgaro/lists"}