HEX
Server: nginx/1.29.3
System: Linux mail.sarafai.ru 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
User: www-data (33)
PHP: 7.4.33
Disabled: dl,exec,passthru,shell_exec,system,proc_open,popen,parse_ini_file,show_source
Upload Files
File: //usr/share/gitlab-runner/post-install
#!/bin/sh

set -e

# detect user: first try to use gitlab_ci_multi_runner
for USER in gitlab_ci_multi_runner gitlab-runner; do
  if id -u "$USER" >/dev/null 2>/dev/null; then
    echo "GitLab Runner: detected user $USER"
    break
  fi
done

# Disable
# [skel](https://www.thegeekdiary.com/understanding-the-etc-skel-directory-in-linux/)
# for distributions like Debian buster
# https://gitlab.com/gitlab-org/gitlab-runner/-/issues/1379
GITLAB_RUNNER_DISABLE_SKEL=${GITLAB_RUNNER_DISABLE_SKEL:-true}

# create user if doesn't exist: it will create gitlab-runner if not found
if ! id -u "$USER" >/dev/null 2>/dev/null; then
  echo "GitLab Runner: creating $USER..."

  if [ $GITLAB_RUNNER_DISABLE_SKEL = true ]; then
    echo "Home directory skeleton not used"
    useradd --system --shell /bin/bash --comment 'GitLab Runner' --create-home --skel /dev/null $USER
  else
    useradd --system --shell /bin/bash --comment 'GitLab Runner' --create-home $USER
  fi
fi

# add user to docker group to allow Docker access (insecure)
if id -nG "$USER" | grep -q docker; then
  echo "WARNING: $USER belongs to group docker which is insecure, because allows to have root access to host"
fi

# get USER home directory
eval HOMEDIR=~$USER

# create empty config and re-register runner
mkdir -p /etc/gitlab-runner
chmod 0700 /etc/gitlab-runner
if [ -f $HOMEDIR/config.toml ] && [ ! -f /etc/gitlab-runner/config.toml ]; then
  echo "GitLab Runner: importing configuration to /etc/gitlab-runner/config.toml"
  cp $HOMEDIR/config.toml /etc/gitlab-runner/config.toml
  chmod 0600 /etc/gitlab-runner/config.toml
fi

# uninstall old service
if gitlab-runner status --service="gitlab-runner"; then
  gitlab-runner stop --service="gitlab-runner" >/dev/null 2>/dev/null || :
  gitlab-runner uninstall --service="gitlab-runner" >/dev/null 2>/dev/null || :
fi

# if migrating from pre 10.0.0 installation
if gitlab-runner status --service="gitlab-ci-multi-runner"; then
  gitlab-runner stop --service="gitlab-ci-multi-runner" >/dev/null 2>/dev/null || :
  gitlab-runner uninstall --service="gitlab-ci-multi-runner" >/dev/null 2>/dev/null || :
fi

# re-register runner
gitlab-runner stop >/dev/null 2>/dev/null || :
gitlab-runner uninstall >/dev/null 2>/dev/null || :

# Fix https://gitlab.com/gitlab-org/gitlab-runner/-/issues/37000 by installing gitlab-runner with --init-user if
# $USE_INIT_USER was specified.
if [ -z "${USE_INIT_USER}" ];
then
    gitlab-runner install --user=$USER --working-directory="${HOMEDIR}"
else
    gitlab-runner install --init-user=$USER --working-directory="${HOMEDIR}"
    # If a config.toml does not already exist in the user's $HOMEDIR, copy it from the default config location. This
    # will only be true when using $USE_INIT_USER for the first time.
    targetPath="${HOMEDIR}/config.toml"
    if [ ! -f "${targetPath}" ] && [ -f /etc/gitlab-runner/config.toml ]; then
        cp /etc/gitlab-runner/config.toml "${targetPath}"
        chown $USER:$USER "${targetPath}"
    fi
fi

# start runner service
gitlab-runner start || :