Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ RUN set -ex; \
cloudbase/garm-provider-incus \
cloudbase/garm-provider-aws \
cloudbase/garm-provider-gcp \
cloudbase/garm-provider-equinix \
flatcar/garm-provider-linode \
mercedes-benz/garm-provider-k8s \
nexthop-ai/garm-provider-cloudstack; \
Expand Down Expand Up @@ -84,7 +83,6 @@ COPY --from=builder /opt/garm/providers.d/garm-provider-incus /opt/garm/provider
COPY --from=builder /opt/garm/providers.d/garm-provider-azure /opt/garm/providers.d/garm-provider-azure
COPY --from=builder /opt/garm/providers.d/garm-provider-aws /opt/garm/providers.d/garm-provider-aws
COPY --from=builder /opt/garm/providers.d/garm-provider-gcp /opt/garm/providers.d/garm-provider-gcp
COPY --from=builder /opt/garm/providers.d/garm-provider-equinix /opt/garm/providers.d/garm-provider-equinix

COPY --from=builder /opt/garm/providers.d/garm-provider-k8s /opt/garm/providers.d/garm-provider-k8s
COPY --from=builder /opt/garm/providers.d/garm-provider-cloudstack /opt/garm/providers.d/garm-provider-cloudstack
Expand Down
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,15 +112,14 @@ External providers are binaries that GARM calls into to create runners in a part
* [Amazon EC2](https://github.com/cloudbase/garm-provider-aws)
* [Azure](https://github.com/cloudbase/garm-provider-azure)
* [CloudStack](https://github.com/nexthop-ai/garm-provider-cloudstack)
* [Equinix Metal](https://github.com/cloudbase/garm-provider-equinix)
* [Google Cloud Platform (GCP)](https://github.com/cloudbase/garm-provider-gcp)
* [Incus](https://github.com/cloudbase/garm-provider-incus)
* [Kubernetes](https://github.com/mercedes-benz/garm-provider-k8s) - Thanks to the amazing folks at @mercedes-benz for sharing their awesome provider!
* [LXD](https://github.com/cloudbase/garm-provider-lxd)
* [OpenStack](https://github.com/cloudbase/garm-provider-openstack)
* [Oracle Cloud Infrastructure (OCI)](https://github.com/cloudbase/garm-provider-oci)

Follow the instructions in the README of each provider to install them.
Follow the instructions in the README of each provider to install them.

## Optimizing your runners

Expand Down
1 change: 0 additions & 1 deletion doc/config.md
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,6 @@ For non-testing purposes, these are the external providers currently available:
* [Amazon EC2](https://github.com/cloudbase/garm-provider-aws)
* [Azure](https://github.com/cloudbase/garm-provider-azure)
* [CloudStack](https://github.com/nexthop-ai/garm-provider-cloudstack)
* [Equinix Metal](https://github.com/cloudbase/garm-provider-equinix)
* [Google Cloud Platform (GCP)](https://github.com/cloudbase/garm-provider-gcp)
* [Incus](https://github.com/cloudbase/garm-provider-incus)
* [Kubernetes](https://github.com/mercedes-benz/garm-provider-k8s) - Thanks to the amazing folks at @mercedes-benz for sharing their awesome provider!
Expand Down
28 changes: 14 additions & 14 deletions doc/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,19 @@

<!-- TOC -->

- [Create the config folder](#create-the-config-folder)
- [The config file](#the-config-file)
- [The provider section](#the-provider-section)
- [Starting the service](#starting-the-service)
- [Using Docker](#using-docker)
- [Setting up GARM as a system service](#setting-up-garm-as-a-system-service)
- [Initializing GARM](#initializing-garm)
- [Setting up the webhook](#setting-up-the-webhook)
- [Creating a GitHub endpoint Optional](#creating-a-github-endpoint-optional)
- [Adding credentials](#adding-credentials)
- [Define a repo](#define-a-repo)
- [Create a pool](#create-a-pool)
- [Quick start](#quick-start)
- [Create the config folder](#create-the-config-folder)
- [The config file](#the-config-file)
- [The provider section](#the-provider-section)
- [Starting the service](#starting-the-service)
- [Using Docker](#using-docker)
- [Setting up GARM as a system service](#setting-up-garm-as-a-system-service)
- [Initializing GARM](#initializing-garm)
- [Setting up the webhook](#setting-up-the-webhook)
- [Creating a GitHub endpoint Optional](#creating-a-github-endpoint-optional)
- [Adding credentials](#adding-credentials)
- [Define a repo](#define-a-repo)
- [Create a pool](#create-a-pool)

<!-- /TOC -->

Expand Down Expand Up @@ -93,7 +94,6 @@ This is where you have a decision to make. GARM has a number of providers you ca
* [Amazon EC2](https://github.com/cloudbase/garm-provider-aws)
* [Azure](https://github.com/cloudbase/garm-provider-azure)
* [CloudStack](https://github.com/nexthop-ai/garm-provider-cloudstack)
* [Equinix Metal](https://github.com/cloudbase/garm-provider-equinix)
* [Google Cloud Platform (GCP)](https://github.com/cloudbase/garm-provider-gcp)
* [Incus](https://github.com/cloudbase/garm-provider-incus)
* [Kubernetes](https://github.com/mercedes-benz/garm-provider-k8s) - Thanks to the amazing folks at @mercedes-benz for sharing their awesome provider!
Expand Down Expand Up @@ -279,7 +279,7 @@ Controller information:
Make sure that the URLs in the table above are reachable by the relevant parties.

The metadata and callback URLs *must* be accessible by the runners that GARM spins up.
The base webhook and the controller webhook URLs must be accessible by GitHub or GHES.
The base webhook and the controller webhook URLs must be accessible by GitHub or GHES.
```

Every time you init a new GARM instance, a new profile will be created in your local `garm-cli` config. You can also log into an already initialized instance using:
Expand Down
26 changes: 12 additions & 14 deletions doc/using_garm.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,8 +135,6 @@ ubuntu@garm:~$ garm-cli provider list
+--------------+---------------------------------+----------+
| Amazon EC2 | Amazon EC2 provider | external |
+--------------+---------------------------------+----------+
| equinix | Equinix Metal | external |
+--------------+---------------------------------+----------+
| cloudstack | CloudStack external provider | external |
+--------------+---------------------------------+----------+
```
Expand Down Expand Up @@ -192,7 +190,7 @@ The name of the endpoint needs to be unique within GARM.
To list existing GitHub endpoints, run the following command:

```bash
garm-cli github endpoint list
garm-cli github endpoint list
+------------+--------------------------+-------------------------------+
| NAME | BASE URL | DESCRIPTION |
+------------+--------------------------+-------------------------------+
Expand Down Expand Up @@ -269,7 +267,7 @@ garm-cli github credentials add \
--private-key-path /etc/garm/yiourGarmAppKey.2024-12-12.private-key.pem
```

Notice that in both cases we specified the github endpoint for which these credentials are valid.
Notice that in both cases we specified the github endpoint for which these credentials are valid.

### Listing GitHub credentials

Expand Down Expand Up @@ -428,7 +426,7 @@ garm-cli enterprise add \
--webhook-secret SuperSecretWebhookTokenPleaseReplaceMe
```

The `name` of the enterprise is the ["slug" of the enterprise](https://docs.github.com/en/enterprise-cloud@latest/admin/managing-your-enterprise-account/creating-an-enterprise-account).
The `name` of the enterprise is the ["slug" of the enterprise](https://docs.github.com/en/enterprise-cloud@latest/admin/managing-your-enterprise-account/creating-an-enterprise-account).

You will then have to manually add the `Controller Webhook URL` to the enterprise in the GitHub UI.

Expand Down Expand Up @@ -542,7 +540,7 @@ Let's unpack the command and explain what happened above. We added a new pool of

We also specified the `--min-idle-runners` option to tell GARM to always keep at least 1 runner idle in the pool. This is useful for repositories that have a lot of workflows that run often, and we want to make sure that we always have a runner ready to pick up a job.

If we review the output of the command, we can see that the pool was created with a maximum number of 5 runners. This is just a default we can tweak when creating the pool, or later using the `garm-cli pool update` command. We can also see that the pool was created with a runner botstrap timeout of 20 minutes. This timeout is important on provider where the instance may take a long time to spin up. For example, on Equinix Metal, some operating systems can take a few minutes to install and reboot. This timeout can be tweaked to a higher value to account for this.
If we review the output of the command, we can see that the pool was created with a maximum number of 5 runners. This is just a default we can tweak when creating the pool, or later using the `garm-cli pool update` command. We can also see that the pool was created with a runner botstrap timeout of 20 minutes. This timeout is important on provider where the instance may take a long time to spin up. For example, on OpenStack when using Ironic, some operating systems can take a few minutes to install and reboot. This timeout can be tweaked to a higher value to account for this.

The pool was created with the `--enabled` flag set to `false`, so the pool won't create any runners yet:

Expand Down Expand Up @@ -573,13 +571,13 @@ In the absence or the `--repo`, `--org` or `--enterprise` options, the command w

```bash
ubuntu@garm:~/garm$ garm-cli pool list
+--------------------------------------+---------------------------+--------------+-----------------------------------------+------------------+-------+---------+---------------+----------+
| ID | IMAGE | FLAVOR | TAGS | BELONGS TO | LEVEL | ENABLED | RUNNER PREFIX | PRIORITY |
+--------------------------------------+---------------------------+--------------+-----------------------------------------+------------------+-------+---------+---------------+----------+
| 8935f6a6-f20f-4220-8fa9-9075e7bd7741 | windows_2022 | c3.small.x86 | self-hosted x64 Windows windows equinix | gsamfira/scripts | repo | false | garm | 0 |
+--------------------------------------+---------------------------+--------------+-----------------------------------------+------------------+-------+---------+---------------+----------+
| 9233b3f5-2ccf-4689-8f86-a8a0d656dbeb | runner-upstream:latest | small | self-hosted x64 Linux k8s org | gsamfira | org | false | garm | 0 |
+--------------------------------------+---------------------------+--------------+-----------------------------------------+------------------+-------+---------+---------------+----------+
+--------------------------------------+---------------------------+--------------+---------------------------------+------------------+-------+---------+---------------+----------+
| ID | IMAGE | FLAVOR | TAGS | BELONGS TO | LEVEL | ENABLED | RUNNER PREFIX | PRIORITY |
+--------------------------------------+---------------------------+--------------+---------------------------------+------------------+-------+---------+---------------+----------+
| 8935f6a6-f20f-4220-8fa9-9075e7bd7741 | windows_2022 | c3.small.x86 | self-hosted x64 Windows windows | gsamfira/scripts | repo | false | garm | 0 |
+--------------------------------------+---------------------------+--------------+---------------------------------+------------------+-------+---------+---------------+----------+
| 9233b3f5-2ccf-4689-8f86-a8a0d656dbeb | runner-upstream:latest | small | self-hosted x64 Linux k8s org | gsamfira | org | false | garm | 0 |
+--------------------------------------+---------------------------+--------------+---------------------------------+------------------+-------+---------+---------------+----------+
```

### Showing pool info
Expand Down Expand Up @@ -780,7 +778,7 @@ Awesome! We've covered all the major parts of using GARM. This is all you need t
GARM outputs logs to standard out, log files and optionally to a websocket for easy debugging. This is just a convenience feature that allows you to stream logs to your terminal without having to log into the server. It's disabled by default, but if you enable it, you'll be able to run:

```bash
ubuntu@garm:~$ garm-cli debug-log
ubuntu@garm:~$ garm-cli debug-log
time=2024-02-12T08:36:18.584Z level=INFO msg=access_log method=GET uri=/api/v1/ws user_agent=Go-http-client/1.1 ip=127.0.0.1:47260 code=200 bytes=0 request_time=447.445µs
time=2024-02-12T08:36:31.251Z level=INFO msg=access_log method=GET uri=/api/v1/instances user_agent=Go-http-client/1.1 ip=127.0.0.1:58460 code=200 bytes=1410 request_time=656.184µs
```
Expand Down
Loading