Install GitLab Runner using Docker Machine and Digital Ocean for on-demand instance creation. See https://www.digitalocean.com/community/tutorials/how-to-autoscale-gitlab-continuous-deployment-with-gitlab-runner-on-digitalocean.
This is intended to be installed on the same host as the GitLab instance, spinning up hosts as needed and quickly tearing them down. If your CI activity is frequent, the gitlab_runner_machine_idle_time
variable should be increased so hosts can be reused.
Requirements
This role requires Ansible 2.0 or higher.
Role Variables
gitlab_runner_package_name
Since Gitlab 10.x The package name of gitlab-ci-multi-runner
has been renamed to gitlab-runner
. In order to install a version >= 10.x you will need to define this variable gitlab_runner_package_name: gitlab-runner
.
gitlab_runner_concurrent
The maximum number of global jobs to run concurrently. Defaults to the number of processor cores.
gitlab_runner_registration_token
The GitLab registration token. If this is specified, a runner will be registered to a GitLab server.
gitlab_runner_coordinator_url
The GitLab coordinator URL.
Defaults to https://gitlab.com/ci
.
gitlab_runner_description_base
Base description of the runner. Defaults to the hostname.
gitlab_runner_executor
The executor used by the runner.
Defaults to shell
.
gitlab_runner_concurrent_specific
The maximum number of jobs to run concurrently on this specific runner. Defaults to 0, simply means don't limit.
gitlab_runner_docker_image
The default Docker image to use. Required when executor is docker
.
gitlab_runner_tags
Default tags assigned to the runner, Defaults to an empty list.
gitlab_runner_machine_idle_nodes
How many idle machines to maintain. Defaults to 0
, meaning all hosts are created on-demand then culled after gitlab_runner_machine_idle_time
minutes.
gitlab_runner_machine_idle_time
How long, in minutes, a machine can be idle before it's destroyed. Default is 3
.
gitlab_runners
Dict of runners
gitlab_runners:
- {
description: '{{ gitlab_runner_description_base }}',
tags: [],
locked: false,
token: ''
}
gitlab_runner_cache_type
Variables to set s3
as a shared cache server. If set it requires variables listed below:
gitlab_runner_cache_s3_server_address
gitlab_runner_cache_s3_access_key
gitlab_runner_cache_s3_secret_key
gitlab_runner_cache_s3_bucket_name
gitlab_runner_cache_s3_insecure
gitlab_runner_cache_cache_shared
See the config for more options
Example Playbook
- hosts: all
remote_user: root
vars_files:
- vars/main.yml
roles:
- { role: riemers.gitlab-runner }
Inside vars/main.yml
gitlab_runner_registration_token: 'HUzTMgnxk17YV8Rj8ucQ'
gitlab_runner_description: 'Example GitLab Runner'
gitlab_runner_tags:
- node
- ruby
- mysql
gitlab_runner_docker_volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "/cache"