Runner 구성

GitLab CI/CD에서 러너는 .gitlab-ci.yml에 정의된 코드를 실행합니다. 러너는 GitLab CI/CD의 코디네이터 API를 통해 CI Job을 선택하고, Job을 실행 한 다음, 결과를 GitLab 인스턴스로 다시 보내는 경량의 확장성이 뛰어난 에이전트입니다.

러너는 관리자가 생성하며 GitLab UI에 표시됩니다. 러너는 특정 프로젝트에 한정되거나 모든 프로젝트에서 사용할 수 있습니다.

러너 유형

GitLab UI에는 액세스 할 사용자에 따라 세 가지 유형의 러너가 있습니다.

  • 공유 러너는 GitLab 인스턴스의 모든 그룹 및 프로젝트에서 사용할 수 있습니다.
  • 그룹 러너는 그룹의 모든 프로젝트와 하위 그룹에서 사용할 수 있습니다.
  • 특정 러너는 특정 프로젝트와 연결됩니다. 일반적으로 특정 러너는 한 번에 하나의 프로젝트에 사용됩니다.

Shared runners

공유 러너는 GitLab 인스턴스의 모든 프로젝트에서 사용할 수 있습니다.

유사한 요구사항을 가진 여러 Job이 있는 경우 공유 러너를 사용합니다. 여러 프로젝트에 대해 여러 러너를 유휴 상태로 유지하는 대신 여러 프로젝트를 처리하는 러너를 몇 개 가질 수 있습니다.

GitLab의 자체 관리형 인스턴스를 사용하는 경우 :

  • 관리자는 설명서에 따라 공유 러너를 설치하고 등록할 수 있습니다.
  • 관리자는 각 그룹에 대해 최대 공유 러너 파이프라인 시간(분)을 구성할 수도 있습니다.

공유 러너가 Job를 선택하는 방법

공유 러너는 공정한 사용 대기열(queue)을 사용하여 Job을 처리합니다. 이 대기열은 프로젝트가 수백 개의 Job을 생성하고 사용 가능한 모든 공유 러너 리소스를 사용하는 것을 방지합니다.

공정 사용 대기열 알고리즘은 공유 러너에서 이미 실행 중인 Job 수가 가장 적은 프로젝트를 기반으로 Job을 할당합니다.

(예 1) 이러한 Job이 대기열에 있는 경우 :

  • 프로젝트 1의 Job 1
  • 프로젝트 1의 Job 2
  • 프로젝트 1의 Job 3
  • 프로젝트 2의 Job 4
  • 프로젝트 2의 Job 5
  • 프로젝트 3의 Job 6

공정 사용 알고리즘은 다음 순서로 Job을 할당합니다.

  1. Job 1이 먼저 선택됩니다. 실행 중인 Job이 없는 프로젝트(즉, 모든 프로젝트)에서 Job 번호가 가장 낮기 때문입니다.
  2. Job 4가 다음입니다. 이제 4가 실행 중인 Job이 없는 프로젝트에서 가장 낮은 Job 번호이기 때문입니다(프로젝트 1에는 실행 중인 Job이 있음).
  3. Job 6가 다음입니다. 이제 6이 실행 중인 Job이 없는 프로젝트에서 가장 낮은 Job 번호이기 때문입니다(프로젝트 1 및 2에는 실행 중인 Job이 있음).
  4. Job 2가 다음입니다. 실행 중인 Job 수가 가장 적은 프로젝트(각각 1 개 있음) 중 가장 낮은 Job 번호이기 때문입니다.
  5. Job 5가 다음입니다. 프로젝트 1에 2 개의 Job이 실행되고 Job 5가 프로젝트 2와 3 사이에 남아있는 가장 낮은 Job 번호이기 때문입니다.
  6. 마지막으로 Job 3입니다… 왜냐하면 남은 유일한 Job이기 때문입니다.

(예 2)

이러한 Job이 대기열에 있는 경우 :

  • 프로젝트 1의 Job 1
  • 프로젝트 1의 Job 2
  • 프로젝트 1의 Job 3
  • 프로젝트 2의 Job 4
  • 프로젝트 2의 Job 5
  • 프로젝트 3의 Job 6

