---
title: Charmhub | Deploy gitlab-runner using Charmhub - The Open Operator Collection
description: Deploy the latest version of gitlab-runner on any cloud.
url: https://charmhub.io/gitlab-runner/docs/Examples
---

# gitlab-runner

[Erik Lönroth](https://charmhub.io/publisher/erik-lonroth "View all packages from Erik Lönroth")

* [Erik Lönroth](https://charmhub.io/publisher/erik-lonroth "View all packages from Erik Lönroth")

Platform:

22.04

20.04

18.04

stable 9

```
juju deploy gitlab-runner
```

[Learn to deploy on juju >](https://juju.is/docs/juju/manage-applications)

---

Share your thoughts on this charm with the community on discourse.

[Join the discussion](https://discourse.charmhub.io/)

# Example deploy & scaling

This example show a basic deploy scaling to N runners.

Create a file with your configuration: runner-config.yaml:

```
gitlab-runner:
  gitlab-server: "https://gitlab.example.com"
  gitlab-registration-token: tXwQuDAVmzxzzTtw2-ZL
  tag-list: "juju,docker,master"
  run-untagged: true
```

Then deploy with your config and some instance constraints.

```
  juju deploy --constraints="mem=4G cores=2" ./builds/gitlab-runner --config runner-config.yaml
```

Scale up your deployment with ‘juju add-unit’ and you will get an identical new instance. serving your pipeline:

```
  juju add-unit gitlab-runner
```

Scale down with ‘juju remove-unit’ (will also unregister the instance in gitlab)

```
  juju remove-unit gitlab-runner/0
```

# Example deploy, multiple projects, different sizes

Create two files with your separate configurations.

runner-config-one.yaml

```
gitlab-runner-one:
  gitlab-server: "https://gitlab.example.com"
  gitlab-registration-token: rXwQugergrzxzz32Fw3-44
  tag-list: "juju,docker,master"
  run-untagged: true
```

runner-config-two.yaml

```
gitlab-runner-two:
  gitlab-server: "https://gitlab.example.com"
  gitlab-registration-token: tXwQuDAVmzxzzTtw2-ZL
  tag-list: "juju,docker,daily"
  run-untagged: true
```

Deploy the same charm, using two differnt configs and different constraints.

```
  juju deploy --constraints="mem=4G cores=2" ./builds/gitlab-runner gitlab-runner-one --config runner-config-one.yaml
  juju deploy --constraints="mem=2G cores=1" ./builds/gitlab-runner gitlab-runner-two --config runner-config-two.yaml
```

# Example deploy, relate to prometheus for monitoring

With any of the other examples, add in a prometheus instance:

```
  juju deploy prometheus2 --constraints="mem=4G cores=2"
  juju relate prometheus2 gitlab-runner
  juju expose prometheus2
```

When ready, the prometheus instance will be available on <http://prometheus-instance:9090/>

# Deploy gitlab-runner with prometheus and grafana

```
juju deploy --constraints="mem=4G cores=2" ./builds/gitlab-runner --config runner-config.yaml
juju deploy prometheus2 --constraints="mem=4G cores=2"
juju deploy grafana
juju relate prometheus2 gitlab-runner
juju add-relation prometheus2:grafana-source grafana:grafana-source
juju expose prometheus2
juju expose grafana

# Get the admin password to login to grafana.
juju run-action --wait grafana/0 get-admin-password
```

Browse to <http://grafana:3000/>

One dashboard known to work with the metrics is: <https://grafana.com/grafana/dashboards/8729>

---
