qemu/scripts/ci/setup/gitlab-runner.yml
Alex Bennée 69c4befba1 scripts/ci: update gitlab-runner playbook to use latest runner
We were using quite and old runner on our machines and running into
issues with stalling jobs. Gitlab in the meantime now reliably provide
the latest packaged versions of the runner under a stable URL. This
update:

  - creates a per-arch subdir for builds
  - switches from binary tarballs to deb packages
  - re-uses the same binary for the secondary runner
  - updates distro check for second to 22.04

Note this script isn't fully idempotent as we end up accumulating
runners especially during testing. However we also want to be able to
run twice with different GitLab keys (e.g. project and personal) so I
think we just have to be mindful of that during testing.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Acked-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20230124180127.1881110-2-alex.bennee@linaro.org>
2023-02-02 10:44:23 +00:00

80 lines
3.6 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
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: "/root/"
url: "https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_{{ gitlab_runner_arch }}.deb"
- name: Install gitlab-runner via package manager
apt: deb="/root/gitlab-runner_{{ gitlab_runner_arch }}.deb"
- 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