공정 사용 알고리즘은 다음 순서로 작업을 할당합니다.

  1. Job 1이 먼저 선택됩니다. 실행 중인 Job이 없는 프로젝트(즉, 모든 프로젝트)에서 Job 번호가 가장 낮기 때문입니다.
  2. Job 1을 마칩니다.
  3. Job 2가 다음입니다. Job 1을 완료하여 모든 프로젝트에는 다시 실행 중인 Job이 0개 있으며, 2가 사용 가능한 가장 낮은 Job 번호이기 때문입니다.
  4. Job 4가 다음입니다. 프로젝트 1에서 Job을 실행 주이고, Job을 실행하지 않는 프로젝트(프로젝트 2 및 3)에서 4가 가장 낮은 숫자이기 때문입니다.
  5. Job 4를 마칩니다.
  6. Job 5가 다음으로 진행됩니다. Job 4를 마치면 프로젝트 2에는 다시 실행 중인 Job이 없습니다.
  7. 다음으로 Job 6이 진행됩니다. 프로젝트 3이 실행 중인 Job이 없는 유일한 프로젝트이기 때문입니다.
  8. 마지막으로 Job 3이 선택됩니다… 왜냐하면 남은 유일한 Job이기 때문입니다.

공유 러너 활성화

GitLab의 자체 관리형 인스턴스에서는 관리자가 공유 러너를 설치하고 등록해야 합니다. 개별 프로젝트에 대해 공유 러너를 활성화할 수도 있습니다.

공유 러너를 활성화하려면 :

  1. 프로젝트의 Settings > CI/CD로 이동하여 Runners 섹션을 확장합니다.
  2. Allow shared runners을 클릭합니다.

공유 러너 비활성화

개별 프로젝트 또는 그룹에 대해 공유 러너를 비활성화할 수 있습니다. 프로젝트 또는 그룹에 대한 Owner 권한이 있어야 합니다.

프로젝트의 공유 러너를 비활성화하려면 :

  1. 프로젝트의 Settings > CI/CD로 이동하여 Runners 섹션을 확장합니다.
  2. Shared runners 영역에서, Disable shared runners을 클릭합니다.

그룹에 대해 공유 러너를 비활성화하려면 :

  1. 그룹의 Settings > CI/CD로 이동하여 Runners 섹션을 확장합니다.
  2. Shared runners 영역에서, Enable shared runners for this group을 클릭합니다.
  3. 필요에 따라 개별 프로젝트 또는 하위 그룹에 대해 공유 러너를 활성화하려면, Allow projects and subgroups to override the group setting을 클릭합니다.

Group runners

그룹의 모든 프로젝트가 러너 세트에 액세스 할 수 있도록 하려면 그룹 러너를 사용하십시오. 그룹 러너는 선입 선출 (FIFO) 대기열을 사용하여 Job을 처리합니다.

그룹 러너 만들기

자체 관리형 GitLab 인스턴스 또는 GitLab.com에 대한 그룹 러너를 만들 수 있습니다. 그룹에 대한 Owner 권한이 있어야 합니다.

그룹 러너를 만들려면 :

  1. GitLab Runner를 설치합니다.
  2. 러너가 작동하도록 할 그룹으로 이동합니다.
  3. Settings > CI/CD로 이동하여 Runners 섹션을 확장합니다.
  4. URL과 토큰을 기록해 둡니다.
  5. 러너를 등록합니다.

그룹 러너 보기 및 관리

그룹, 하위 그룹 및 프로젝트에 대한 모든 러너를 보고 관리할 수 ​​있습니다. 자체 관리형 GitLab 인스턴스 또는 GitLab.com에 대해 이 작업을 수행할 수 있습니다. 그룹에 대한 Owner 권한이 있어야 합니다.

  1. 러너를 보려는 그룹으로 이동합니다.
  2. Settings > CI/CD로 이동하여 Runners 섹션을 확장합니다.
  3. 다음 필드가 표시됩니다.
