diff --git a/devel/gitlab-runner/Makefile b/devel/gitlab-runner/Makefile index e3cdc26faac1..d6dee5a6ecc7 100644 --- a/devel/gitlab-runner/Makefile +++ b/devel/gitlab-runner/Makefile @@ -1,80 +1,81 @@ PORTNAME= gitlab-runner DISTVERSIONPREFIX= v DISTVERSION= 19.2.0 +PORTREVISION= 1 CATEGORIES= devel MASTER_SITES= https://gitlab-runner-downloads.s3.amazonaws.com/master/docker/:dockerx64 \ https://gitlab-runner-downloads.s3.amazonaws.com/master/docker/:dockerarm DISTFILES= prebuilt-x86_64.tar.xz:dockerx64 \ prebuilt-arm.tar.xz:dockerarm #PATCH_SITES= https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/ #PATCHFILES+= 5966.patch:-p1 # https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5966, Fix bash shell cleanup to support variable expansion in paths #PATCH_SITES= https://gitlab.com/mfechner/gitlab-runner/-/commit/ #PATCHFILES+= 2f12af03ccd5fe875d583ddc8b976329b635fd22.patch:-p1 MAINTAINER= mfechner@FreeBSD.org COMMENT= Official GitLab Runner written in Go WWW= https://gitlab.com/gitlab-org/gitlab-runner LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE BUILD_DEPENDS= go-bindata:devel/go-bindata RUN_DEPENDS= bash:shells/bash \ ca_root_nss>=0:security/ca_root_nss \ git:devel/git \ gitlab-analyzers-secrets>=0:security/gitlab-analyzers-secrets USES= cpe go:modules CPE_PRODUCT= runner CPE_VENDOR= gitlab USE_GITLAB= yes GL_ACCOUNT= gitlab-org USE_RC_SUBR= gitlab_runner # this branch removes the replace line in go.mod which breaks the way FreeBSD ports build go packages GO_MOD_DIST= https://gitlab.com/mfechner/gitlab-runner/-/raw/19-2-stable/ GITBRANCH= 19-2-stable GO_MODULE= gitlab.com/gitlab-org/gitlab-runner _BUILD_DATE= $$(date -u +%Y-%m-%dT%H:%M:%S%z) GO_BUILDFLAGS= -ldflags=" \ -X gitlab.com/gitlab-org/gitlab-runner/commands.ROOTCONFIGDIR=${ETCDIR} \ -X gitlab.com/gitlab-org/gitlab-runner/common.VERSION=${PORTVERSION} \ -X gitlab.com/gitlab-org/gitlab-runner/common.REVISION=${DISTVERSION} \ -X gitlab.com/gitlab-org/gitlab-runner/common.BUILT=${_BUILD_DATE} \ -X gitlab.com/gitlab-org/gitlab-runner/common.BRANCH=${GITBRANCH} \ -s -w" # for go dependencies # Gitlab hosts there dependencies on their own platform and not on go-proxy # so we download the required go.mod file from gitlab # lines are taken from go.mk # --------------------------- #MASTER_SITES+= https://gitlab.com/gitlab-org/gitlab-runner/-/raw/v${DISTVERSION}/ #DISTFILES+= go.mod EXTRACT_ONLY+= ${DISTFILES:N*.mod\:*:N*.mod:C/:.*//:Nprebuilt*:} # --------------------------- USERS= gitlab-runner GROUPS= gitlab-runner PLIST_FILES= bin/gitlab-runner post-patch: @${MKDIR} ${WRKSRC}/out/docker/ @${CP} ${DISTDIR}/${DIST_SUBDIR}/prebuilt-x86_64.tar.xz ${WRKSRC}/out/docker/ @${CP} ${DISTDIR}/${DIST_SUBDIR}/prebuilt-arm.tar.xz ${WRKSRC}/out/docker/ pre-build: @cd ${WRKSRC} && go-bindata \ -pkg docker \ -nocompress \ -nomemcopy \ -nometadata \ -prefix out/docker/ \ -o executors/docker/bindata.go \ out/docker/prebuilt-x86_64.tar.xz \ out/docker/prebuilt-arm.tar.xz .include diff --git a/devel/gitlab-runner/files/gitlab_runner.in b/devel/gitlab-runner/files/gitlab_runner.in index 48e7caba1c90..d2b1a0fea5f7 100644 --- a/devel/gitlab-runner/files/gitlab_runner.in +++ b/devel/gitlab-runner/files/gitlab_runner.in @@ -1,70 +1,92 @@ #!/bin/sh # PROVIDE: gitlab_runner # REQUIRE: DAEMON NETWORKING # KEYWORD: shutdown # # Add the following line to /etc/rc.conf to enable gitlab_runner: # # gitlab_runner_enable (bool): Set to "NO" by default. # Set it to "YES" to enable gitlab-runner # gitlab_runner_dir (str): Set to "/var/tmp/gitlab_runner" by default. # Set it to directory to run gitlab-runner in # gitlab_runner_user (str): Set to "gitlab-runner" by default. # Set it to user to run gitlab_runner under # gitlab_runner_group (str): Set to "gitlab-runner" by default. # Set it to group to run gitlab-runner under # gitlab_runner_syslogtag (str):Set to "gitlab-runner" by default. # Set it to tag to be used by syslog # . /etc/rc.subr name="gitlab_runner" rcvar="gitlab_runner_enable" load_rc_config $name : ${gitlab_runner_enable:="NO"} : ${gitlab_runner_dir:="/var/tmp/gitlab_runner"} : ${gitlab_runner_user:="gitlab-runner"} : ${gitlab_runner_group:="gitlab-runner"} : ${gitlab_runner_syslogtag:="gitlab-runner"} : ${gitlab_runner_svcj_options:="net_basic"} export HOME=${gitlab_runner_dir} export PATH=${PATH}:%%PREFIX%%/bin pidfile="/var/run/${name}.pid" +pidfile_child="/var/run/${name}_child.pid" + command="/usr/sbin/daemon" -command_args="-f -p ${pidfile} env HOME=${gitlab_runner_dir} ${gitlab_runner_env} %%PREFIX%%/bin/gitlab-runner run --syslog --service ${gitlab_runner_syslogtag}" +command_args="-P ${pidfile} -p ${pidfile_child} -f env HOME=${gitlab_runner_dir} ${gitlab_runner_env} %%PREFIX%%/bin/gitlab-runner run --syslog --service ${gitlab_runner_syslogtag}" gitlab_runner_chdir="${gitlab_runner_dir}" - -procname=%%PREFIX%%/bin/gitlab-runner +rc_stop_wait=7200 start_precmd="gitlab_runner_startprecmd" +stop_cmd="gitlab_runner_stop" list_cmd="listfunc" register_cmd="registerfunc" listfunc() { su -m ${gitlab_runner_user} -c "env HOME=${gitlab_runner_dir} ${gitlab_runner_env} %%PREFIX%%/bin/gitlab-runner list" } registerfunc() { su -m ${gitlab_runner_user} -c "env HOME=${gitlab_runner_dir} ${gitlab_runner_env} %%PREFIX%%/bin/gitlab-runner register" } gitlab_runner_startprecmd() { if [ ! -e "${pidfile}" ]; then - install -g ${gitlab_runner_group} -o ${gitlab_runner_user} -- /dev/null "${pidfile}"; + install -g ${gitlab_runner_group} -o ${gitlab_runner_user} -- /dev/null "${pidfile}" fi + if [ ! -e "${pidfile_child}" ]; then + install -g ${gitlab_runner_group} -o ${gitlab_runner_user} -- /dev/null "${pidfile_child}" + fi if [ ! -d "${gitlab_runner_dir}" ]; then install -d -o "${gitlab_runner_user}" -g "${gitlab_runner_group}" "${gitlab_runner_dir}" fi } +gitlab_runner_stop() +{ + if [ ! -f "${pidfile_child}" ]; then + echo "${name} not running" + return 0 + fi + child_pid=$(cat ${pidfile_child}) + if [ -z "${child_pid}" ]; then + echo "${name} not running" + return 0 + fi + echo "Sending SIGQUIT to gitlab-runner (pid=${child_pid})" + kill -QUIT ${child_pid} + # Wait for the daemon supervisor to exit, which happens after the child exits + wait_for_pids $(cat ${pidfile} 2>/dev/null) +} + extra_commands="list register" run_rc_command $1