aboutsummaryrefslogtreecommitdiff
path: root/scripts/ci/setup/gitlab-runner.yml
blob: 33128be85dea627c062ee43900acf7104cac2ba1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# Copyright (c) 2021 Red Hat, Inc.
#
# Author:
#  Cleber Rosa <crosa@redhat.com>
#
# This work is licensed under the terms of the GNU GPL, version 2 or
# later.  See the COPYING file in the top-level directory.
#
# This is an ansible playbook file.  Run it to set up systems with the
# gitlab-runner agent.
---
- name: Installation of gitlab-runner
  hosts: all
  vars_files:
    - vars.yml
  tasks:
    - debug:
        msg: 'Checking for a valid GitLab registration token'
      failed_when: "gitlab_runner_registration_token == 'PLEASE_PROVIDE_A_VALID_TOKEN'"

    - name: Create a group for the gitlab-runner service
      group:
        name: gitlab-runner

    - name: Create a user for the gitlab-runner service
      user:
        user: gitlab-runner
        group: gitlab-runner
        comment: GitLab Runner
        home: /home/gitlab-runner
        shell: /bin/bash

    - name: Remove the .bash_logout file when on Ubuntu systems
      file:
        path: /home/gitlab-runner/.bash_logout
        state: absent
      when: "ansible_facts['distribution'] == 'Ubuntu'"

    - name: Set the Operating System for gitlab-runner
      set_fact:
        gitlab_runner_os: "{{ ansible_facts[\"system\"]|lower }}"
    - debug:
        msg: gitlab-runner OS is {{ gitlab_runner_os }}

    - name: Set the architecture for gitlab-runner
      set_fact:
        gitlab_runner_arch: "{{ ansible_to_gitlab_arch[ansible_facts[\"architecture\"]] }}"
    - debug:
        msg: gitlab-runner arch is {{ gitlab_runner_arch }}

    - name: Download the matching gitlab-runner
      get_url:
        dest: /usr/local/bin/gitlab-runner
        url: "https://s3.amazonaws.com/gitlab-runner-downloads/v{{ gitlab_runner_version  }}/binaries/gitlab-runner-{{ gitlab_runner_os }}-{{ gitlab_runner_arch }}"
        owner: gitlab-runner
        group: gitlab-runner
        mode: u=rwx,g=rwx,o=rx

    - name: Register the gitlab-runner
      command: "/usr/local/bin/gitlab-runner register --non-interactive --url {{ gitlab_runner_server_url }} --registration-token {{ gitlab_runner_registration_token }} --executor shell --tag-list {{ ansible_facts[\"architecture\"] }},{{ ansible_facts[\"distribution\"]|lower }}_{{ ansible_facts[\"distribution_version\"] }} --description '{{ ansible_facts[\"distribution\"] }} {{ ansible_facts[\"distribution_version\"] }} {{ ansible_facts[\"architecture\"] }} ({{ ansible_facts[\"os_family\"] }})'"

    - name: Install the gitlab-runner service using its own functionality
      command: /usr/local/bin/gitlab-runner install --user gitlab-runner --working-directory /home/gitlab-runner
      register: gitlab_runner_install_service_result
      failed_when: "gitlab_runner_install_service_result.rc != 0 and \"already exists\" not in gitlab_runner_install_service_result.stderr"

    - name: Enable the gitlab-runner service
      service:
        name: gitlab-runner
        state: started
        enabled: yes

    - name: Download secondary gitlab-runner
      get_url:
        dest: /usr/local/bin/gitlab-runner-arm
        url: "https://s3.amazonaws.com/gitlab-runner-downloads/v{{ gitlab_runner_version  }}/binaries/gitlab-runner-{{ gitlab_runner_os }}-arm"
        owner: gitlab-runner
        group: gitlab-runner
        mode: u=rwx,g=rwx,o=rx
      when:
        - ansible_facts['distribution'] == 'Ubuntu'
        - ansible_facts['architecture'] == 'aarch64'
        - ansible_facts['distribution_version'] == '20.04'

    - name: Register secondary gitlab-runner
      command: "/usr/local/bin/gitlab-runner-arm register --non-interactive --url {{ gitlab_runner_server_url }} --registration-token {{ gitlab_runner_registration_token }} --executor shell --tag-list aarch32,{{ ansible_facts[\"distribution\"]|lower }}_{{ ansible_facts[\"distribution_version\"] }} --description '{{ ansible_facts[\"distribution\"] }} {{ ansible_facts[\"distribution_version\"] }} {{ ansible_facts[\"architecture\"] }} ({{ ansible_facts[\"os_family\"] }})'"
      when:
        - ansible_facts['distribution'] == 'Ubuntu'
        - ansible_facts['architecture'] == 'aarch64'
        - ansible_facts['distribution_version'] == '20.04'

    - name: Install the secondary gitlab-runner service using its own functionality
      command: /usr/local/bin/gitlab-runner-arm install --user gitlab-runner --working-directory /home/gitlab-runner/arm -n gitlab-runner-arm
      register: gitlab_runner_install_service_result
      failed_when: "gitlab_runner_install_service_result.rc != 0 and \"already exists\" not in gitlab_runner_install_service_result.stderr"
      when:
        - ansible_facts['distribution'] == 'Ubuntu'
        - ansible_facts['architecture'] == 'aarch64'
        - ansible_facts['distribution_version'] == '20.04'

    - name: Enable the secondary gitlab-runner service
      service:
        name: gitlab-runner-arm
        state: started
        enabled: yes
      when:
        - ansible_facts['distribution'] == 'Ubuntu'
        - ansible_facts['architecture'] == 'aarch64'
        - ansible_facts['distribution_version'] == '20.04'