러너 등록

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed
  • 소개됨 GitLab Runner 15.0에 변경된 등록 요청 형식은 GitLab 이전 버전과 통신하지 못하도록 합니다. GitLab 버전에 적합한 GitLab Runner 버전을 사용하거나 GitLab 애플리케이션을 업그레이드해야 합니다.

러너 등록은 러너를 하나 이상의 GitLab 인스턴스에 연결하는 프로세스입니다. 러너를 등록하여 GitLab 인스턴스에서 작업을 가져갈 수 있도록 해야 합니다.

요구 사항

러너를 등록하기 전에:

러너 인증 토큰으로 등록

사전 준비:

  • 러너 인증 토큰을 획득합니다. 다음 중 하나를 선택할 수 있습니다:
    • 인스턴스, 그룹, 또는 프로젝트 러너를 생성합니다.
    • config.toml 파일에서 러너 인증 토큰을 찾습니다. 러너 인증 토큰은 glrt- 접두사를 가지고 있습니다.

러너를 등록한 후에 구성이 config.toml에 저장됩니다.

러너 인증 토큰으로 러너를 등록하려면:

  1. 등록 명령을 실행합니다:

    Linux
    sudo gitlab-runner register
    

    프록시 뒤에 있는 경우 환경 변수를 추가한 다음 등록 명령을 실행합니다:

    export HTTP_PROXY=http://yourproxyurl:3128
    export HTTPS_PROXY=http://yourproxyurl:3128
    
    sudo -E gitlab-runner register
    
    macOS
    gitlab-runner register
    
    Windows
    .\gitlab-runner.exe register
    
    FreeBSD
    sudo -u gitlab-runner -H /usr/local/bin/gitlab-runner register
    
    Docker

    컨테이너로 등록하려면 다음 중 하나를 수행할 수 있습니다:

    • 올바른 구성 볼륨을 사용하여 일시적인 gitlab-runner 컨테이너를 사용:

      • 로컬 시스템 볼륨을 사용하는 경우:

        docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register
        

        설치 중에 /srv/gitlab-runner/config가 아닌 다른 구성 볼륨을 사용한 경우 올바른 볼륨으로 명령을 업데이트합니다.

      • Docker 볼륨을 사용하는 경우:

        docker run --rm -it -v gitlab-runner-config:/etc/gitlab-runner gitlab/gitlab-runner:latest register
        
    • 활성 러너 컨테이너 내부의 실행 파일을 사용:

      docker exec -it gitlab-runner gitlab-runner register
      
  2. GitLab URL을 입력합니다:
    • GitLab Self-managed의 러너를 사용하는 경우, GitLab 인스턴스 URL을 사용합니다. 예를 들어, 프로젝트가 gitlab.example.com/yourname/yourproject에 호스팅되는 경우, GitLab 인스턴스 URL은 https://gitlab.example.com입니다.
    • GitLab.com의 러너를 사용하는 경우, GitLab 인스턴스 URL은 https://gitlab.com입니다.
  3. 러너 인증 토큰을 입력합니다.
  4. 러너에 대한 설명을 입력합니다.
  5. 쉼표로 구분된 작업 태그를 입력합니다.
  6. 러너에 대한 선택적 유지 관리 노트를 입력합니다.
  7. 실행기 유형을 입력합니다.
  • 동일한 구성의 러너를 동일한 호스트 머신에 여러 개 등록하려면 register 명령을 반복합니다.
  • 여러 호스트 머신에 동일한 구성을 등록하려면 각 러너 등록에 동일한 러너 인증 토큰을 사용합니다. 자세한 내용은 러너 구성 재사용을 참조하세요.

추가 인수를 사용하여 러너를 등록하려면 비대화식 모드를 사용합니다:

Linux
sudo gitlab-runner register \
  --non-interactive \
  --url "https://gitlab.com/" \
  --token "$RUNNER_TOKEN" \
  --executor "docker" \
  --docker-image alpine:latest \
  --description "docker-runner"
macOS
gitlab-runner register \
  --non-interactive \
  --url "https://gitlab.com/" \
  --token "$RUNNER_TOKEN" \
  --executor "docker" \
  --docker-image alpine:latest \
  --description "docker-runner"
Windows
.\gitlab-runner.exe register \
  --non-interactive \
  --url "https://gitlab.com/" \
  --token "$RUNNER_TOKEN" \
  --executor "docker-windows" \
  --docker-image mcr.microsoft.com/windows/servercore:1809_amd64 \
  --description "docker-runner"
FreeBSD
sudo -u gitlab-runner -H /usr/local/bin/gitlab-runner register \
  --non-interactive \
  --url "https://gitlab.com/" \
  --token "$RUNNER_TOKEN" \
  --executor "docker" \
  --docker-image alpine:latest \
  --description "docker-runner"
