Cloud Deploy를 다른 시스템과 통합

Cloud Deploy를 소프트웨어 배포를 위해 사용되는 다른 시스템과 통합할 수 있습니다. 이 페이지에서는 Cloud Deploy를 다음과 통합하는 방법을 설명합니다.

  • 테스트 도구
  • 워크플로 관리

CI 파이프라인에서 Cloud Deploy를 호출하는 방법은 CI 시스템과 통합을 참조하세요.

시작하기 전에

이 페이지에서는 다음 조건이 이미 충족되었다고 가정합니다.

자동 테스트와 통합

Pub/Sub와 함께 Cloud Deploy를 사용해서 테스트를 배포 파이프라인에 통합할 수 있습니다. 이렇게 하면 지속적 배포를 위해 출시 버전을 자동으로 승격할 수 있습니다.

또한 출시에서 주석을 사용하여 테스트 결과에 대한 링크를 제공할 수 있습니다. 자세한 내용은 Cloud Deploy에 라벨 및 주석 사용을 참조하세요.

Pub/Sub를 사용하여 승격 자동화

  1. clouddeploy-operations 주제에서 Pub/Sub 메시지를 리슨합니다.

    이 메시지에는 다음 속성이 포함됩니다.

    • Action: SUCCEED
    • ResourceType: Rollout
    • Resource: projects/.../locations/.../deliveryPipelines/.../releases/.../rollouts/...
  2. 배포가 성공했다는 알림이 수신되면 배포된 애플리케이션에서 테스트를 실행합니다.

  3. 테스트가 성공하면 Cloud Deploy를 호출해서 다음 단계로 자동으로 승격합니다.

    gcloud deploy releases promote RELEASE_NAME \
    --delivery-pipeline=PIPELINE_NAME \
    --region=REGION \
    --annotations=KEY=VALUE,...
    

    각 항목의 의미는 다음과 같습니다.

    • RELEASE_NAME

      출시 버전의 이름입니다. 이 값은 필수 항목입니다.

    • PIPELINE_NAME

      이 출시 버전을 관리하는 전달 파이프라인의 이름입니다. 이 값은 필수 항목입니다.

    • REGION

      파이프라인이 실행되는 리전입니다. deploy/region 속성을 설정한 경우 이 플래그를 생략할 수 있습니다.

    • KEY=VALUE,...

      테스트 결과에 대한 정보 및 기타 테스트 정보를 포함할 수 있는 쉼표로 구분된 하나 이상의 키-값 문자열 쌍의 목록입니다. 예를 들면 다음과 같습니다.

      gcloud deploy releases promote --annotations="from_target=test,status=stable"

      출시에 대한 주석은 변경할 수 없습니다. 따라서 상태 주석을 추가하는 경우 나중에 동일 출시에서 해당 상태를 업데이트할 수 없습니다.

주석을 사용하여 테스트 결과 액세스 제공

액세스할 수 있는 테스트 결과를 가리키는 URL이 있으면 --annotations 플래그를 사용해서 이 URL을 출시의 주석으로 제공할 수 있습니다. 예를 들면 다음과 같습니다.

gcloud deploy releases promote --delivery-pipeline=my-demo-app-1 --region=us-central1 --project=my-demo-app-1-project --release=test-release-001 --annotations="test_results_url=https://example.com/results/my-demo-app-test-results-dev"

자세한 내용은 Cloud Deploy에 라벨 및 주석 사용을 참조하세요.

타사 워크플로 관리와 통합

Cloud Deploy는 작업 메시지를 Pub/Sub에 게시합니다. 워크플로 관리 도구는 이러한 Pub/Sub 주제를 구독하고 이를 사용해서 특정 워크플로를 트리거할 수 있습니다.

승인의 경우

clouddeploy-approvals 주제는 출시에 승인이 필요할 때 이를 시스템에 알립니다. 그런 후 외부 워크플로 시스템이 해당 작업을 수행해서 승인을 얻은 후 gcloud deploy rollouts approve를 호출합니다.

rollouts approve 명령어를 사용하는 계정에는 사전 정의된 IAM 역할 roles/clouddeploy.approver가 있어야 합니다.

외부 승인 워크플로를 설정하려면 다음 안내를 따르세요.

  1. 대상에 대해 승인이 필요합니다.

    대상에 대한 정의에서 requireApproval: true를 포함합니다.

  2. 메시지를 사용하려면 clouddeploy-approvals Pub/Sub 주제를 구독하고 워크플로 관리 시스템을 설정합니다.

  3. 워크플로 관리 시스템이 "Action": "Required"가 포함된 clouddeploy-approvals 주제에서 메시지를 수신하면 조직 요구사항에 따라 구성된 승인 워크플로를 시작합니다.

    이 메시지에는 또한 다음 형식으로 승인될 출시에 대한 참조가 포함됩니다.

    Resource: projects/.../locations/.../deliveryPipelines/.../releases/.../rollouts/...

    승인 워크플로의 출력은 출시에 대한 승인 또는 거부입니다.

  4. 워크플로 관리 시스템은 다음 명령어 형식으로 Cloud Deploy에 승인 또는 거부를 반환합니다.

    승인 명령어는 다음과 같습니다.

    gcloud deploy rollouts approve ROLLOUT \
    --delivery-pipeline=PIPELINE_NAME \
    --region=REGION \
    --release=RELEASE_NAME
    

    출시를 거부하는 명령어는 다음과 같습니다.

    gcloud deploy rollouts reject ROLLOUT \
    --delivery-pipeline=PIPELINE_NAME \
    --region=REGION \
    --release=RELEASE_NAME
    

    각 항목의 의미는 다음과 같습니다.

    • ROLLOUT

      승인이 요청된 출시의 이름입니다.

    • PIPELINE_NAME

      애플리케이션의 전달 파이프라인 관리 배포입니다.

    • RELEASE_NAME

      이 출시가 연결된 출시 버전의 이름입니다.

    • REGION

      전달 파이프라인이 실행되는 리전입니다.

예를 들면 다음과 같습니다.

gcloud deploy rollouts approve test-rollout --delivery-pipeline=web-app --release=test-release --region=us-central1