배포 안전
배포 job의 보안과 안정성을 유지하는 GitLab 기능을 설명합니다.
배포 job 은 특정한 종류의 CI/CD job입니다. 파이프라인의 다른 job보다 민감할 수 있으며, 더 신경 써서 다뤄야 할 수도 있습니다. GitLab에는 배포의 보안과 안정성을 유지하는 데 도움이 되는 여러 기능이 있습니다. 다음을 할 수 있습니다: 프로젝트에 적절한 역할을 설정합니다. GitLab이 지원하는 다양한 사용자 역할과 각 역할의 권한에 대해서는 프로젝트 멤버 권한 을 참조합니다. 중요 환경에 대한 쓰기 접근 제한 배포 정지 기간 동안 배포 방지 프로덕션 시크릿 보호 배포용 별도 프로젝트 구성 지속적 배포(continuous deployment) 워크플로를 사용하면서 동일한 환경에 대한 동시 배포가 발생하지 않도록 하려면 다음을 수행해야 합니다: 한 번에 하나의 배포 job만 실행되도록 보장 . 오래된 배포 job 방지 . 개요는 CD 파이프라인/워크플로를 보호하는 방법 을 참조합니다. 중요 환경에 대한 쓰기 접근 제한 # 기본적으로 환경은 적어도 Developer 권한을 가진 모든 팀 구성원이 수정할 수 있습니다. 중요 환경(예: production 환경)에 대한 쓰기 접근을 제한하려면 보호된 환경 을 설정할 수 있습니다. 한 번에 하나의 배포 job만 실행되도록 보장 # GitLab CI/CD의 파이프라인 job은 병렬로 실행되므로, 서로 다른 두 파이프라인의 배포 job이 동시에 같은 환경에 배포를 시도할 수 있습니다. 배포는 순차적으로 이루어져야 하므로 이러한 동작은 바람직하지 않습니다. .gitlab-ci.yml 에서 resource_group 키워드 를 사용하면 한 번에 하나의 배포 job만 실행되도록 보장할 수 있습니다. 예를 들면 다음과 같습니다: deploy: script: deploy-to-prod resource_group: prod resource group이 없을 때 발생할 수 있는 문제가 있는 파이프라인 흐름의 예시입니다: Pipeline-A의 deploy job이 실행을 시작합니다. Pipeline-B의 deploy job이 실행을 시작합니다. 예상치 못한 결과를 초래할 수 있는 동시 배포입니다. Pipeline-A의 deploy job이 완료됩니다. Pipeline-B의 deploy job이 완료됩니다. resource group을 사용했을 때 개선된 파이프라인 흐름입니다: Pipeline-A의 deploy job이 실행을 시작합니다. Pipeline-B의 deploy job이 시작을 시도하지만, 먼저 실행된 deploy job이 끝날 때까지 대기합니다. Pipeline-A의 deploy job이 완료됩니다. Pipeline-B의 deploy job이 실행을 시작합니다. 자세한 내용은 Resource Group 문서 를 참조합니다. 오래된 배포 job 방지 # 파이프라인 job의 실제 실행 순서는 실행마다 달라질 수 있으며, 이로 인해 원치 않는 동작이 발생할 수 있습니다. 예를 들어, 최신 파이프라인의 배포 job 이 더 오래된 파이프라인의 배포 job보다 먼저 완료될 수 있습니다. 이 경