Docker
docker run --rm -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register \
  --non-interactive \
  --url "https://gitlab.com/" \
  --token "$RUNNER_TOKEN" \
  --executor "docker" \
  --docker-image alpine:latest \
  --description "docker-runner"

Runner 등록 토큰으로 등록하기 (사용 중단)

경고: GitLab 15.6에서 특정 구성 인수를 지원하던 Runner 등록 토큰 전달 기능이 사용 중단되었으며, GitLab 18.0에서 제거될 예정입니다. Runner 인증 토큰을 대신 사용해야 합니다. 자세한 내용은 새로운 Runner 등록 워크플로우로의 이관를 참조하십시오.

전제 조건:

Runner를 등록한 후, 구성이 config.toml에 저장됩니다.

Runner 등록 토큰으로 Runner를 등록하려면:

  1. 등록 명령을 실행하세요:

    Linux
    sudo gitlab-runner register
    

    프록시를 이용 중인 경우 환경 변수를 추가한 후 등록 명령을 실행하세요:

    export HTTP_PROXY=http://yourproxyurl:3128
    export HTTPS_PROXY=http://yourproxyurl:3128
    
    sudo -E gitlab-runner register
    
    macOS
    gitlab-runner register
    
    Windows
    .\gitlab-runner.exe register
    
    FreeBSD
    sudo -u gitlab-runner -H /usr/local/bin/gitlab-runner register
    
    Docker

    설치 중에 생성한 컨테이너를 등록하려면 짧게 실행되는 gitlab-runner 컨테이너를 시작합니다.

    • 로컬 시스템 볼륨 마운트용:

      docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register
      
  2. GitLab URL을 입력하세요:
    • GitLab 셀프관리형 Runner의 경우, GitLab 인스턴스 URL을 사용합니다. 예를 들어, 프로젝트가 gitlab.example.com/yourname/yourproject에 호스팅되어 있는 경우, GitLab 인스턴스 URL은 https://gitlab.example.com입니다.
    • GitLab.com의 경우, GitLab 인스턴스 URL은 https://gitlab.com입니다.
  3. Runner를 등록하려고 얻은 토큰을 입력하세요.
  4. Runner에 대한 설명을 입력하세요.
  5. 쉼표로 구분된 작업 태그를 입력하세요.
  6. Runner에 대한 선택적 유지 관리 노트를 입력하세요.
  7. 실행자 유형을 입력하세요.

동일한 호스트 머신에 여러 Runner를 서로 다른 구성으로 등록하려면 register 명령을 반복합니다.

Runner를 등록하는데 추가 인수를 사용하려면 비대화식 모드를 사용하여 다음과 같이 실행하세요:

Linux
sudo gitlab-runner register \
  --non-interactive \
  --url "https://gitlab.com/" \
  --registration-token "$PROJECT_REGISTRATION_TOKEN" \
  --executor "docker" \
  --docker-image alpine:latest \
  --description "docker-runner" \
  --maintenance-note "Free-form maintainer notes about this runner" \
  --tag-list "docker,aws" \
  --run-untagged="true" \
  --locked="false" \
  --access-level="not_protected"
macOS
gitlab-runner register \
  --non-interactive \
  --url "https://gitlab.com/" \
  --registration-token "$PROJECT_REGISTRATION_TOKEN" \
  --executor "docker" \
  --docker-image alpine:latest \
  --description "docker-runner" \
  --maintenance-note "Free-form maintainer notes about this runner" \
  --tag-list "docker,aws" \
  --run-untagged="true" \
  --locked="false" \
  --access-level="not_protected"
Windows
.\gitlab-runner.exe register \
  --non-interactive \
  --url "https://gitlab.com/" \
  --registration-token "$PROJECT_REGISTRATION_TOKEN" \
  --executor "docker-windows" \
  --docker-image mcr.microsoft.com/windows/servercore:1809_amd64 \
  --description "docker-runner" \
  --maintenance-note "Free-form maintainer notes about this runner" \
  --tag-list "docker,aws" \
  --run-untagged="true" \
  --locked="false" \
  --access-level="not_protected"
FreeBSD
sudo -u gitlab-runner -H /usr/local/bin/gitlab-runner register
  --non-interactive \
  --url "https://gitlab.com/" \
  --registration-token "$PROJECT_REGISTRATION_TOKEN" \
  --executor "docker" \
  --docker-image alpine:latest \
  --description "docker-runner" \
  --maintenance-note "Free-form maintainer notes about this runner" \
  --tag-list "docker,aws" \
  --run-untagged="true" \
  --locked="false" \
  --access-level="not_protected"
