Using shell scripts rather than inlining shell commands to YAML feels more natural, more readable, and will keep all different variations of execution consistent. Essentially the only disadvantage is that we won't see each command listed one-by-one in gitlab's log output (unless we set -x that is), but given that shell would complain if something was wrong with the script, it's fairly easy to identify the problem. Here's a successful pipeline after the change: https://gitlab.com/eskultety/libvirt/-/pipelines/753090691 Erik Skultety (7): ci: integration: Extract several hidden job definitions to a script ci: integration: Drop the 'install-deps' hidden job and reference ci: integration-template: Drop Fedora 35 check ci: integration.sh: Replace most 'sudo' usage with running as root ci: integration.sh: Add/Rewrite/Reformat commentaries ci: integration.sh: Replace 'test' with '[' operator ci: integration.sh: Define the SCRATCH_DIR variable for local execution ci/integration-template.yml | 42 ++---------------------------- ci/integration.sh | 51 +++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 40 deletions(-) create mode 100644 ci/integration.sh -- 2.39.0