xref: /qemu/scripts/ci/setup/gitlab-runner.yml (revision 40de78c284b14a54fbdde78d588ddb6d766f2a5f)
1*40de78c2SCleber Rosa# Copyright (c) 2021 Red Hat, Inc.
2*40de78c2SCleber Rosa#
3*40de78c2SCleber Rosa# Author:
4*40de78c2SCleber Rosa#  Cleber Rosa <crosa@redhat.com>
5*40de78c2SCleber Rosa#
6*40de78c2SCleber Rosa# This work is licensed under the terms of the GNU GPL, version 2 or
7*40de78c2SCleber Rosa# later.  See the COPYING file in the top-level directory.
8*40de78c2SCleber Rosa#
9*40de78c2SCleber Rosa# This is an ansible playbook file.  Run it to set up systems with the
10*40de78c2SCleber Rosa# gitlab-runner agent.
11*40de78c2SCleber Rosa---
12*40de78c2SCleber Rosa- name: Installation of gitlab-runner
13*40de78c2SCleber Rosa  hosts: all
14*40de78c2SCleber Rosa  vars_files:
15*40de78c2SCleber Rosa    - vars.yml
16*40de78c2SCleber Rosa  tasks:
17*40de78c2SCleber Rosa    - debug:
18*40de78c2SCleber Rosa        msg: 'Checking for a valid GitLab registration token'
19*40de78c2SCleber Rosa      failed_when: "gitlab_runner_registration_token == 'PLEASE_PROVIDE_A_VALID_TOKEN'"
20*40de78c2SCleber Rosa
21*40de78c2SCleber Rosa    - name: Create a group for the gitlab-runner service
22*40de78c2SCleber Rosa      group:
23*40de78c2SCleber Rosa        name: gitlab-runner
24*40de78c2SCleber Rosa
25*40de78c2SCleber Rosa    - name: Create a user for the gitlab-runner service
26*40de78c2SCleber Rosa      user:
27*40de78c2SCleber Rosa        user: gitlab-runner
28*40de78c2SCleber Rosa        group: gitlab-runner
29*40de78c2SCleber Rosa        comment: GitLab Runner
30*40de78c2SCleber Rosa        home: /home/gitlab-runner
31*40de78c2SCleber Rosa        shell: /bin/bash
32*40de78c2SCleber Rosa
33*40de78c2SCleber Rosa    - name: Remove the .bash_logout file when on Ubuntu systems
34*40de78c2SCleber Rosa      file:
35*40de78c2SCleber Rosa        path: /home/gitlab-runner/.bash_logout
36*40de78c2SCleber Rosa        state: absent
37*40de78c2SCleber Rosa      when: "ansible_facts['distribution'] == 'Ubuntu'"
38*40de78c2SCleber Rosa
39*40de78c2SCleber Rosa    - name: Set the Operating System for gitlab-runner
40*40de78c2SCleber Rosa      set_fact:
41*40de78c2SCleber Rosa        gitlab_runner_os: "{{ ansible_facts[\"system\"]|lower }}"
42*40de78c2SCleber Rosa    - debug:
43*40de78c2SCleber Rosa        msg: gitlab-runner OS is {{ gitlab_runner_os }}
44*40de78c2SCleber Rosa
45*40de78c2SCleber Rosa    - name: Set the architecture for gitlab-runner
46*40de78c2SCleber Rosa      set_fact:
47*40de78c2SCleber Rosa        gitlab_runner_arch: "{{ ansible_to_gitlab_arch[ansible_facts[\"architecture\"]] }}"
48*40de78c2SCleber Rosa    - debug:
49*40de78c2SCleber Rosa        msg: gitlab-runner arch is {{ gitlab_runner_arch }}
50*40de78c2SCleber Rosa
51*40de78c2SCleber Rosa    - name: Download the matching gitlab-runner
52*40de78c2SCleber Rosa      get_url:
53*40de78c2SCleber Rosa        dest: /usr/local/bin/gitlab-runner
54*40de78c2SCleber Rosa        url: "https://s3.amazonaws.com/gitlab-runner-downloads/v{{ gitlab_runner_version  }}/binaries/gitlab-runner-{{ gitlab_runner_os }}-{{ gitlab_runner_arch }}"
55*40de78c2SCleber Rosa        owner: gitlab-runner
56*40de78c2SCleber Rosa        group: gitlab-runner
57*40de78c2SCleber Rosa        mode: u=rwx,g=rwx,o=rx
58*40de78c2SCleber Rosa
59*40de78c2SCleber Rosa    - name: Register the gitlab-runner
60*40de78c2SCleber Rosa      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\"] }})'"
61*40de78c2SCleber Rosa
62*40de78c2SCleber Rosa    - name: Install the gitlab-runner service using its own functionality
63*40de78c2SCleber Rosa      command: /usr/local/bin/gitlab-runner install --user gitlab-runner --working-directory /home/gitlab-runner
64*40de78c2SCleber Rosa      register: gitlab_runner_install_service_result
65*40de78c2SCleber Rosa      failed_when: "gitlab_runner_install_service_result.rc != 0 and \"already exists\" not in gitlab_runner_install_service_result.stderr"
66*40de78c2SCleber Rosa
67*40de78c2SCleber Rosa    - name: Enable the gitlab-runner service
68*40de78c2SCleber Rosa      service:
69*40de78c2SCleber Rosa        name: gitlab-runner
70*40de78c2SCleber Rosa        state: started
71*40de78c2SCleber Rosa        enabled: yes
72