Docker
docker run --rm -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register \
  --non-interactive \
  --url "https://gitlab.com/" \
  --registration-token "$PROJECT_REGISTRATION_TOKEN" \
  --executor "docker" \
  --docker-image alpine:latest \
  --description "docker-runner" \
  --maintenance-note "Free-form maintainer notes about this runner" \
  --tag-list "docker,aws" \
  --run-untagged="true" \
  --locked="false" \
  --access-level="not_protected"
  • --access-levelprotected runner를 생성합니다.
    • protected runner를 생성하려면 --access-level="ref_protected" 매개변수를 사용합니다.
    • unprotected runner를 생성하려면 --access-level="not_protected"를 사용하거나 값을 정의하지 않습니다.
  • --maintenance-note는 Runner 유지 관리에 유용한 정보를 추가할 수 있습니다. 최대 길이는 255자입니다.

레거시 호환 등록 프로세스

GitLab 15.6에서 러너 등록 토큰과 여러 러너 구성 인수가 폐기 예정되었으며, GitLab 18.0에서 제거될 예정입니다. 자동화 작업 흐름에 최소한의 중단을 보장하기 위해 레거시 호환 등록 프로세스는 레거시 매개변수 --registration-token에 러너 인증 토큰이 지정된 경우 트리거됩니다.

레거시 호환 등록 프로세스는 다음 명령줄 매개변수를 무시합니다. 이러한 매개변수는 UI에서 러너가 생성되거나 API를 통해 구성될 때만 설정할 수 있습니다.

  • --locked
  • --access-level
  • --run-untagged
  • --maximum-timeout
  • --paused
  • --tag-list
  • --maintenance-note

구성 템플릿으로 등록

구성 템플릿을 사용하여 register 명령에서 지원되지 않는 설정으로 러너를 등록할 수 있습니다.

필수 구성 요소:

  • 템플릿 파일의 볼륨은 GitLab 러너 컨테이너에 마운트되어야 합니다.
  • 러너 인증 또는 등록 토큰:
    • 러너 인증 토큰을 얻으세요(권장). 다음 중 하나를 사용할 수 있습니다:
      • 인스턴스 러너를 만듭니다.
      • 그룹 또는 프로젝트 러너에서 러너 인증 토큰을 찾습니다. 러너 인증 토큰은 접두사 glrt-가 있습니다.
    • 인스턴스, 그룹 또는 프로젝트 러너에 대해 러너 등록 토큰(폐기 예정)을 얻으세요.

구성 템플릿은 다음과 같이 고려될 수 있는 환경 변수의 크기 제한 또는 Kubernetes 실행기 볼륨을 위해 register 명령에서 사용할 수 없는 명령줄 옵션으로 인해 자동화 환경에 사용될 수 있습니다.

경고: 구성 템플릿은 단일 [[runners]] 섹션만 지원하며 전역 옵션은 지원하지 않습니다.

러너를 등록하려면:

  1. .toml 형식의 구성 템플릿 파일을 만들고 사양을 추가하세요. 예:

    [[runners]]
      [runners.kubernetes]
      [runners.kubernetes.volumes]
        [[runners.kubernetes.volumes.empty_dir]]
          name = "empty_dir"
          mount_path = "/path/to/empty_dir"
          medium = "Memory"
    
  2. 파일 경로를 추가하세요. 다음 중 하나를 사용할 수 있습니다:

    • 명령줄에서 비대화식 모드를 사용하세요:

      $ sudo gitlab-runner register \
          --template-config /tmp/test-config.template.toml \
          --non-interactive \
          --url "https://gitlab.com" \
          --token <TOKEN> \ "# --registration-token if using the deprecated runner registration token"
          --name test-runner \
          --executor kubernetes
          --host = "http://localhost:9876/"
      
    • .gitlab.yaml 파일의 환경 변수 사용:

      variables:
        TEMPLATE_CONFIG_FILE = <file_path>
      

      환경 변수를 업데이트하는 경우 register 명령에 파일 경로를 매번 추가할 필요가 없습니다.

러너를 등록한 후 구성 템플릿에 있는 설정은 config.toml에 만들어진 [[runners]] 항목과 병합됩니다:

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "test-runner"
  url = "https://gitlab.com"
  token = "glrt-<TOKEN>"
  executor = "kubernetes"
  [runners.kubernetes]
    host = "http://localhost:9876/"
    bearer_token_overwrite_allowed = false
    image = ""
    namespace = ""
    namespace_overwrite_allowed = ""
    privileged = false
    service_account_overwrite_allowed = ""
    pod_labels_overwrite_allowed = ""
    pod_annotations_overwrite_allowed = ""
    [runners.kubernetes.volumes]

      [[runners.kubernetes.volumes.empty_dir]]
        name = "empty_dir"
        mount_path = "/path/to/empty_dir"
        medium = "Memory"

