From patchwork Fri May 22 16:35:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Romain Naour X-Patchwork-Id: 1296373 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=busybox.net (client-ip=140.211.166.138; helo=whitealder.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=smile.fr Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=smile-fr.20150623.gappssmtp.com header.i=@smile-fr.20150623.gappssmtp.com header.a=rsa-sha256 header.s=20150623 header.b=qSlimPe3; dkim-atps=neutral Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 49TBtQ01K1z9sSn for ; Sat, 23 May 2020 02:35:25 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id AF98B8853C; Fri, 22 May 2020 16:35:23 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id i4nV8RfG1frJ; Fri, 22 May 2020 16:35:20 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by whitealder.osuosl.org (Postfix) with ESMTP id AE1A388520; Fri, 22 May 2020 16:35:20 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id C12D91BF34D for ; Fri, 22 May 2020 16:35:19 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 99A6B24D07 for ; Fri, 22 May 2020 16:35:19 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id c3CaIEAKmQb5 for ; Fri, 22 May 2020 16:35:16 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) by silver.osuosl.org (Postfix) with ESMTPS id 4C96C228DC for ; Fri, 22 May 2020 16:35:16 +0000 (UTC) Received: by mail-wr1-f51.google.com with SMTP id k13so10798680wrx.3 for ; Fri, 22 May 2020 09:35:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=smile-fr.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=NbFKGDhUSlxySzIicq3Ta+Ar1EPLIKrMQqeI6iLFznA=; b=qSlimPe3QwDBx3Vk8wimH+py481R2lvqKVKGzrHaaPs/O5pIiyBHX0CEk6eAENUQSq znh+eNqiT6+bZApnzfHdvz0CShC+pMzQOvPs/l2hGjIggBUfc6vhTPTjEstVdWLPsqNf UkOvBECAmUG/aqZulObov35eD9NIQMzwbdfJ2NG675ILAPVgxEcwyAAnCbluz9w/TTtJ fyS3WrfAjOvhV1xsRIdol8+KCVb348yylW9+pk59RHW54UzrVqEJwTKOFr2T8N5QWP5Q uuyjAoX6X4NMia51R5mflEDC1Lyecv6VPhqXtQcrFWPDdGKnbCbigMfCiQ0CA+bfeMGe 8kTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=NbFKGDhUSlxySzIicq3Ta+Ar1EPLIKrMQqeI6iLFznA=; b=JjbbRH+dFXQv5L+OjNDcVvqYUtTSxKbHsUqXtFEnPN1PiEdK7COSkuwNq7YmBXDMAb wKJlTjiFp/USO12EMDFB+xnNlu3bm3HrYXlQDUVkh58JFzN9TGJgOHJ2g6BK+h912BAX TOeYXhAFkYF/DW4ScMYiokJSgqPDBs1S1UDUlnOhqA7+bVYpjxEDY1uu6Ewpo+HDwd1g Zgj1+anKSBQDfpbC3zebLO/I2UL7gqSrRUjRqXHOF3g2bi57GxGPhFzaGzMujcDjgZWU rlVvjtHK/bSIXhpSHLlCyvL6zq5wkz3xj47BtM9xTtd+4yWalH4Yz8cSQYUTkiWtGS8C lTcA== X-Gm-Message-State: AOAM533VC1yFK5DG4C0tVaDkR9oPnD0kkzDMJm85vkWFGpAOjTEUiu+r Kjntby5p7L+nl3NqkLUbLStV3ic6Jic= X-Google-Smtp-Source: ABdhPJygJ70MpksSZxunmhoIJywq7Iix4bjbvkShCVtjNCvgYNrKdJA1hC2kY0HlmocFJMJEToUSRA== X-Received: by 2002:adf:ec8e:: with SMTP id z14mr4295865wrn.143.1590165314144; Fri, 22 May 2020 09:35:14 -0700 (PDT) Received: from P-ASN-Evian.vitry.intranet (2a01cb0589880c00c543929d43aec786.ipv6.abo.wanadoo.fr. [2a01:cb05:8988:c00:c543:929d:43ae:c786]) by smtp.gmail.com with ESMTPSA id j1sm10055201wrm.40.2020.05.22.09.35.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 May 2020 09:35:13 -0700 (PDT) From: Romain Naour To: buildroot@buildroot.org Date: Fri, 22 May 2020 18:35:11 +0200 Message-Id: <20200522163511.20487-1-romain.naour@smile.fr> X-Mailer: git-send-email 2.21.3 MIME-Version: 1.0 Subject: [Buildroot] [PATCH v3: for-next] package/gitlab-runner: new package X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Romain Naour , Marcin Niestroj , =?utf-8?b?SsOpcsOpbXkgUm9z?= =?utf-8?b?ZW4=?= Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" From: Marcin Niestroj Signed-off-by: Marcin Niestroj Signed-off-by: Romain Naour Cc: Jérémy Rosen --- v3: Change daemon process to gitlab-runner user. see as example: https://git.buildroot.net/buildroot/tree/package/tpm2-abrmd/S80tpm2-abrmd?h=2020.05-rc2#n31 [Romain: Tested only using systemd init on aarch64 target emulated by Qemu] v2: add service file, config file, gitlab user. add bash as runtime dependency. Add git, curl, ca-certificate, tar runtime dependencies from on debian control file for gitlab-runner package. Use gnu tar since we can expect tar options that are not supported by busybox tar implementation. Enable SSL/TLS library with openssl needed at runtime. Add me as "developer". --- DEVELOPERS | 2 + package/Config.in | 1 + package/gitlab-runner/Config.in | 31 ++++++++++ package/gitlab-runner/S95gitlab-runner | 64 +++++++++++++++++++++ package/gitlab-runner/config.toml | 0 package/gitlab-runner/gitlab-runner.hash | 3 + package/gitlab-runner/gitlab-runner.mk | 39 +++++++++++++ package/gitlab-runner/gitlab-runner.service | 19 ++++++ 8 files changed, 159 insertions(+) create mode 100644 package/gitlab-runner/Config.in create mode 100644 package/gitlab-runner/S95gitlab-runner create mode 100644 package/gitlab-runner/config.toml create mode 100644 package/gitlab-runner/gitlab-runner.hash create mode 100644 package/gitlab-runner/gitlab-runner.mk create mode 100644 package/gitlab-runner/gitlab-runner.service diff --git a/DEVELOPERS b/DEVELOPERS index d1426f6227..fcc7b522db 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1593,6 +1593,7 @@ F: configs/grinn_* F: package/argparse/ F: package/dt-utils/ F: package/easydbus/ +F: package/gitlab-runner/ F: package/lua-flu/ F: package/lua-stdlib/ F: package/luaossl/ @@ -2213,6 +2214,7 @@ F: package/enlightenment/ F: package/flare-engine/ F: package/flare-game/ F: package/gcc/ +F: package/gitlab-runner/ F: package/glibc/ F: package/irrlicht/ F: package/liblinear/ diff --git a/package/Config.in b/package/Config.in index 2871cabfcc..9df8046e55 100644 --- a/package/Config.in +++ b/package/Config.in @@ -1954,6 +1954,7 @@ menu "Miscellaneous" source "package/collectl/Config.in" source "package/domoticz/Config.in" source "package/empty/Config.in" + source "package/gitlab-runner/Config.in" source "package/gnuradio/Config.in" source "package/googlefontdirectory/Config.in" source "package/gqrx/Config.in" diff --git a/package/gitlab-runner/Config.in b/package/gitlab-runner/Config.in new file mode 100644 index 0000000000..72c2742562 --- /dev/null +++ b/package/gitlab-runner/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_GITLAB_RUNNER + bool "gitlab-runner" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # git + depends on BR2_USE_WCHAR # tar + select BR2_PACKAGE_BASH # runtime, shells/bash.go probably want to support bashism. + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash + select BR2_PACKAGE_CA_CERTIFICATES # runtime + select BR2_PACKAGE_GIT # runtime + select BR2_PACKAGE_LIBCURL # runtime + select BR2_PACKAGE_LIBCURL_CURL # runtime + select BR2_PACKAGE_LIBCURL_OPENSSL # runtime, for ca-certificates. + select BR2_PACKAGE_OPENSSL # runtime + select BR2_PACKAGE_LIBOPENSSL # runtime + select BR2_PACKAGE_LIBOPENSSL_BIN # runtime + select BR2_PACKAGE_TAR # runtime + help + GitLab Runner is the open source project that is used to run + your jobs and send the results back to GitLab. It is used in + conjunction with GitLab CI/CD, the open-source continuous + integration service included with GitLab that coordinates the + jobs. + + https://docs.gitlab.com/runner/ + +comment "gitlab-runner needs a toolchain w/ threads" + depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/gitlab-runner/S95gitlab-runner b/package/gitlab-runner/S95gitlab-runner new file mode 100644 index 0000000000..69dcb28cce --- /dev/null +++ b/package/gitlab-runner/S95gitlab-runner @@ -0,0 +1,64 @@ +#!/bin/sh + +DAEMON="gitlab-runner" +PIDFILE="/var/run/$DAEMON.pid" + +GITLAB_RUNNER_ARGS="run" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -S -q -m -b -p "$PIDFILE" -c "$DAEMON:$DAEMON" -x "/usr/bin/$DAEMON" \ + -- $GITLAB_RUNNER_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" -u "$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +reload() { + printf 'Reloading %s: ' "$DAEMON" + start-stop-daemon -K -s HUP -q -p "$PIDFILE" -u "$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +case "$1" in + start|stop|restart|reload) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/gitlab-runner/config.toml b/package/gitlab-runner/config.toml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/package/gitlab-runner/gitlab-runner.hash b/package/gitlab-runner/gitlab-runner.hash new file mode 100644 index 0000000000..2cb7df96a9 --- /dev/null +++ b/package/gitlab-runner/gitlab-runner.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 7f174fb82205bcf67069acadef80b0c7feaeb0dcb2dccec7df8a70d27ca268b2 gitlab-runner-12.10.0.tar.gz +sha256 0ae968b7ddd25da0209c3c6594aac1ac74ddf90385940b02b420463e2e0734de LICENSE diff --git a/package/gitlab-runner/gitlab-runner.mk b/package/gitlab-runner/gitlab-runner.mk new file mode 100644 index 0000000000..bbc22c290b --- /dev/null +++ b/package/gitlab-runner/gitlab-runner.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# gitlab-runner +# +################################################################################ + +GITLAB_RUNNER_VERSION = 12.10.0 +GITLAB_RUNNER_SITE = https://gitlab.com/gitlab-org/gitlab-runner/-/archive/v$(GITLAB_RUNNER_VERSION) +GITLAB_RUNNER_LICENSE = MIT +GITLAB_RUNNER_LICENSE_FILES = LICENSE + +GITLAB_RUNNER_LDFLAGS = \ + -X gitlab.com/gitlab-org/gitlab-runner/common.VERSION=$(GITLAB_RUNNER_VERSION) + +# Don't run gitlab runner as root. +define GITLAB_RUNNER_USERS + gitlab-runner -1 gitlab-runner -1 * /var/run/dbus /bin/false - Gitlab Runner +endef + +define GITLAB_RUNNER_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/gitlab-runner/S95gitlab-runner \ + $(TARGET_DIR)/etc/init.d/S95gitlab-runner +endef + +define GITLAB_RUNNER_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/var/lib/gitlab-runner + $(INSTALL) -D -m 0644 package/gitlab-runner/gitlab-runner.service \ + $(TARGET_DIR)/usr/lib/systemd/system/gitlab-runner.service +endef + +# Install a minimal config.toml otherwise the gitlab-runner is wayting for it. +define GITLAB_RUNNER_INSTALL_CONFIG + $(INSTALL) -D -m 0644 package/gitlab-runner/config.toml \ + $(TARGET_DIR)/etc/gitlab-runner/config.toml +endef + +GITLAB_RUNNER_POST_INSTALL_TARGET_HOOKS += GITLAB_RUNNER_INSTALL_CONFIG + +$(eval $(golang-package)) diff --git a/package/gitlab-runner/gitlab-runner.service b/package/gitlab-runner/gitlab-runner.service new file mode 100644 index 0000000000..3ab134b335 --- /dev/null +++ b/package/gitlab-runner/gitlab-runner.service @@ -0,0 +1,19 @@ +[Unit] +Description=GitLab Runner +After=network.target +ConditionFileIsExecutable=/usr/bin/gitlab-runner + +[Service] +Environment="DAEMON_ARGS=run --working-directory /var/lib/gitlab-runner --config /etc/gitlab-runner/config.toml --service gitlab-runner --syslog --user gitlab-runner" +EnvironmentFile=-/etc/default/%p +StartLimitInterval=5 +StartLimitBurst=10 +ExecStart=/usr/bin/gitlab-runner $DAEMON_ARGS +ExecReload=/bin/kill -HUP $MAINPID + +Restart=always +RestartSec=120 + +[Install] +WantedBy=multi-user.target +Alias=gitlab-ci-multi-runner.service