승격 파이프라인
프로모션 파이프라인은 한 환경에서 다른 환경으로 인벤토리 항목을 이동시키고, 프로모션 풀/병합 요청을 생성합니다.
승진 시 직무 분리
-
주로 풀 리퀘스트 워크플로를 통해 달성된 승진
- → 프로모션 PR 생성 (예: 소스 환경에서 대상 환경 브랜치로)
- → PR 검토/수정 (PR 검증 상태 확인 포함)
- → PR을 대상 환경 브랜치에 병합
- → CD 배포 파이프라인 실행 (커밋 시, 타이머 또는 수동 트리거)
- → 다음 환경 브랜치에 대해서도 같은 과정을 반복하세요
- → 환경 브랜치를 원하는 만큼 만들 수 있습니다
-
역할
- 개발자: 코드를 커밋하면 CI 파이프라인을 통해 메인(비프로덕션) 인벤토리가 업데이트됩니다
- 프로모션 운영 / 릴리스 관리자: 프로모션 파이프라인(메인→스테이징 및/또는 스테이징→프로덕션)을 실행하고, 게이트링을 위한 상태 확인이 포함된 PR을 생성합니다(툴체인 ACL 및 인벤토리 브랜치 보호 기능을 통해 강제 적용됨)
- 생산 운영 / 승인자: 프로모션 PR을 검토하고 프로덕션 브랜치에 병합합니다. 프로덕션 파이프라인 실행. (인벤토리 브랜치 보호 기능을 통해 강제 적용됨)
-
스테이징 및 프로덕션 워크로드에 각각 별도의 CD 툴체인을 활용합니다(별도의 운영)
-
즉, 개발자는 변경 사항을 준비할 수는 있지만, 브랜치 보호 정책에 따라 별도의 승인자가 필요한 경우 이를 일방적으로 운영 환경에 배포할 수는 없습니다.
-
프로모션 PR은 공식적인 변경 승인 기록이 되며, 병합 내역은 누가 언제 프로덕션 프로모션을 승인했는지에 대한 감사 가능한 증거를 제공합니다.
승격 파이프라인 단계
- 프로모션 및 프로모션 풀/머지 요청에 대한 의견을 수렴하세요.
- 소스 환경에서 대상 환경으로 인벤토리 항목을 승격합니다.
- 프로모션 풀/병합 요청을 생성하세요. 수행할 변경사항을 표시하도록 가져오기/병합 요청을 편집하십시오. 선택적 및 필수 필드를 감시하십시오.
- 선택사항입니다. 증거 상태를 설정하고 집계된 증거 요약을 판촉 가져오기/병합 요청에 추가하십시오.
- 가져오기/병합 요청을 병합하십시오.
- 해당 기능이 켜져 있으면 Slack 알림을 보내세요.
스테이지 및 태스크
다음 표에는 프로모션 파이프라인에서 실행되는 작업들이 나열되어 있습니다. 또한, 이 표에는 이러한 각 단계에 대한 개요도 제시되어 있습니다:
-
작업 또는 단계: 이는
.pipeline-config.yaml구성 파일 내에서 정의된 단계의 이름을 의미합니다. -
간략한 설명: 이 항목은 해당 단계의 실행 과정에서 수행되는 작업에 대해 간결하게 설명합니다.
-
사용자 정의 허용 : 이는 사용자가
.pipeline-config.yaml파일에 사용자 정의 스크립트를 삽입하여 스테이지의 기본 동작을 수정하거나 대체할 수 있는 유연성을 가지는지 여부를 나타냅니다. -
기본 참조 구현: 이는 ‘ DevSecOps ’ 파이프라인에 해당 단계에 대한 사전 정의된 구현 또는 기본 구현이 포함되어 있는지 여부를 나타냅니다. 특히,
unit-tests또는setup와 같은 특정 단계의 경우, DevSecOps 파이프라인은 기본적으로 사용할 수 있는 구현을 제공하지 않습니다. 대신, 사용자는 자신의 애플리케이션 요구 사항에 맞춰 제작된 사용자 정의 스크립트나 코드를 제공해야 합니다. -
증거 수집: 이 항목은 해당 단계에서 표준 증거 수집을 수행하는지 여부를 나타냅니다. DevSecOps Pipeline이 특정 단계에 대한 참조 구현을 제공할 경우, 증거 수집은 별도의 설정 없이 바로 수행됩니다. 그러나 사용자가 이러한 사전 정의된 단계를 수정하거나 대체하기로 선택한 경우, 사용자 정의 구현에 적절한 증거 수집 절차가 포함되도록 해야 합니다. DevSecOps 파이프라인이 기본 제공 구현을 제공하지 않는 단계의 경우, 증거 수집을 수행해야 하므로 사용자에게 동일한 책임이 부과됩니다. 이 열은 증거 수집을 수행하는 주체( 사용자/파이프라인 )를 나타냅니다.
-
건너뛰기 허용 ( v10 이상 버전에 적용됨): 이는 사용자가
.pipeline-config.yaml``에서skip속성을true로 설정하여 이 단계의 실행을 건너뛸 수 있는지 여부를 나타냅니다. 다만, 이 기능을 사용할 때는, 특히 증거 수집을 목적으로 설계된 단계의 경우 각별한 주의가 필요합니다. 이러한 단계를 건너뛰면 빌드에 필요한 필수 증거 자료를 놓칠 수 있습니다.
| 태스크 또는 스테이지 | 간단한 설명 | 다음에서 사용자 지정이 허용됩니다. .pipeline-config.yaml |
기본 참조 구현 | 증거 콜렉션 | 건너뛰기 허용 |
|---|---|---|---|---|---|
inventory-promotion |
프로모션에 대한 풀 리퀘스트를 생성하세요. | 아니오 | 예 | 해당사항 없음 | 아니오 |
inventory-finish |
로그 파일, 아티팩트, 증거를 수집하고 증거 라커에 업로드합니다. | 예 | 아니오 | 해당사항 없음 | 아니오 |
.pipeline-config.yaml 파일을 사용하여 스테이지를 사용자 정의하는 방법에 대한 자세한 내용은 ‘사용자 정의 스크립트’ 및 ‘파이프라인 매개변수’ 목록을 참조하십시오.
승격 파이프라인 실행
승격 파이프라인을 실행하려면 수동 승격 트리거를 사용하십시오. 소스(master) 브랜치가 대상(prod) 브랜치보다 최신 상태인 경우, 파이프라인은 사용자가 검토하고 수정할 수 있는 승격 풀/병합 요청을 생성합니다. 소스 분기가 대상 뒤에 있는 경우 승격 파이프라인이 실패하며 All changes have already been promoted이라는 메시지가 나타납니다.
프로모션 풀/병합 요청의 기본값을 수정하거나, 다른 소스에서 대상으로 프로모션하려면 사용자는 ‘파이프라인 환경 변수’ UI에서 입력값을 수정할 수 있습니다.
지속적 배포 파이프라인을 실행하기 전에, 프로모션 풀/병합 요청이 병합되었는지 확인하십시오. 풀/병합 요청은 URL 파이프라인 로그에서 확인할 수 있습니다.
인벤토리 및 승격 프로세스에 관한 자세한 정보는 인벤토리 승격을 참조하십시오.
인벤토리 항목을 부분적으로 승격
부분 승격 방법을 사용하면 승격 파이프라인이 사용 가능한 인벤토리의 일부 하위 집합을 승격할 수 있습니다.
이 맥락에서 인벤토리 항목이란 인벤토리 저장소에 존재하는 (인벤토리 유형의) 단일 파일을 의미하며, 이는 로컬 파일 시스템상의 고유한 파일 이름과 대응됩니다.
매개변수 사용 inventory-include 그리고 inventory-exclude 부분 승격 방법을 활성화합니다.
사용할 때 inventory-include, 해당 환경 속성에 제공된 패턴/파일 이름은 해당 항목으로 확인되고 파이프라인에 의해 승격됩니다. 마찬가지로, 다음 항목에 제공된 항목은 inventory-exclude 승진에서 제외됩니다.
이 형식은 CC 파이프라인에서 따르는 것과 유사하게 glob 패턴(전체 경로도 지원)을 활용합니다. glob 패턴에 대한 자세한 내용은 다음을 참조하세요.글로브 수동.
부분 승격 시 필터링 적용
부분 승격은 두 가지 수준의 필터링을 적용합니다..inventoryignore 파일에 제공된 glob 패턴을 기반으로 필터링을 적용합니다.inventory-include 그리고 inventory-exclude
.inventoryignore 파일 사용
모든 부분 승격 실행과 CD 파이프라인 실행에 대해 기본적으로 파일 또는 폴더 집합을 제외하려면 파일/폴더 목록을 .inventoryignore 해당 항목을 제외하려면 파일을 사용하세요.
파이프라인이 승격할 수 있는 사용 가능한 항목 목록은 다음에서 항목을 필터링한 후 사용할 수 있습니다..inventoryignore 파일.
파이프라인은 다음을 검색합니다..inventoryignore 저장소의 루트에 있는 파일입니다. 재고 제외 파일에 다른 이름을 원하는 경우 다음을 설정하여 지정할 수 있습니다.inventory-ignore-file 키를 파이프라인 내의 환경 속성으로 사용하세요. 이 파일이 인벤토리 저장소의 루트에 있는지 확인하십시오.
인벤토리 포함 매개변수 사용
에서 제공하는 항목을 필터링한 후 승격할 항목 목록입니다.inventory-include 그리고/또는 inventory-exclude
둘 다라면 inventory-include 그리고 inventory-exclude 존재하고,inventory-include 우선적으로 적용됩니다.inventory-exclude 포함 목록에 정의된 하위 집합에서 항목을 제외합니다.
이러한 변수 중 하나가 제공되면 파이프라인은 glob 패턴의 전체 경로를 확인하거나 파일 이름을 직접 지정하고 부분 승격을 진행합니다.
두 필터링 수준 사이의 공통 항목 목록만 파이프라인에 의해 승격됩니다.
Inventory-include 및 Inventory-Exclude 매개변수의 사용 예
이 섹션에서는 glob 패턴을 사용하고 이를 inventory-include 그리고 inventory-exclude 매개변수. 다음은 마이크로서비스, (중첩) 구성 파일 및 Helm 차트를 포함하는 인벤토리 저장소에 대한 예제 디렉터리 구조입니다.
cd-pipeline-deps
my-application-plugin-component-config
my-application-plugin-component-diagnostic-monitor
configuration # directory entry
configuration/my-staging-region # directory entry
configuration/my-staging-region/environment-1-cluster # directory entry
configuration/my-staging-region/environment-1-cluster/serviceA-component_config
configuration/my-staging-region/environment-1-cluster/serviceB-system_config
configuration/my-staging-region/environment-1-cluster/serviceC-params_config
configuration/serviceX-dashboard-setup_helm
configuration/serviceY-releases_helm
my-application-task-runner
my-application-dashboard
my-application-dashboard_deployment
my-application-module
my-application-module_deployment
.inventoryignore
global_deployment
README.md
구성 요소의 모든 하위 모듈 항목을 선택하려면
inventory-include 로 설정 :*plugin-component*
선택한 인벤토리 항목:
my-application-plugin-component-config
my-application-plugin-component-diagnostic-monitor
지정된 구성 폴더에서 모든 Helm 차트를 선택하려면
inventory-include 로 설정 :configuration/*helm
선택한 인벤토리 항목:
configuration/serviceX-dashboard-setup_helm
configuration/serviceY-releases_helm
특정 환경의 모든 구성 파일을 선택하려면
inventory-include 로 설정 :configuration/my-staging-region/environment-1-cluster/*_config
선택한 인벤토리 항목:
configuration/my-staging-region/environment-1-cluster/serviceA-component_config
configuration/my-staging-region/environment-1-cluster/serviceB-system_config
configuration/my-staging-region/environment-1-cluster/serviceC-params_config
하나의 구성요소만 선택하려면
inventory-include 로 설정 :my-application-dashboard*
선택한 인벤토리 항목:
my-application-dashboard
my-application-dashboard_deployment
인벤토리에 glob 패턴 조합 사용 -include
inventory-include 로 설정 :*plugin-component*,configuration/*helm
선택한 인벤토리 항목:
my-application-plugin-component-config
my-application-plugin-component-diagnostic-monitor
configuration/serviceX-dashboard-setup_helm
configuration/serviceY-releases_helm
Inventory-Exclude에서 Glob 패턴 조합 사용
inventory-exclude 로 설정 :configuration/**, my-application-dashboard*
선택한 인벤토리 항목:
cd-pipeline-deps
my-application-plugin-component-config
my-application-plugin-component-diagnostic-monitor
my-application-task-runner
my-application-module
my-application-module_deployment
.inventoryignore
global_deployment
승격 가져오기/병합 요청
프로모션 풀/병합 요청의 본문에 포함된 정보는 변경 요청을 생성하는 데 사용됩니다. 프로모션 풀/병합 요청에 의해 변경된 파일들은 연속 배포 파이프라인을 통해 배포되는 항목(예: 이미지 등)을 나타냅니다. 변경 사항이 긴급 상황으로 인해 이루어진 경우, 프로모션 풀/머지 요청에는 ‘긴급’ 라벨이 표시됩니다. 지속적 배포 파이프라인에 의해 생성된 변경 요청도 ‘ emergency ’로 표시됩니다.
연속 통합 파이프라인에서 수집되는 증거가 요약되고 연속 배치 파이프라인의 변경 요청에 첨부됩니다.
특별 판매 유효성 검증 파이프라인
판촉 PR이 열리면 선택적으로 판촉 유효성 검사 파이프라인에서 증거 집계 및 요약 생성을 수행하고 판촉 가져오기/병합 요청 (PR) 에서 증거 상태를 설정할 수 있습니다. PR은 판촉 파이프라인에 의해 작성되거나 재고 저장소에서 수동으로 작성될 수 있습니다.
파이프라인은 PR이 대상 분기 (환경) 에 병합되기 전에 판촉 PR의 조기 유효성 검증을 가능하게 합니다. PR의 상태에 따라 사용자는 판촉을 진행하거나 (모든 증거 상태가 초록색인 경우) 연속 통합 파이프라인에서 문제를 수정하도록 선택할 수 있습니다 (증거 상태가 빨간색인 경우).
또한 검증 파이프라인은 인벤토리 내 하나 이상의 애플리케이션에 대한 증거의 집계된 요약 정보를 프로모션 풀/병합 요청에 사용자 친화적인 표 형식의 코멘트로 추가합니다(그림 3 참조). 이 표는 파이프라인 실행, 애플리케이션 저장소, 각 애플리케이션별로 생성된 이슈 등에 대한 유용한 링크를 제공합니다.
기본적으로, 상세 증거 상태 테이블의 각 행은 인벤토리 항목에서 참조되는 아티팩트를 생성하는 데 사용된 소스 저장소에서 제공된 애플리케이션 컨텍스트에 대응합니다. 이 애플리케이션의 기본 그룹화는 각 인벤토리 항목 파일에 JSON 필터(속성 에 application-group-by-filter 정의됨)를 적용하여 얻은 그룹화 값을 기반으로 사용자 정의할 수 있습니다.
유효성 검증이 진행되는 동안 승격 가져오기/병합 요청의 병합이 차단됩니다. 유효성 검증 파이프라인이 완료되면 증거 상태가 가져오기/병합 요청에 설정됩니다. 상태의 각 항목을 클릭하면 사용자가 해당 CI 파이프라인 실행의 특정 단계로 이동합니다.
스테이지 및 태스크
다음 표에는 프로모션 검증 파이프라인에서 실행되는 작업들이 나열되어 있습니다. 또한 이 표에는 이러한 각 단계에 대한 개요도 제시되어 있습니다:
-
작업 또는 단계: 이는
.pipeline-config.yaml구성 파일 내에서 정의된 단계의 이름을 의미합니다. -
간략한 설명: 이 항목은 해당 단계의 실행 과정에서 수행되는 작업에 대해 간결하게 설명합니다.
-
사용자 정의 허용 : 이는 사용자가
.pipeline-config.yaml파일에 사용자 정의 스크립트를 삽입하여 스테이지의 기본 동작을 수정하거나 대체할 수 있는 유연성을 가지는지 여부를 나타냅니다. -
기본 참조 구현: 이는 ‘ DevSecOps ’ 파이프라인에 해당 단계에 대한 사전 정의된 구현 또는 기본 구현이 포함되어 있는지 여부를 나타냅니다. 특히,
unit-tests또는setup와 같은 특정 단계의 경우, DevSecOps 파이프라인은 기본적으로 사용할 수 있는 구현을 제공하지 않습니다. 대신, 사용자는 자신의 애플리케이션 요구 사항에 맞춰 제작된 사용자 정의 스크립트나 코드를 제공해야 합니다. -
증거 수집: 이 항목은 해당 단계에서 표준 증거 수집을 수행하는지 여부를 나타냅니다. DevSecOps Pipeline이 특정 단계에 대한 참조 구현을 제공할 경우, 증거 수집은 별도의 설정 없이 바로 수행됩니다. 그러나 사용자가 이러한 사전 정의된 단계를 수정하거나 대체하기로 선택한 경우, 사용자 정의 구현에 적절한 증거 수집 절차가 포함되도록 해야 합니다. DevSecOps 파이프라인이 기본 제공 구현을 제공하지 않는 단계의 경우, 증거 수집을 수행해야 하므로 사용자에게 동일한 책임이 부과됩니다. 이 열은 증거 수집을 수행하는 주체( 사용자/파이프라인 )를 나타냅니다.
-
건너뛰기 허용 ( v10 이상 버전에 적용됨): 이는 사용자가
.pipeline-config.yaml``에서skip속성을true로 설정하여 이 단계의 실행을 건너뛸 수 있는지 여부를 나타냅니다. 다만, 이 기능을 사용할 때는, 특히 증거 수집을 목적으로 설계된 단계의 경우 각별한 주의가 필요합니다. 이러한 단계를 건너뛰면 빌드에 필요한 필수 증거 자료를 놓칠 수 있습니다.
| 태스크 또는 스테이지 | 간단한 설명 | 다음에서 사용자 지정이 허용됩니다. .pipeline-config.yaml |
기본 참조 구현 | 증거 콜렉션 | 건너뛰기 허용 |
|---|---|---|---|---|---|
inventory-validation |
승진을 위해 제출된 풀 리퀘스트를 검토합니다. | 아니오 | 예 | 해당사항 없음 | 아니오 |
validation-finish |
로그 파일, 아티팩트, 증거를 수집하고 증거 라커에 업로드합니다. | 예 | 아니오 | 해당사항 없음 | 아니오 |
.pipeline-config.yaml 파일을 사용하여 스테이지를 사용자 정의하는 방법에 대한 자세한 내용은 ‘사용자 정의 스크립트’ 및 ‘파이프라인 매개변수’ 목록을 참조하십시오.
판촉 유효성 검사에 가입하는 방법은 무엇입니까?
사용 중단됨 풀 리퀘스트에서 프로모션 유효성 검사 파이프라인을 자동으로 시작하는 데 사용되었던 opt-in-promotion-validation 옵션은 deprecated 대신 Git Promotion Validation trigger 으로 변경되었습니다. 환경 설정에 이 특성이
있는 경우 파이프라인 로그 및 Slack 알림에 더 이상 사용되지 않음 알림이 표시됩니다.
프로모션 유효성 검사를 사용 설정하는 방법은 무엇인가요?
모든 새로운 CD 툴체인에 대해 ‘ Git ’ 프로모션 검증 트리거가 자동으로 생성되며, 활성화 상태로 설정됩니다.
기존 파이프라인에서 Git 판촉 유효성 검사 트리거를 사용으로 설정하기 위해 다음 단계를 사용할 수 있습니다.
- 추가하려는 CD 파이프라인의 트리거 페이지로 이동하십시오.
- 추가 > Git 저장소 를 선택하여 새 트리거를 추가하십시오.
- 트리거에 필요한 다음 정보를 입력하십시오.
- 트리거 이름을 제공하십시오. 예를 들어, Git 판촉 유효성 검사 트리거입니다.
promotion-validation-listener or promotion-validation-listener-gitlab를EventListener로 지정하십시오.- 저장소 필드의 파이프라인에 해당하는 인벤토리 저장소를 선택하십시오.
- 분기의 대상 환경 이름을 선택하십시오.
- 가져오기 요청이 열리거나 업데이트될 때필드의 상자를 선택하십시오.
- 추가 를 클릭하십시오.
- 트리거를 On 으로 설정하십시오.
입력
| 가변 | 설명 | 기본값 | 필수 또는 선택사항 |
|---|---|---|---|
| source-environment | 승격의 소스 인벤토리 분기입니다. | master |
필수 |
| target-environment | 승격의 대상 인벤토리 분기입니다. | prod |
필수 |
| 우선순위 | 변경의 우선순위입니다. | critical, high, moderate, low또는 planning |
선택사항 |
| 담당자 | 변경 요청 IBM Cloud 조직에 변경 요청을 지정할 개인의 이메일 또는 기능 ID입니다. | '' |
선택사항 |
| 설명 | 변경 요청 설명에 추가된 변경에 관한 설명입니다. | '' |
선택사항 |
| 목적 | 변경이 필요한 이유입니다. | '' |
선택사항 |
| impact | 이번 변경 사항이 미치는 영향에 대한 추가 참고 사항. | '' |
선택사항 |
| 인벤토리 무시 파일 | .inventoryignore 파일의 사용자 정의 파일 이름. 이 파일에는 모든 부분 승격 실행 시 무시할 파일/폴더 목록이 포함되어 있습니다. | .inventoryignore |
선택사항 |
| 인벤토리 포함 | 선택적으로 승격할 인벤토리 항목입니다(부분 승격). | '' |
선택사항 |
| 재고 제외 | 부분 판촉에서 제외할 재고 항목입니다. | '' |
선택사항 |
| backout-plan | 변경이 실패에서 롤백되는 방법을 설명하는 계획입니다. | '' |
선택사항 |
| slack-notifications | Slack 통합을 켜거나 끄는 스위치입니다. | 0 | 선택사항 |
| 고객 영향 | 고객에 대한 변경의 영향입니다. | critical, high, moderate, low또는 no_impact |
선택사항 |
출력 및 결과
- Slack 알림
- 승격 가져오기/병합 요청
선택적 매개변수가 제공되지 않은 경우 가져오기/병합 요청을 편집하고 수정해야 합니다.
| 가변 | 설명 | 필수 또는 선택사항 |
|---|---|---|
| 우선순위 | 다음 값 중 하나: Critical, High, Moderate, Low, Planning |
필수 |
| 변경 요청 지정자 | 담당자의 이메일 ID입니다. | 필수 |
| 추가 설명(D) | 애플리케이션의 변경 사항에 대한 설명. | 선택사항 |
| 용도 | 해당 애플리케이션에 적용된 변경 사항의 목적. | 선택사항 |
| 영향 설명 | 애플리케이션 동작 또는 환경의 변경이 미치는 영향. | 선택사항 |
| 고객 영향 | 다음 값 중 하나: Critical, High, Moderate, Low, No_Impact |
필수 |
| 배치 영향 | 다음 값 중 하나: Small, Large |
필수 |
| 백아웃 계획 | 배치에 실패하는 경우 백아웃하는 단계입니다. | 선택사항 |
(선택적) 판촉 PR 유효성 검증이 실행되면 증거 상태가 가져오기/병합 요청에 설정됩니다.
증거의 집계된 증거 요약 (인벤토리의 여러 앱에서 가져올 수 있음) 은 PR에서 주석으로 표 형식으로 표시됩니다.
다음 단계
판촉 파이프라인이 성공적으로 완료되면 CD 파이프라인으로 진행 할 수 있습니다.