GitLab Runner

# Install runner
docker pull gitlab/gitlab-runner:latest

# Create volume for configuration data
# Path: `$XDG_DATA_HOME/docker/volumes/gitlab-runner-<id>-config/_data/config.toml`
docker volume create gitlab-runner-<id>-config

# Register runner
# <url> = https://gitlab.com for GitLab
# <url> and <token> are found in Settings->CI/CD->Runners
docker run --rm \
  -v gitlab-runner-<id>-config:/etc/gitlab-runner \
  gitlab/gitlab-runner:latest register \
    --non-interactive \
    --name "gitlab-runner-<id>" \
    --limit 6 \
    --request-concurrency 6 \
    --url "https://gitlab.com" \
    --token "<token>" \
    --executor "docker" \
    --env "FF_NETWORK_PER_BUILD=1" \
    --env "FF_POSIXLY_CORRECT_ESCAPES=1" \
    --docker-image "alpine:latest" \
    --docker-pull-policy "if-not-present"

# Start runner with associated volume
docker run -d \
  --name gitlab-runner-<id> \
  -v $XDG_RUNTIME_DIR/docker.sock:/var/run/docker.sock \
  -v gitlab-runner-<id>-config:/etc/gitlab-runner \
  gitlab/gitlab-runner:latest

# Restart runner after updating `config.toml`
docker restart gitlab-runner-<id>

# Upgrade runner
docker stop gitlab-runner-<id> && docker rm gitlab-runner-<id>
docker run -d --name gitlab-runner-<id> -v gitlab-runner-<id>-config:/etc/gitlab-runner gitlab/gitlab-runner:latest

# Print runner logs to terminal
docker logs gitlab-runner-<id>

# Print runner help
docker run --rm gitlab/gitlab-runner:latest -h