Files
linux-scripts/gitlab-docker-register-runner.sh
T
chiefgeek a1a17e81a1 Sync all scripts from website downloads — 352 scripts total
Includes updated JS challenge scripts with Claude-User whitelist,
same-site referer bypass, Blackbox-Exporter allowed bot, and all
new exporters, cheat sheets, and automation scripts.
2026-05-25 03:31:08 +02:00

107 lines
4.3 KiB
Bash

#!/usr/bin/env bash
###############################################################################
# register-runner.sh — GitLab Runner registration helper
#
# Registers the Docker-based GitLab Runner against your GitLab CE instance.
# Designed to work with the gitlab-docker-compose.yml stack.
#
# Usage:
# ./register-runner.sh <runner-token>
# ./register-runner.sh glrt-xxxxxxxxxxxxxxxxxxxx
#
# The runner token is obtained from:
# Admin Area → CI/CD → Runners → New instance runner → Create runner
#
# Author: Phil Connor
# Contact: contact@mylinux.work
# License: MIT
###############################################################################
set -euo pipefail
# ── Defaults ──────────────────────────────────────────────────────────
GITLAB_HOSTNAME="${GITLAB_HOSTNAME:-gitlab.local}"
RUNNER_CONTAINER="${RUNNER_CONTAINER:-gitlab-runner}"
RUNNER_EXECUTOR="${RUNNER_EXECUTOR:-docker}"
RUNNER_IMAGE="${RUNNER_IMAGE:-alpine:latest}"
RUNNER_DESCRIPTION="${RUNNER_DESCRIPTION:-docker-runner}"
RUNNER_TAGS="${RUNNER_TAGS:-docker,linux}"
# ── Colors ────────────────────────────────────────────────────────────
if [[ -t 1 ]]; then
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BOLD='\033[1m'
RESET='\033[0m'
else
RED="" GREEN="" YELLOW="" BOLD="" RESET=""
fi
log() { echo -e "${GREEN}[OK]${RESET} $*"; }
warn() { echo -e "${YELLOW}[WARN]${RESET} $*" >&2; }
err() { echo -e "${RED}[ERROR]${RESET} $*" >&2; }
# ── Validation ────────────────────────────────────────────────────────
if [[ $# -lt 1 ]]; then
echo -e "${BOLD}Usage:${RESET} $(basename "$0") <runner-token>"
echo ""
echo "Get the token from: Admin Area → CI/CD → Runners → New instance runner"
echo ""
echo "Environment variables:"
echo " GITLAB_HOSTNAME GitLab server hostname (default: gitlab.local)"
echo " RUNNER_CONTAINER Runner container name (default: gitlab-runner)"
echo " RUNNER_EXECUTOR Executor type (default: docker)"
echo " RUNNER_IMAGE Default CI image (default: alpine:latest)"
echo " RUNNER_DESCRIPTION Runner description (default: docker-runner)"
echo " RUNNER_TAGS Comma-separated tags (default: docker,linux)"
exit 1
fi
RUNNER_TOKEN="$1"
# Verify the runner container is running
if ! docker inspect "$RUNNER_CONTAINER" &>/dev/null; then
err "Container '${RUNNER_CONTAINER}' not found. Is the stack running?"
err "Run: docker compose up -d"
exit 1
fi
if [[ "$(docker inspect -f '{{.State.Running}}' "$RUNNER_CONTAINER" 2>/dev/null)" != "true" ]]; then
err "Container '${RUNNER_CONTAINER}' is not running."
exit 1
fi
# ── Register ──────────────────────────────────────────────────────────
echo -e "${BOLD}Registering GitLab Runner...${RESET}"
echo " GitLab URL: https://${GITLAB_HOSTNAME}"
echo " Executor: ${RUNNER_EXECUTOR}"
echo " Default image: ${RUNNER_IMAGE}"
echo " Tags: ${RUNNER_TAGS}"
echo " Description: ${RUNNER_DESCRIPTION}"
echo ""
docker exec "$RUNNER_CONTAINER" gitlab-runner register \
--non-interactive \
--url "https://${GITLAB_HOSTNAME}" \
--token "$RUNNER_TOKEN" \
--executor "$RUNNER_EXECUTOR" \
--docker-image "$RUNNER_IMAGE" \
--description "$RUNNER_DESCRIPTION" \
--tag-list "$RUNNER_TAGS" \
--docker-network-mode "gitlab-net" \
--docker-volumes "/var/run/docker.sock:/var/run/docker.sock"
echo ""
# ── Verify ────────────────────────────────────────────────────────────
if docker exec "$RUNNER_CONTAINER" gitlab-runner list 2>&1 | grep -q "$RUNNER_DESCRIPTION"; then
log "Runner registered successfully."
echo ""
docker exec "$RUNNER_CONTAINER" gitlab-runner list
else
warn "Registration completed but runner not found in list. Check logs:"
echo " docker compose logs gitlab-runner"
fi