리소스 그룹
GitLab CI/CD에서 job 동시 실행을 제어하는 방법을 설명합니다.
기본적으로 GitLab CI/CD의 파이프라인은 동시에 실행됩니다. 동시성은 머지 리퀘스트의 피드백 루프를 개선하는 데 중요한 요소입니다. 하지만 배포 job의 동시성을 제한하여 하나씩 순서대로 실행하고 싶은 경우도 있습니다. 리소스 그룹을 사용하면 지속적 배포 워크플로를 안전하게 최적화하도록 job의 동시성을 전략적으로 제어할 수 있습니다. 리소스 그룹 추가 # 하나의 리소스 그룹에는 리소스를 하나만 추가할 수 있습니다. 다음과 같은 파이프라인 설정(리포지터리의 .gitlab-ci.yml 파일)이 있다고 가정합니다. build: stage: build script: echo "Your build script" deploy: stage: deploy script: echo "Your deployment script" environment: production 브랜치에 새 커밋을 푸시할 때마다 build 와 deploy 두 job으로 구성된 새 파이프라인이 실행됩니다. 하지만 짧은 시간 간격으로 여러 커밋을 푸시하면 다음과 같이 여러 파이프라인이 동시에 실행되기 시작합니다. 첫 번째 파이프라인은 build -> deploy job을 실행합니다 두 번째 파이프라인은 build -> deploy job을 실행합니다 이 경우 서로 다른 파이프라인의 deploy job 이 production 환경에 동시에 실행될 수 있습니다. 동일한 인프라에 여러 배포 스크립트를 실행하면 인스턴스에 문제가 발생하거나 혼란을 일으킬 수 있으며, 최악의 경우 손상된 상태로 남을 수 있습니다. deploy job 이 한 번에 하나씩만 실행되도록 하려면 동시성에 민감한 job에 resource_group 키워드 를 지정할 수 있습니다. deploy: # ... resource_group: production 이 설정을 사용하면 배포의 안전성을 보장하면서도 build job은 계속 동시에 실행하여 파이프라인 효율성을 극대화할 수 있습니다. 사전 요구 사항 # GitLab CI/CD 파이프라인 에 대한 이해 GitLab 환경 및 배포 에 대한 이해 CI/CD 파이프라인을 설정하려면 프로젝트에 대한 Developer, Maintainer 또는 Owner 권한이 필요합니다. 처리 모드 # 배포 환경에 맞게 job 동시성을 제어하는 처리 모드를 선택할 수 있습니다. 다음 모드를 지원합니다. 처리 모드 설명 사용 시점 unordered 기본 처리 모드입니다. job 이 실행 준비가 될 때마다 처리합니다. job의 실행 순서가 중요하지 않은 경우입니다. 가장 사용하기 쉬운 옵션입니다. oldest_first 리소스가 확보되면 파이프라인 ID 오름차순으로 정렬된 예정 job 목록에서 첫 번째 job을 선택합니다. 가장 오래된 파이프라인의 job부터 실행하고 싶은 경우입니다. unordered 모드보다 효율은 낮지만 지속적 배포에는 더 안전합니다. newest_first 리소스가 확보되면 파이프라인 ID 내림차순으로 정렬된 예정 job 목록에서 첫 번째 job을 선택합니다. 가장 최신