xref: /qemu/scripts/ci/setup/gitlab-runner.yml (revision 69c4befba15ff5ace7408e0f107c38c699c294a4)
140de78c2SCleber Rosa# Copyright (c) 2021 Red Hat, Inc.
240de78c2SCleber Rosa#
340de78c2SCleber Rosa# Author:
440de78c2SCleber Rosa#  Cleber Rosa <crosa@redhat.com>
540de78c2SCleber Rosa#
640de78c2SCleber Rosa# This work is licensed under the terms of the GNU GPL, version 2 or
740de78c2SCleber Rosa# later.  See the COPYING file in the top-level directory.
840de78c2SCleber Rosa#
940de78c2SCleber Rosa# This is an ansible playbook file.  Run it to set up systems with the
1040de78c2SCleber Rosa# gitlab-runner agent.
1140de78c2SCleber Rosa---
1240de78c2SCleber Rosa- name: Installation of gitlab-runner
1340de78c2SCleber Rosa  hosts: all
1440de78c2SCleber Rosa  vars_files:
1540de78c2SCleber Rosa    - vars.yml
1640de78c2SCleber Rosa  tasks:
1740de78c2SCleber Rosa    - debug:
1840de78c2SCleber Rosa        msg: 'Checking for a valid GitLab registration token'
1940de78c2SCleber Rosa      failed_when: "gitlab_runner_registration_token == 'PLEASE_PROVIDE_A_VALID_TOKEN'"
2040de78c2SCleber Rosa
2140de78c2SCleber Rosa    - name: Create a group for the gitlab-runner service
2240de78c2SCleber Rosa      group:
2340de78c2SCleber Rosa        name: gitlab-runner
2440de78c2SCleber Rosa
2540de78c2SCleber Rosa    - name: Create a user for the gitlab-runner service
2640de78c2SCleber Rosa      user:
2740de78c2SCleber Rosa        user: gitlab-runner
2840de78c2SCleber Rosa        group: gitlab-runner
2940de78c2SCleber Rosa        comment: GitLab Runner
3040de78c2SCleber Rosa        home: /home/gitlab-runner
3140de78c2SCleber Rosa        shell: /bin/bash
3240de78c2SCleber Rosa
3340de78c2SCleber Rosa    - name: Remove the .bash_logout file when on Ubuntu systems
3440de78c2SCleber Rosa      file:
3540de78c2SCleber Rosa        path: /home/gitlab-runner/.bash_logout
3640de78c2SCleber Rosa        state: absent
3740de78c2SCleber Rosa      when: "ansible_facts['distribution'] == 'Ubuntu'"
3840de78c2SCleber Rosa
3940de78c2SCleber Rosa    - name: Set the Operating System for gitlab-runner
4040de78c2SCleber Rosa      set_fact:
4140de78c2SCleber Rosa        gitlab_runner_os: "{{ ansible_facts[\"system\"]|lower }}"
4240de78c2SCleber Rosa    - debug:
4340de78c2SCleber Rosa        msg: gitlab-runner OS is {{ gitlab_runner_os }}
4440de78c2SCleber Rosa
4540de78c2SCleber Rosa    - name: Set the architecture for gitlab-runner
4640de78c2SCleber Rosa      set_fact:
4740de78c2SCleber Rosa        gitlab_runner_arch: "{{ ansible_to_gitlab_arch[ansible_facts[\"architecture\"]] }}"
4840de78c2SCleber Rosa    - debug:
4940de78c2SCleber Rosa        msg: gitlab-runner arch is {{ gitlab_runner_arch }}
5040de78c2SCleber Rosa
5140de78c2SCleber Rosa    - name: Download the matching gitlab-runner
5240de78c2SCleber Rosa      get_url:
53*69c4befbSAlex Bennée        dest: "/root/"
54*69c4befbSAlex Bennée        url: "https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_{{ gitlab_runner_arch }}.deb"
55*69c4befbSAlex Bennée
56*69c4befbSAlex Bennée    - name: Install gitlab-runner via package manager
57*69c4befbSAlex Bennée      apt: deb="/root/gitlab-runner_{{ gitlab_runner_arch }}.deb"
5840de78c2SCleber Rosa
5940de78c2SCleber Rosa    - name: Register the gitlab-runner
60*69c4befbSAlex Bennée      command: "/usr/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*69c4befbSAlex Bennée
62*69c4befbSAlex Bennée    # The secondary runner will still run under the single gitlab-runner service
63*69c4befbSAlex Bennée    - name: Register secondary gitlab-runner
64*69c4befbSAlex Bennée      command: "/usr/bin/gitlab-runner 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\"] }})'"
65*69c4befbSAlex Bennée      when:
66*69c4befbSAlex Bennée        - ansible_facts['distribution'] == 'Ubuntu'
67*69c4befbSAlex Bennée        - ansible_facts['architecture'] == 'aarch64'
68*69c4befbSAlex Bennée        - ansible_facts['distribution_version'] == '22.04'
6940de78c2SCleber Rosa
7040de78c2SCleber Rosa    - name: Install the gitlab-runner service using its own functionality
71*69c4befbSAlex Bennée      command: "/usr/bin/gitlab-runner install --user gitlab-runner --working-directory /home/gitlab-runner"
7240de78c2SCleber Rosa      register: gitlab_runner_install_service_result
7340de78c2SCleber Rosa      failed_when: "gitlab_runner_install_service_result.rc != 0 and \"already exists\" not in gitlab_runner_install_service_result.stderr"
7440de78c2SCleber Rosa
7540de78c2SCleber Rosa    - name: Enable the gitlab-runner service
7640de78c2SCleber Rosa      service:
7740de78c2SCleber Rosa        name: gitlab-runner
7840de78c2SCleber Rosa        state: started
7940de78c2SCleber Rosa        enabled: yes
80