Commit 0082431a authored by Dom Sekotill's avatar Dom Sekotill
Browse files

Implement an unregister command

parent 286cb2bb
Loading
Loading
Loading
Loading
+57 −20
Original line number Diff line number Diff line
@@ -15,7 +15,9 @@ test -e ${CONFIG_FILE} &&

usage() {
	cat <<-END
	Usage: $0 [-h] [-d DESCRIPTION] [-u COORDINATOR] TOKEN [NAME]
	Usage:
	  $0 [-h] [register] [-d DESCRIPTION] [-u COORDINATOR] TOKEN [NAME]
	  $0 [-h] unregister RUNNER_NAME

	Options:
	  -h --help         Print this message and exit
@@ -25,9 +27,11 @@ usage() {

	Arguments:
	  TOKEN  A registration token provided by the co-ordinator (GitLab) instance
	  NAME   An instance name to identify this runner.
	  NAME   An instance name to identify a new runner.
	         Defaults to "${FQDN}/%02i" where "%i" is an auto-generated
	         index.
	  RUNNER_NAME
	         The name of an existing runner to unregister
	END
}

@@ -59,6 +63,23 @@ config_help() {
	END
}


case $1 in
	unregister)
		shift
		COMMAND=unregister
		ARGUMENTS=( RUNNER_NAME )
		# Disable flags not allowed for unregister
		declare -r DESCRIPTION COORDINATOR_URL
		;;
	register) shift ;&
	*)
		COMMAND=register
		ARGUMENTS=( TOKEN NAME )
		;;
esac


offset=0
while [[ $# -gt 0 ]]; do
	case "$1" in
@@ -79,7 +100,7 @@ done

set -- "${ARGS[@]}"
declare -n arg_var
for arg_var in TOKEN NAME; do
for arg_var in "${ARGUMENTS[@]}"; do
	[[ $# -gt 0 ]] || break
	arg_var=$1
	shift
@@ -122,13 +143,15 @@ find_name() {
	exit 1
}

case $COMMAND in
	register)
		find_name

		docker run --rm -t -i -v ${RUNNER_CONFIG}:/etc/gitlab-runner \
			${IMAGE} register \
			--non-interactive \
	--url ${COORDINATOR_URL? Need COORDINATOR_URL in configs or environment, or --url} \
	--registration-token ${TOKEN? A registration token is required} \
			--url ${COORDINATOR_URL:? Need COORDINATOR_URL in configs or environment, or --url} \
			--registration-token ${TOKEN:? A registration token is required} \
			--description ${DESCRIPTION-$DEFAULT_DESCRIPTION} \
			--executor docker \
			--docker-image docker:stable \
@@ -139,3 +162,17 @@ docker run --rm -t -i -v ${RUNNER_CONFIG}:/etc/gitlab-runner \

		systemctl enable ${SYSTEMD_UNIT}
		systemctl start ${SYSTEMD_UNIT}
		;;

	unregister)
		NAME=${RUNNER_NAME:?} set_name

		systemctl stop ${SYSTEMD_UNIT}
		systemctl disable ${SYSTEMD_UNIT}

		docker run --rm -t -i -v ${RUNNER_CONFIG}:/etc/gitlab-runner \
			${IMAGE} unregister --name ${RUNNER_NAME}

		rm -r ${RUNNER_CONFIG:?}
		;;
esac