Skip to content
Snippets Groups Projects
Erick Hitter's avatar
Erick Hitter authored
2c77c7f8

GitLab Runner pipeline status

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"