In a previous post I documented the process of setting up a GitLab Runner using the
gitlab/gitlab-runner Docker image. As of GitLab Runner v16.0.0 the registration process has changed somewhat. This is an update to reflect that change.
Start Runner Container
As before, the first thing that needs to be done is to create an instance of the GitLab Runner container. Ideally you’d do this on a small cloud server instance. I’ve found
nano AWS EC2 instances to be quite adequate.
docker run -d --name gitlab-runner --restart always \ -v /etc/gitlab-runner:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:v16.0.1
Breaking down the components of that command:
-d— launch container in the background;
--name gitlab-runner— give the container a name for easy reference;
--restart always— if the container terminates for some reason then always restart;
-v /etc/gitlab-runner:/etc/gitlab-runner— mount
/etc/gitlab-runneras a volume on the container (this means that configuration information is persisted if the runner is restarted); and
-v /var/run/docker.sock:/var/run/docker.sock— give access to the host’s Docker daemon via the
Check that the container is running happily.
CONTAINER ID IMAGE STATUS NAMES 594671285b14 gitlab/gitlab-runner:v16.0.1 Up 7 minutes gitlab-runner
Generate a Token
Next you need to generate a token. The token will connect the CI/CD pipeline from a specific project (or group) to this runner.
Select the CI/CD option under Settings. Then expand Runners section and press the button.
Fill out the new project runner form.
- Unless there is a strong reason to do otherwise, select Linux for Operating systems.
- Optionally give the runner a description.
- Check the Run untagged jobs configuration option. You can give particular tags for a runner, but I have never had the requirement for this.
Press the button. Copy the token. It will look something like
Register a Runner
Finally you can register the runner.
docker exec -it gitlab-runner gitlab-runner register
You’ll need to provide some information.
- The GitLab instance URL:
https://gitlab.com/(unless you are hosting your own GitLab).
- The registration token acquired above.
- A name for the runner. Choose something distinctive because you might end up with a bunch of runners over time.
- An executor:
- A default Docker image: I normally just go with
The runner will be started and the configuration information will be stored in
/etc/gitlab-runner is volume mounted from the host, this file will be accessible directly from the host. It will look something like this:
concurrent = 1 check_interval = 0 shutdown_timeout = 0 [session_server] session_timeout = 1800 [[runners]] name = "test" url = "https://gitlab.com/" id = 23893876 token = "glrt-GBPzBwXD9WwCpvzHqrXW" token_obtained_at = 2023-05-31T05:55:51Z token_expires_at = 0001-01-01T00:00:00Z executor = "docker" [runners.cache] MaxUploadedArchiveSize = 0 [runners.docker] tls_verify = false image = "alpine" privileged = false disable_entrypoint_overwrite = false oom_kill_disable = false disable_cache = false volumes = ["/cache"] shm_size = 0
Back in GitLab press the button, which will take you to a page listing the freshly created runner.