From 88e6d199d28f72123a7ac0929b8feef40e89c022 Mon Sep 17 00:00:00 2001 From: "lintao@ihep.ac.cn" Date: Wed, 13 Mar 2024 14:09:44 +0000 Subject: [PATCH] add gitlab runner. --- .ci/gitlab/setup-gitlab-runner.sh | 110 ++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 .ci/gitlab/setup-gitlab-runner.sh diff --git a/.ci/gitlab/setup-gitlab-runner.sh b/.ci/gitlab/setup-gitlab-runner.sh new file mode 100644 index 000000000..36b3bb7d3 --- /dev/null +++ b/.ci/gitlab/setup-gitlab-runner.sh @@ -0,0 +1,110 @@ +#!/bin/bash +############################################ +# Description: +# Manage the gitlab runners +# Usage: +# $ ./setup-gitlab-runner new +# $ ./setup-gitlab-runner start +# +# Register in crontab: +# +# */10 * * * * $HOME/setup-github-runner.sh start >& /tmp/$USER/github-runner/start.log +# +# Author: Tao Lin +############################################ + +############################################# +# Configuration +############################################# +export RUNNER_TOP_DIR=/tmp/$USER/gitlab-runner +export SINGULARITY_BINDPATH=/cvmfs +export RUNNER_URL=https://code.ihep.ac.cn + +[ -d "$RUNNER_TOP_DIR" ] || mkdir $RUNNER_TOP_DIR + +############################################# +# Create a new gitlab runner (glr) +############################################# + +# ./gitlab-runner register --url https://code.ihep.ac.cn --token XXXXXX + +function glr-preq() { + # if $HOME/gitlab-runner exists + if [ -f "$HOME/gitlab-runner" ]; then + cp $HOME/gitlab-runner . + else + curl -L --output gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64 + fi + + chmod +x gitlab-runner + +} + +function glr-new() { + local runner_url=$1; shift + local token=$1; shift + local executor=${1:-shell}; shift + local shell=${1:-bash}; shift + + pushd $RUNNER_TOP_DIR + + # check if gitlab-runner exists + if [ ! -f gitlab-runner ]; then + glr-preq + fi + + ./gitlab-runner register --url $runner_url --token $token --executor $executor --shell $shell + + popd +} + +function new() { + local token=$1; shift + if [ -z "$token" ]; then + echo "Please pass the token to this script" 1>&2 + exit -1 + fi + glr-new $RUNNER_URL $token + +} + +############################################# +# Create a new gitlab runner (glr) +############################################# + +function glr-start() { + local glr=gitlab-runner + + pushd $RUNNER_TOP_DIR + + apptainer instance start ~/github-runner.sif ${glr} + apptainer run instance://${glr} bash -c "./gitlab-runner run -c ./config.toml &" + + popd +} + +function start() { + glr-start +} + +############################################# +# Command line options +############################################# + +cmd=$1; shift +if [ -z "$cmd" ]; then + echo "Please specify the command to be invoked" 1>&2 + exit -1 +fi + +case $cmd in + new) + new $* + ;; + start) + start $* + ;; + *) + echo "Unknown command '$cmd'" 1>&2 + ;; +esac