02f4947603
One of the main reasons to have custom runners it so we can run KVM tests. Enable the "kvm" additional group so we can access the feature on the kernel. Message-Id: <20230503091244.1450613-5-alex.bennee@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reported-by: Peter Maydell <peter.maydell@linaro.org>
97 lines
4.2 KiB
YAML
97 lines
4.2 KiB
YAML
# 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
|
|
groups: kvm
|
|
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 (DEB)
|
|
get_url:
|
|
dest: "/root/"
|
|
url: "https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_{{ gitlab_runner_arch }}.deb"
|
|
when:
|
|
- ansible_facts['distribution'] == 'Ubuntu'
|
|
|
|
- name: Download the matching gitlab-runner (RPM)
|
|
get_url:
|
|
dest: "/root/"
|
|
url: "https://gitlab-runner-downloads.s3.amazonaws.com/latest/rpm/gitlab-runner_{{ gitlab_runner_arch }}.rpm"
|
|
when:
|
|
- ansible_facts['distribution'] == 'CentOS'
|
|
|
|
- name: Install gitlab-runner via package manager (DEB)
|
|
apt: deb="/root/gitlab-runner_{{ gitlab_runner_arch }}.deb"
|
|
when:
|
|
- ansible_facts['distribution'] == 'Ubuntu'
|
|
|
|
- name: Install gitlab-runner via package manager (RPM)
|
|
yum: name="/root/gitlab-runner_{{ gitlab_runner_arch }}.rpm"
|
|
when:
|
|
- ansible_facts['distribution'] == 'CentOS'
|
|
|
|
- name: Register the gitlab-runner
|
|
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\"] }})'"
|
|
|
|
# The secondary runner will still run under the single gitlab-runner service
|
|
- name: Register secondary gitlab-runner
|
|
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\"] }})'"
|
|
when:
|
|
- ansible_facts['distribution'] == 'Ubuntu'
|
|
- ansible_facts['architecture'] == 'aarch64'
|
|
- ansible_facts['distribution_version'] == '22.04'
|
|
|
|
- name: Install the gitlab-runner service using its own functionality
|
|
command: "/usr/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
|