#!/bin/bash set -e # Check if script arguments are present, if not exit the script if [ $# -eq 0 ]; then echo "No arguments provided. A GitLab token is required to run this script." exit 1 fi # Constants GITLAB_RUNNER_DOWNLOAD_URL="https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm64" GITLAB_RUNNER_USER_NAME="gitlab-runner" USER_GROUPS="comma,gpu,gpio,sudo" GITLAB_BASE_DIR="/data/gitlab" GITLAB_BIN_DIR="${GITLAB_BASE_DIR}/bin" GITLAB_BUILDS_DIR="${GITLAB_BASE_DIR}/builds" GITLAB_LOGS_DIR="${GITLAB_BASE_DIR}/logs" GITLAB_CACHE_DIR="${GITLAB_BASE_DIR}/cache" GITLAB_OPENPILOT_DIR="${GITLAB_BASE_DIR}/openpilot" SERVICE_NAME="gitlab-runner" create_gitlab_runner_directories() { sudo mkdir -p "$GITLAB_BIN_DIR" "$GITLAB_BUILDS_DIR" "$GITLAB_LOGS_DIR" "$GITLAB_CACHE_DIR" "$GITLAB_OPENPILOT_DIR" mkdir -p "/data/openpilot" sudo chown -R comma:comma "/data/openpilot" } download_and_setup_gitlab_runner() { sudo curl -L --output "$GITLAB_BIN_DIR/gitlab-runner" "$GITLAB_RUNNER_DOWNLOAD_URL" sudo chmod +x "$GITLAB_BIN_DIR/gitlab-runner" } setup_gitlab_runner_user() { sudo useradd --comment 'GitLab Runner' --create-home --home-dir ${GITLAB_BASE_DIR} ${GITLAB_RUNNER_USER_NAME} --shell /bin/bash -G ${USER_GROUPS} || sudo usermod -aG ${USER_GROUPS} ${GITLAB_RUNNER_USER_NAME} export GITLAB_BASE_DIR # Export it to make it available to sub-processes sudo -u ${GITLAB_RUNNER_USER_NAME} bash -c "truncate -s 0 '${GITLAB_BASE_DIR}/.bash_logout'" } create_sudoers_entry() { sudo grep -qxF "${GITLAB_RUNNER_USER_NAME} ALL=(ALL) NOPASSWD: ALL" /etc/sudoers || echo "${GITLAB_RUNNER_USER_NAME} ALL=(ALL) NOPASSWD: ALL" | sudo tee -a /etc/sudoers } generate_gitlab_config_file() { cat <