속성설명
Type다음 상태 중 하나 이상 : shared, group, specific, locked 또는 paused
Runner token러너를 식별하는 데 사용되며 러너가 GitLab 인스턴스와 통신하는 데 사용하는 토큰
Description러너가 생성되었을 때 제공되는 설명
VersionGitLab Runner 버전
IP address러너가 등록된 호스트의 IP 주소
Projects러너가 할당된 프로젝트 수
Jobs러너가 실행한 총 Job 수
Tags러너와 관련된 태그
Last contactGitLab 인스턴스가 마지막으로 러너에 연결한 시간을 나타내는 타임스탬프

이 페이지에서 그룹, 하위 그룹 및 프로젝트에서 러너를 편집, 일시 중지 및 제거할 수 있습니다.

그룹 러너 일시 중지 또는 제거

자체 관리형 GitLab 인스턴스 또는 GitLab.com의 그룹 러너를 일시 중지하거나 제거할 수 있습니다. 그룹에 대한 Owner 권한이 있어야 합니다.

  1. 러너를 제거하거나 일시 중지하려는 그룹으로 이동합니다.
  2. Settings > CI/CD로 이동하여 Runners 섹션을 확장합니다.
  3. Pause 또는 Remove runner를 클릭합니다.
  • 여러 프로젝트에서 사용하는 그룹 러너를 일시 중지하면 러너가 모든 프로젝트에 대해 일시 중지됩니다.
  • 그룹 뷰에서 둘 이상의 프로젝트에 지정된 러너를 제거할 수 없습니다. 먼저 각 프로젝트에서 제거해야 합니다.
  1. 확인 대화 상자에서 OK을 클릭합니다.

Specific runners

특정 프로젝트에 러너를 사용하려면 특정 러너를 사용하십시오.

예를 들어 다음과 같은 경우 :

  • 자격 증명이 필요한 배포 Job과 같은 특정 요구사항이 있는 Job
  • 다른 러너와 분리하여 이점을 얻을 수 있는 CI 활동이 많은 프로젝트

여러 프로젝트에서 사용할 특정 러너를 설정할 수 있습니다. 각 프로젝트에 대해 특정 러너를 명시적으로 활성화해야 합니다.

특정 러너는 선입 선출(FIFO) 대기열을 사용하여 Job을 처리합니다.

참고 : 특정 러너는 Fork 된 프로젝트와 자동으로 공유되지 않습니다. 포크는 Clone 된 리포지토리의 CI/CD 설정을 복사합니다.

특정 러너 만들기

자체 관리형 GitLab 인스턴스 또는 GitLab.com에 대한 특정 러너를 만들 수 있습니다. 프로젝트에 대한 Owner 권한이 있어야 합니다.

특정 러너를 만들려면 :

  1. GitLab Runner를 설치합니다
  2. 프로젝트의 Settings > CI/CD로 이동하여 Runners 섹션을 확장합니다.
  3. URL과 토큰을 기록해 둡니다.
  4. 러너를 등록합니다.

특정 프로젝트에 대해 특정 러너 활성화

특정 러너는 그것이 만들어진 프로젝트에서 사용할 수 있습니다. 관리자는 특정 러너를 추가 프로젝트에 적용되도록 할 수 있습니다.

  • 프로젝트에 대한 Owner 권한이 있어야 합니다.
  • 특정 러너를 잠그면 안 됩니다.

프로젝트에 대해 특정 러너를 활성화 또는 비활성화하려면 :

  1. 프로젝트의 Settings > CI/CD로 이동하여 Runners 섹션을 확장합니다.
  2. Enable for this project 또는 Disable for this project를 클릭합니다.

특정 러너가 다른 프로젝트에 대해 활성화되지 않도록 방지

특정 러너를 "잠김" 상태로 만들어 다른 프로젝트에서 활성화되지 않도록 구성할 수 없습니다. 이 설정은 러너를 처음 등록할 때 활성화할 수 있지만 나중에 변경할 수도 있습니다.

러너를 잠그거나 잠금 해제하려면 :

  1. 프로젝트의 Settings > CI/CD로 이동하여 Runners 섹션을 확장합니다.
  2. 잠그거나 잠금 해제할 러너를 찾습니다. 활성화되어 있는지 확인합니다.
  3. 연필 버튼을 클릭합니다.
  4. Lock to current projects 옵션을 체크합니다.
  5. Save changes을 클릭합니다.

깃랩 문서 바로가기