템플릿 설정은 다음과 같이만 가능합니다:

  • 빈 문자열
  • 널 또는 존재하지 않는 항목
  • 0

명령줄 인수 또는 환경 변수는 구성 템플릿의 설정보다 우선합니다. 예를 들어, 템플릿에서 docker 실행기를 지정하고 명령줄에서 shell을 지정하는 경우 구성된 실행기는 shell입니다.

GitLab Community Edition 통합 테스트용 러너 등록

GitLab Community Edition 통합을 테스트하려면 제한된 Docker 실행기를 사용하여 러너를 등록하세요.

  1. 프로젝트 러너를 생성하세요.
  2. [[runners.docker.services]] 섹션을 포함한 템플릿을 만드세요:

    $ cat > /tmp/test-config.template.toml << EOF
    [[runners]]
    [runners.docker]
    [[runners.docker.services]]
    name = "mysql:latest"
    [[runners.docker.services]]
    name = "redis:latest"
    
    EOF
    
  3. 러너를 등록하세요:

    Linux
    sudo gitlab-runner register \
      --non-interactive \
      --url "https://gitlab.com" \
      --token "$RUNNER_AUTHENTICATION_TOKEN" \
      --template-config /tmp/test-config.template.toml \
      --description "gitlab-ce-ruby-2.7" \
      --executor "docker" \
      --docker-image ruby:2.7
    
    macOS
    gitlab-runner register \
      --non-interactive \
      --url "https://gitlab.com" \
      --token "$RUNNER_AUTHENTICATION_TOKEN" \
      --template-config /tmp/test-config.template.toml \
      --description "gitlab-ce-ruby-2.7" \
      --executor "docker" \
      --docker-image ruby:2.7
    
    Windows
    .\gitlab-runner.exe register \
      --non-interactive \
      --url "https://gitlab.com" \
      --token "$RUNNER_AUTHENTICATION_TOKEN" \
      --template-config /tmp/test-config.template.toml \
      --description "gitlab-ce-ruby-2.7" \
      --executor "docker" \
      --docker-image ruby:2.7
    
    FreeBSD
    sudo -u gitlab-runner -H /usr/local/bin/gitlab-runner register
      --non-interactive \
      --url "https://gitlab.com" \
      --token "$RUNNER_AUTHENTICATION_TOKEN" \
      --template-config /tmp/test-config.template.toml \
      --description "gitlab-ce-ruby-2.7" \
      --executor "docker" \
      --docker-image ruby:2.7
    
    Docker
    docker run --rm -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register \
      --non-interactive \
      --url "https://gitlab.com" \
      --token "$RUNNER_AUTHENTICATION_TOKEN" \
      --template-config /tmp/test-config.template.toml \
      --description "gitlab-ce-ruby-2.7" \
      --executor "docker" \
      --docker-image ruby:2.7
    

추가 구성 옵션을 보려면 고급 구성을 참조하세요.

Docker로 러너 등록

러너를 Docker 컨테이너로 등록한 후:

  • 구성이 구성 볼륨에 작성됩니다. 예: /srv/gitlab-runner/config.
  • 컨테이너는 러너를 로드하기 위해 구성 볼륨을 사용합니다.

참고: Docker 컨테이너에서 gitlab-runner restart를 실행하면 기존 프로세스를 다시 시작하는 대신 GitLab Runner가 새 프로세스를 시작합니다. 구성 변경을 적용하려면 Docker 컨테이너를 다시 시작하면 됩니다.

문제 해결

Check registration token 오류

check registration token 오류 메시지가 표시되면 GitLab 인스턴스가 등록 중에 입력한 러너 등록 토큰을 인식하지 못한 상태입니다. 이 문제는 다음과 같은 경우에 발생할 수 있습니다:

  • 인스턴스, 그룹 또는 프로젝트 러너 등록 토큰이 GitLab에서 변경되었을 때.
  • 잘못된 러너 등록 토큰이 입력되었을 때.

이 오류가 발생하면 GitLab 관리자에게 다음을 요청할 수 있습니다:

  • 러너 등록 토큰이 유효한지 확인합니다.
  • 프로젝트 또는 그룹에서의 러너 등록이 허용되었는지 확인합니다.

410 Gone - runner registration disallowed 오류

410 Gone - runner registration disallowed 오류 메시지가 표시되면 러너 등록을 위한 등록 토큰을 통한 러너 등록이 비활성화되었음을 나타냅니다.

이 오류가 발생하면 GitLab 관리자에게 다음을 요청할 수 있습니다:

  • 러너 등록 토큰이 유효한지 확인합니다.
  • 인스턴스에서 러너 등록이 허용되었는지 확인합니다.
  • 그룹 또는 프로젝트 러너 등록 토큰의 경우, 해당 그룹 및/또는 프로젝트에서 러너 등록이 허용되었는지 확인합니다.