Coder Social home page Coder Social logo

garm-playground's Introduction

Garm Playground

Deploying GARM for self-hosted azure workers. It listens to webhooks from Github to create VMs as self-hosted runners on demand.

Build

docker build -t garm-azure .

Service

The application is deployed as an ACI Container Group. It is bootstrapped with an init container which creates an admin user, an initial repository registration, and a pool for the repository.

Requirements

  • A Resource Group
  • A user assigned identity, which has role assignments that allow read/write operation for VM, Network resources and Resource Groups. The managed Contributor Role is able to do that, but you can apply more granular definitions. The resource needs to created in the resource group
  • A Storage Account holding to holding the state of the application via file shares.
  • A Key Vault keeping application secrets, refer to parameters.json for a list.

Deployment

make deploy
...
garm-123abc.eastus.azurecontainer.io

Webhook

To react to github workflow events, you need to expose the 9997 port of the container as an https endpoint on the internet. The application listens on /webhooks. Add a Webhook (e.g. https://garm-dc6512.eastus.azurecontainer.io/webhooks) to which Workflow jobs events are sent. If the runs-on labels of a job match a pool, the applications attempts to spawn a self-hosted runner.

garm-playground's People

Contributors

mkulke avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.