aboutsummaryrefslogtreecommitdiff
path: root/scripts/ci/setup
diff options
context:
space:
mode:
authorCleber Rosa <crosa@redhat.com>2021-07-09 15:29:28 +0100
committerAlex Bennée <alex.bennee@linaro.org>2021-07-14 14:31:48 +0100
commit40de78c284b14a54fbdde78d588ddb6d766f2a5f (patch)
tree3d99f7537f7a1904e5543e4ccbff9f6a043287f4 /scripts/ci/setup
parent159c5d177bf6f0caf1efb85b850b200ac7043c49 (diff)
downloadqemu-40de78c284b14a54fbdde78d588ddb6d766f2a5f.zip
qemu-40de78c284b14a54fbdde78d588ddb6d766f2a5f.tar.gz
qemu-40de78c284b14a54fbdde78d588ddb6d766f2a5f.tar.bz2
Jobs based on custom runners: docs and gitlab-runner setup playbook
To have the jobs dispatched to custom runners, gitlab-runner must be installed, active as a service and properly configured. The variables file and playbook introduced here should help with those steps. The playbook introduced here covers the Linux distributions and has been primarily tested on OS/machines that the QEMU project has available to act as runners, namely: * Ubuntu 20.04 on aarch64 * Ubuntu 18.04 on s390x But, it should work on all other Linux distributions. Earlier versions were tested on FreeBSD too, so chances of success are high. Signed-off-by: Cleber Rosa <crosa@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Tested-by: Willian Rampazzo <willianr@redhat.com> Tested-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Willian Rampazzo <willianr@redhat.com> Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20210630012619.115262-4-crosa@redhat.com> Message-Id: <20210709143005.1554-4-alex.bennee@linaro.org>
Diffstat (limited to 'scripts/ci/setup')
-rw-r--r--scripts/ci/setup/.gitignore2
-rw-r--r--scripts/ci/setup/gitlab-runner.yml71
-rw-r--r--scripts/ci/setup/vars.yml.template12
3 files changed, 84 insertions, 1 deletions
diff --git a/scripts/ci/setup/.gitignore b/scripts/ci/setup/.gitignore
index ee08860..f4a6183 100644
--- a/scripts/ci/setup/.gitignore
+++ b/scripts/ci/setup/.gitignore
@@ -1,2 +1,2 @@
inventory
-
+vars.yml
diff --git a/scripts/ci/setup/gitlab-runner.yml b/scripts/ci/setup/gitlab-runner.yml
new file mode 100644
index 0000000..1127db5
--- /dev/null
+++ b/scripts/ci/setup/gitlab-runner.yml
@@ -0,0 +1,71 @@
+# 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: /usr/local/bin/gitlab-runner
+ url: "https://s3.amazonaws.com/gitlab-runner-downloads/v{{ gitlab_runner_version }}/binaries/gitlab-runner-{{ gitlab_runner_os }}-{{ gitlab_runner_arch }}"
+ owner: gitlab-runner
+ group: gitlab-runner
+ mode: u=rwx,g=rwx,o=rx
+
+ - name: Register the gitlab-runner
+ 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\"] }})'"
+
+ - name: Install the gitlab-runner service using its own functionality
+ command: /usr/local/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
diff --git a/scripts/ci/setup/vars.yml.template b/scripts/ci/setup/vars.yml.template
new file mode 100644
index 0000000..e480897
--- /dev/null
+++ b/scripts/ci/setup/vars.yml.template
@@ -0,0 +1,12 @@
+# The version of the gitlab-runner to use
+gitlab_runner_version: 13.12.0
+# The URL of the gitlab server to use, usually https://gitlab.com unless you're
+# using a private GitLab instance
+gitlab_runner_server_url: https://gitlab.com
+# A mapping of the ansible to gitlab architecture nomenclature
+ansible_to_gitlab_arch:
+ x86_64: amd64
+ aarch64: arm64
+ s390x: s390x
+# A unique token made available by GitLab to your project for registering runners
+gitlab_runner_registration_token: PLEASE_PROVIDE_A_VALID_TOKEN