>From 930995ae8a82d4e8ffd95cebea23f4a6c533f82b Mon Sep 17 00:00:00 2001 From: "Konstantin A. Lepikhov" Date: Sat, 4 Dec 2021 14:51:18 +0100 Subject: [PATCH 91/94] features: add gitlab-runner - Add gitlab-runner feature. --- features.in/gitlab-runner/README | 11 ++++ features.in/gitlab-runner/config.mk | 13 ++++ .../rootfs/image-scripts.d/60-gitlab-install | 61 +++++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 features.in/gitlab-runner/README create mode 100644 features.in/gitlab-runner/config.mk create mode 100755 features.in/gitlab-runner/rootfs/image-scripts.d/60-gitlab-install diff --git a/features.in/gitlab-runner/README b/features.in/gitlab-runner/README new file mode 100644 index 00000000..2e09e84b --- /dev/null +++ b/features.in/gitlab-runner/README @@ -0,0 +1,11 @@ +This feature installs gitlab-runner according official guide [1] + +The following envs can be altered: + +GL_USER - define default gitlab-runner username ('gitlab-runner' by default) +GL_SSH_KEY - ssh pubkey added to authorized_keys of GL_USER + +NOTE: this feature depends on network enablement in hasher (see [2] for details) + +1. https://docs.gitlab.com/runner/install/linux-manually.html +2. https://bugzilla.altlinux.org/34596 diff --git a/features.in/gitlab-runner/config.mk b/features.in/gitlab-runner/config.mk new file mode 100644 index 00000000..3bb3e719 --- /dev/null +++ b/features.in/gitlab-runner/config.mk @@ -0,0 +1,13 @@ +# WARNING: the variable values are stored in build config/log! +use/gitlab-runner: + @$(call add_feature) + @$(call add,THE_PACKAGES,shadow-utils passwd curl) + @$(call xport,GL_USER) + @$(call xport,GL_SSH_KEY) + +# some presets +# USERS variable chunk format is "login:passwd:admin:sudo" +# GROUPS are just stashed there to include USERS logins created +# GL_SSH_KEY should be changed accordingly +use/gitlab-runner/defuser: use/gitlab-runner + @$(call add,GL_USER,gitlab-runner) diff --git a/features.in/gitlab-runner/rootfs/image-scripts.d/60-gitlab-install b/features.in/gitlab-runner/rootfs/image-scripts.d/60-gitlab-install new file mode 100755 index 00000000..259c6d97 --- /dev/null +++ b/features.in/gitlab-runner/rootfs/image-scripts.d/60-gitlab-install @@ -0,0 +1,61 @@ +#!/bin/sh -efu + +gl_url="https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-" + +add_user() { + useradd -c 'Gitlab Runner' -m "$1" + [ -z "$GLOBAL_GL_SSH_KEY" ] || echo "$GLOBAL_GL_SSH_KEY" >> /home/"$1"/.ssh/authorized_keys + usermod -L "$1" || + echo "*** failed to add user '$1'" +} + + +case "$GLOBAL_ARCH" in + x86_64) + gl_url="${gl_url}amd64" + ;; + i586) + gl_url="${gl_url}386" + ;; + armh) + gl_url="${gl_url}arm" + ;; + aarch64) + gl_url="${gl_url}arm64" + ;; + ppc64le) + gl_url="${gl_url}ppc64le" + ;; + *) + echo "arch $GLOBAL_ARCH not supported!" + exit 1 + ;; +esac + +if [ -n "$GLOBAL_GL_USER" ]; then + add_user "$GLOBAL_GL_USER" + echo 'nameserver 8.8.8.8' >> /etc/resolv.conf + curl -L --output /usr/local/bin/gitlab-runner "$gl_url" + chmod +x /usr/local/bin/gitlab-runner + cat > /lib/systemd/system/gitlab-runner.service << EOF +[Unit] +Description=GitLab Runner +ConditionFileIsExecutable=/usr/local/bin/gitlab-runner + +After=syslog.target network.target + +[Service] +StartLimitInterval=5 +StartLimitBurst=10 +ExecStart=/usr/bin/gitlab-runner "run" "--working-directory" "/home/$GLOBAL_GL_USER" "--config" "/etc/gitlab-runner/config.toml" "--service" "gitlab-runner" "--user" "$GLOBAL_GL_USER" + +Restart=always + +RestartSec=120 +EnvironmentFile=-/etc/sysconfig/gitlab-runner + +[Install] +WantedBy=multi-user.target +EOF + systemctl enable gitlab-runner +fi -- 2.33.0