xref: /openbmc/qemu/scripts/ci/setup/gitlab-runner.yml (revision a4eb31c678400472de0b4915b9154a7c20d8332f)
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
2902f49476SAlex Bennée        groups: kvm
3040de78c2SCleber Rosa        comment: GitLab Runner
3140de78c2SCleber Rosa        home: /home/gitlab-runner
3240de78c2SCleber Rosa        shell: /bin/bash
3340de78c2SCleber Rosa
3440de78c2SCleber Rosa    - name: Remove the .bash_logout file when on Ubuntu systems
3540de78c2SCleber Rosa      file:
3640de78c2SCleber Rosa        path: /home/gitlab-runner/.bash_logout
3740de78c2SCleber Rosa        state: absent
3840de78c2SCleber Rosa      when: "ansible_facts['distribution'] == 'Ubuntu'"
3940de78c2SCleber Rosa
4040de78c2SCleber Rosa    - name: Set the Operating System for gitlab-runner
4140de78c2SCleber Rosa      set_fact:
4240de78c2SCleber Rosa        gitlab_runner_os: "{{ ansible_facts[\"system\"]|lower }}"
4340de78c2SCleber Rosa    - debug:
4440de78c2SCleber Rosa        msg: gitlab-runner OS is {{ gitlab_runner_os }}
4540de78c2SCleber Rosa
4640de78c2SCleber Rosa    - name: Set the architecture for gitlab-runner
4740de78c2SCleber Rosa      set_fact:
4840de78c2SCleber Rosa        gitlab_runner_arch: "{{ ansible_to_gitlab_arch[ansible_facts[\"architecture\"]] }}"
4940de78c2SCleber Rosa    - debug:
5040de78c2SCleber Rosa        msg: gitlab-runner arch is {{ gitlab_runner_arch }}
5140de78c2SCleber Rosa
52*8c68c11cSAlex Bennée    # Debian/Ubuntu setup
53*8c68c11cSAlex Bennée    - name: Get gitlab-runner repo setup script (DEB)
5440de78c2SCleber Rosa      get_url:
5569c4befbSAlex Bennée        dest: "/root/"
56*8c68c11cSAlex Bennée        url: "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh"
57*8c68c11cSAlex Bennée        mode: 0755
5882790dfeSAlex Bennée      when:
5982790dfeSAlex Bennée        - ansible_facts['distribution'] == 'Ubuntu'
6069c4befbSAlex Bennée
61*8c68c11cSAlex Bennée    - name: Run gitlab-runner repo setup script (DEB)
62*8c68c11cSAlex Bennée      shell: "/root/script.deb.sh"
6382790dfeSAlex Bennée      when:
6482790dfeSAlex Bennée        - ansible_facts['distribution'] == 'Ubuntu'
6582790dfeSAlex Bennée
66*8c68c11cSAlex Bennée    - name: Install gitlab-runner (DEB)
67*8c68c11cSAlex Bennée      ansible.builtin.apt:
68*8c68c11cSAlex Bennée          name: gitlab-runner
69*8c68c11cSAlex Bennée          update_cache: yes
70*8c68c11cSAlex Bennée          state: present
71*8c68c11cSAlex Bennée      when:
72*8c68c11cSAlex Bennée        - ansible_facts['distribution'] == 'Ubuntu'
73*8c68c11cSAlex Bennée
74*8c68c11cSAlex Bennée    # RPM setup
75*8c68c11cSAlex Bennée    - name: Get gitlab-runner repo setup script (RPM)
76*8c68c11cSAlex Bennée      get_url:
77*8c68c11cSAlex Bennée        dest: "/root/"
78*8c68c11cSAlex Bennée        url: "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh"
79*8c68c11cSAlex Bennée        mode: 0755
8082790dfeSAlex Bennée      when:
8182790dfeSAlex Bennée        - ansible_facts['distribution'] == 'CentOS'
8240de78c2SCleber Rosa
83*8c68c11cSAlex Bennée    - name: Run gitlab-runner repo setup script (RPM)
84*8c68c11cSAlex Bennée      shell: "/root/script.rpm.sh"
85*8c68c11cSAlex Bennée      when:
86*8c68c11cSAlex Bennée        - ansible_facts['distribution'] == 'CentOS'
87*8c68c11cSAlex Bennée
88*8c68c11cSAlex Bennée    - name: Install gitlab-runner (RPM)
89*8c68c11cSAlex Bennée      yum:
90*8c68c11cSAlex Bennée        name: gitlab-runner
91*8c68c11cSAlex Bennée        update_cache: yes
92*8c68c11cSAlex Bennée        state: present
93*8c68c11cSAlex Bennée      when:
94*8c68c11cSAlex Bennée        - ansible_facts['distribution'] == 'CentOS'
95*8c68c11cSAlex Bennée
96*8c68c11cSAlex Bennée    # Register Runners
9740de78c2SCleber Rosa    - name: Register the gitlab-runner
9869c4befbSAlex 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\"] }})'"
9969c4befbSAlex Bennée
10069c4befbSAlex Bennée    # The secondary runner will still run under the single gitlab-runner service
10169c4befbSAlex Bennée    - name: Register secondary gitlab-runner
10269c4befbSAlex 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\"] }})'"
10369c4befbSAlex Bennée      when:
10469c4befbSAlex Bennée        - ansible_facts['distribution'] == 'Ubuntu'
10569c4befbSAlex Bennée        - ansible_facts['architecture'] == 'aarch64'
10669c4befbSAlex Bennée        - ansible_facts['distribution_version'] == '22.04'
10740de78c2SCleber Rosa
10840de78c2SCleber Rosa    - name: Install the gitlab-runner service using its own functionality
10969c4befbSAlex Bennée      command: "/usr/bin/gitlab-runner install --user gitlab-runner --working-directory /home/gitlab-runner"
11040de78c2SCleber Rosa      register: gitlab_runner_install_service_result
11140de78c2SCleber Rosa      failed_when: "gitlab_runner_install_service_result.rc != 0 and \"already exists\" not in gitlab_runner_install_service_result.stderr"
11240de78c2SCleber Rosa
11340de78c2SCleber Rosa    - name: Enable the gitlab-runner service
11440de78c2SCleber Rosa      service:
11540de78c2SCleber Rosa        name: gitlab-runner
11640de78c2SCleber Rosa        state: started
11740de78c2SCleber Rosa        enabled: yes
118