[PATCH 91/94] features: add gitlab-runner

Konstantin A. Lepikhov lakostis at altlinux.ru
Sat Dec 4 16:51:18 MSK 2021


- 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


--Suci8nNDZAk/5tkt
Content-Type: text/x-patch; charset=us-ascii
Content-Disposition: attachment;
	filename="0094-use-gitlab-runner-update-README.patch"



More information about the devel-distro mailing list