릴리스 게이트를 사용하여 배포 제어

랩 요구 사항

랩 개요

이 랩에서는 배포 게이트의 구성을 살펴보고 배포 게이트를 사용하여 Azure Pipelines 실행을 제어하는 방법을 자세히 확인합니다. 배포 게이트 구현 방식을 파악하기 위해 Azure 웹앱용 환경 2개를 사용하여 릴리스 정의를 구성합니다. 또한 앱의 실행을 차단하는 버그가 없을 때만 DevTest 환경에 앱을 배포하고, Azure Monitor의 Application Insights에 활성 경고가 없을 때만 DevTest 환경을 완료 상태로 표시합니다.

릴리스 파이프라인은 애플리케이션을 다양한 환경에 배포할 수 있는 엔드투엔드 릴리스 프로세스를 지정합니다. 작업과 태스크를 사용하면 각 환경으로 애플리케이션을 배포하는 전체 과정을 자동화할 수 있습니다. 가급적이면 애플리케이션에 대한 새 업데이트가 모든 사용자에게 동시에 노출되지 않는 것이 좋습니다. 즉, 업데이트는 단계별로 표시하는 것이 좋습니다. 가령 일부 사용자에게 업데이트를 먼저 표시하여 사용 방식을 모니터링한 다음 초기 사용자 세트에서 확인된 경험을 토대로 하여 다른 사용자에게 업데이트를 표시할 수 있습니다.

승인과 게이트를 사용하여 릴리스에서 배포의 시작 및 완료를 제어할 수 있습니다. 사용자가 수동으로 배포를 승인 또는 거부할 때까지 기다릴 수 있습니다. 릴리스 게이트를 사용하면, 릴리스가 다음 환경으로 승격되기 전에 충족해야 하는 애플리케이션 상태 조건을 지정할 수 있습니다. 환경 배포 전 또는 후에 지정된 모든 게이트가 통과하거나 정의된 시간 제한에 도달하여 실패할 때까지 계속 자동으로 평가됩니다.

게이트는 배포 전 조건 또는 배포 후 조건 패널의 릴리스 정의에서 환경에 추가할 수 있습니다. 여러 게이트를 환경 조건에 추가하여 릴리스에 대한 모든 입력이 성공적으로 완료되도록 할 수 있습니다.

예를 들어

  • 배포 전 게이트를 사용하면 빌드를 환경에 배포하기 전에 작업 항목이나 문제 관리 시스템에 활성 문제가 없음을 확인할 수 있습니다.
  • 배포 후 게이트를 사용하면 앱을 배포한 후 릴리스를 다음 환경으로 승격하기 전에 앱의 모니터링 또는 인시던트 관리 시스템에 인시던트가 발생하지 않았음을 확인할 수 있습니다.

모든 계정에는 기본적으로 4가지 유형의 게이트가 포함되어 있습니다.

  • Azure 함수 호출: Azure 함수 실행을 트리거하고 성공적으로 완료되었는지 확인합니다.
  • Azure Monitor 경고 쿼리: 활성 경고에 대해 구성된 Azure Monitor 경고 규칙을 준수합니다.
  • REST API 호출: REST API를 호출하고 응답이 정상 반환되면 작업을 계속 진행합니다.
  • 작업 항목 쿼리: 쿼리에서 반환되는 일치하는 작업 항목 수가 임계값 내에 있는지 확인합니다.

목표

이 랩을 완료하면 다음 작업을 수행할 수 있습니다.

  • 릴리스 파이프라인 구성
  • 릴리스 게이트 구성
  • 릴리스 게이트 테스트

예상 소요 시간: 75분

지침

연습 0: 랩 필수 구성 요소 구성

이 연습에서는 랩 필수 구성 요소를 설정합니다.

작업 1: (완료된 경우 건너뛰기) 팀 프로젝트 만들기 및 구성

이 작업에서는 여러 랩에서 사용할 eShopOnWeb Azure DevOps 프로젝트를 만듭니다.

  1. 랩 컴퓨터의 브라우저 창에서 Azure DevOps 조직을 엽니다. 새 프로젝트를 클릭합니다. 프로젝트 이름을 eShopOnWeb으로 설정하고 다른 필드는 기본값으로 유지합니다. 만들기를 클릭합니다.

    새 프로젝트 만들기 패널의 스크린샷.

작업 2: (완료된 경우 건너뛰기) eShopOnWeb Git 리포지토리 가져오기

이 작업에서는 여러 랩에서 사용할 eShopOnWeb Git 리포지토리를 가져옵니다.

  1. 랩 컴퓨터의 브라우저 창에서 Azure DevOps 조직 및 이전에 만든 eShopOnWeb 프로젝트를 엽니다. Repos > 파일, 리포지토리 가져오기를 클릭합니다. 가져오기를 선택합니다. Git 리포지토리 가져오기 창에서 다음 URL https://github.com/MicrosoftLearning/eShopOnWeb.git을 붙여넣고 가져오기를 클릭합니다.

    리포지토리 가져오기 패널의 스크린샷.

  2. 리포지토리는 다음과 같은 방식으로 구성됩니다.
    • .ado 폴더에는 Azure DevOps YAML 파이프라인이 포함되어 있습니다.
    • .devcontainer 폴더 컨테이너 설정을 통해 컨테이너를 사용하여 개발합니다(VS Code 또는 GitHub Codespaces에서 로컬로).
    • infra 폴더에는 일부 랩 시나리오에서 사용되는 코드 템플릿으로 Bicep 및 ARM 인프라가 포함되어 있습니다.
    • .github 폴더 컨테이너 YAML GitHub 워크플로 정의.
    • src 폴더에는 랩 시나리오에서 사용되는 .NET 8 웹 사이트가 포함되어 있습니다.
  3. Repos > 분기로 이동합니다.
  4. 기본 분기를 마우스로 가리킨 다음 열 오른쪽에 있는 줄임표를 클릭합니다.
  5. 기본 분기로 설정을 클릭합니다.

작업 3: Azure DevOps에서 YAML을 사용하여 CI 파이프라인을 코드로 구성

이 작업에서는 기존 프로젝트에 YAML 빌드 정의를 추가합니다.

  1. Pipelines 허브의 파이프라인 창으로 다시 이동합니다.
  2. 첫 번째 파이프라인 만들기 창에서 파이프라인 만들기를 클릭합니다.

    참고: 여기서는 마법사를 사용하여 프로젝트를 기준으로 YAML 파이프라인 정의를 만듭니다.

  3. 코드 위치 창에서 Azure Repos Git(YAML) 옵션을 클릭합니다.
  4. 리포지토리 선택 창에서 eShopOnWeb을 클릭합니다.
  5. 파이프라인 구성 창에서 아래로 스크롤하여 기존 Azure Pipelines YAML 파일을 선택합니다.
  6. 기존 YAML 파일 선택 블레이드에서 다음 매개 변수를 지정합니다.
    • 분기: main
    • 경로: .ado/eshoponweb-ci.yml
  7. 계속을 클릭하여 이러한 설정을 저장합니다.
  8. 파이프라인 YAML 검토 화면에서 실행을 클릭하여 빌드 파이프라인 프로세스를 시작합니다.
  9. 빌드 파이프라인이 성공적으로 완료될 때까지 기다립니다. 소스 코드 자체에 대한 경고는 이 랩 연습과 관련이 없으므로 무시하십시오.

    참고: YAML 파일의 각 작업(경고와 오류 포함)을 검토할 수 있습니다.

  10. 파이프라인은 프로젝트 이름을 기준으로 이름을 사용합니다. 파이프라인을 더 잘 식별하기 위해 이름을 바꿔보겠습니다. Pipelines > Pipelines로 이동하여 최근에 만든 파이프라인을 클릭합니다. 줄임표 및 이름 바꾸기/이동 옵션을 클릭합니다. eshoponweb-ci 로 이름을 지정하고 저장을 클릭합니다.

연습 1: 릴리스 파이프라인에 필요한 Azure 리소스 만들기

작업 1: Azure 웹앱 2개 만들기

이 작업에서는 Azure Pipelines를 통해 애플리케이션을 배포할 DevTestProduction 환경을 나타내는 Azure 웹앱 2개를 만듭니다.

  1. 랩 컴퓨터에서 웹 브라우저를 시작하여 Azure Portal로 이동한 다음 이 랩에서 사용할 Azure 구독의 소유자 역할, 그리고 해당 구독과 연결된 Microsoft Entra 테넌트의 전역 관리자 역할이 지정된 사용자 계정으로 로그인합니다.
  2. Azure Portal의 페이지 위쪽 검색 텍스트 상자 바로 오른쪽에 있는 Cloud Shell 아이콘을 클릭합니다.
  3. BashPowerShell 중 선택하라는 메시지가 표시되면 Bash를 선택합니다.

    참고: Cloud Shell을 처음 시작했는데 탑재된 스토리지 없음이라는 메시지가 표시되면 이 랩에서 사용하는 구독을 선택하고 스토리지 만들기를 선택합니다.

  4. Bash 프롬프트의 Cloud Shell 창에서 다음 명령을 실행하여 리소스 그룹을 만듭니다. 여기서 <region> 자리 표시자는 Azure 웹앱 2개를 호스트할 Azure 지역의 이름(예: ‘westeurope’, ‘centralus’ 또는 사용자가 선택하는 기타 사용 가능한 지역)으로 바꿉니다.

    참고: 가능한 위치는 다음 명령을 실행하여 찾을 수 있습니다. <region>에 대한 이름: az account list-locations -o table 사용

    REGION='<region>'
    RESOURCEGROUPNAME='az400m03l08-RG'
    az group create -n $RESOURCEGROUPNAME -l $REGION
    
  5. App Service 계획을 만들려면 다음 명령을 실행합니다.

    SERVICEPLANNAME='az400m03l08-sp1'
    az appservice plan create -g $RESOURCEGROUPNAME -n $SERVICEPLANNAME --sku S1
    
  6. 고유한 앱 이름을 지정하여 웹앱 2개를 만듭니다.

    SUFFIX=$RANDOM$RANDOM
    az webapp create -g $RESOURCEGROUPNAME -p $SERVICEPLANNAME -n RGATES$SUFFIX-DevTest
    az webapp create -g $RESOURCEGROUPNAME -p $SERVICEPLANNAME -n RGATES$SUFFIX-Prod
    

    참고: DevTest 웹앱의 이름을 기록합니다. 이 랩의 후반부에서 필요합니다.

  7. Web App Services Resources 프로비저닝 프로세스가 완료될 때까지 기다린 후 Cloud Shell 창을 닫습니다.

작업 2: Application Insights 리소스 구성

  1. Azure Portal에서 페이지 상단의 리소스, 서비스 및 문서 검색 텍스트 상자를 사용하여 Application Insights 을(를) 검색한 다음 결과 목록에서 Application Insights를 선택합니다.
  2. Application Insights 블레이드에서 + 만들기를 선택합니다.
  3. Application Insights 블레이드의 기본 사항 탭에서 다음 설정을 지정합니다(다른 설정은 기본값으로 유지).

    설정
    Resource group az400m03l08-RG
    속성 이전 작업에서 기록한 DevTest 웹앱의 이름
    지역 이전 작업에서 초반에서 웹앱을 배포한 것과 동일한 Azure 지역
  4. 검토 + 만들기를 클릭한 다음, 만들기를 클릭합니다.
  5. 프로비저닝 프로세스가 완료될 때까지 기다립니다.
  6. Azure Portal에서 이전 작업에서 만든 리소스 그룹 az400m03l08-RG로 이동합니다.
  7. 리소스 목록에서 DevTest 웹앱을 클릭합니다.
  8. DevTest 웹앱 페이지 왼쪽의 세로 메뉴에 있는 모니터링 섹션에서 Application Insights를 클릭합니다.
  9. Application Insights 블레이드에서 Application Insights 켜기를 클릭합니다.
  10. 리소스 변경 섹션에서 기존 리소스 선택 옵션을 클릭하고 기존 리소스 목록에서 새로 만든 Application Insight 리소스를 선택한 다음 적용을 클릭합니다. 그리고 작업을 확인하라는 메시지가 표시되면 를 클릭합니다.
  11. 변경 내용이 적용될 때까지 기다립니다.

    참고: 여기서는 이 랩 뒷부분에서 사용할 모니터 경고를 만듭니다.

  12. 웹앱 내의 동일한 설정 / Application Insights 메뉴 옵션에서 Application Insight 데이터 보기를 선택합니다. 이렇게 하면 Azure Portal의 Application Insights 블레이드로 리디렉션됩니다.
  13. Application Insights 리소스 블레이드의 모니터링 섹션에서 경고를 클릭한 다음, 만들기 > 경고 규칙을 클릭합니다.
  14. 경고 규칙 만들기 블레이드의 조건 섹션에서 모든 신호 보기 링크를 클릭하고 Requests를 입력합니다. 결과 목록에서 실패한 요청을 선택합니다.
  15. 경고 규칙 만들기 블레이드의 조건 섹션에서 임계값고정으로 설정하고, 다른 기본 설정의 유효성을 다음과 같이 검사합니다.

    • 집계 형식: Count
    • 연산자: 보다 큼
    • 단위: 개수
  16. 임계값 텍스트 상자에 0을 입력하고 다음:작업을 클릭합니다. 작업 설정 블레이드에서 아무것도 변경하지 말고 세부 정보 섹션에서 다음 매개 변수를 정의합니다.

    설정
    심각도 2 - 경고
    경고 규칙 이름 RGATESDevTest_FailedRequests
    고급 옵션: 자동으로 경고 해결 삭제됨

    참고: 메트릭 경고 규칙을 활성화하려면 최대 10분이 걸릴 수 있습니다.

    참고: 가용성 99% 미만, 서버 응답 시간 5초 초과, 서버 예외 0 초과 등의 다른 메트릭용으로 여러 경고 규칙을 만들 수 있습니다.

  17. 검토+만들기를 클릭하여 경고 규칙 만들기를 확인하고 만들기를 클릭하여 다시 한 번 확인합니다. 경고 규칙이 성공적으로 만들어질 때까지 기다립니다.

연습 2: 릴리스 파이프라인 구성

이 연습에서는 릴리스 파이프라인을 구성합니다.

작업 1: 릴리스 작업 설정

이 작업에서는 릴리스 파이프라인의 일부로 릴리스 작업을 설정합니다.

  1. Azure DevOps 포털에서 eShopOnWeb 프로젝트의 세로 탐색 창에서 파이프라인을 선택한 다음, 파이프라인 섹션 내에서 릴리스를 클릭합니다.
  2. 새 파이프라인을 클릭합니다.
  3. 템플릿 선택 창에서 Azure App Service 배포(애플리케이션을 Azure App Service에 배포)를 선택합니다. 주요 템플릿 목록에서 Windows, Linux, 컨테이너, 함수 앱 또는 WebJobs의 웹앱 중에서 선택합니다.
  4. 적용을 클릭합니다.
  5. 표시되는 스테이지 창에서 기본 “스테이지 1”이라는 스테이지 이름을 DevTest 로 업데이트합니다. X 단추를 사용하여 팝업 창을 닫습니다. 이제 릴리스 파이프라인의 그래픽 편집기에 있으며, DevTest 스테이지가 표시되어 있습니다.
  6. 페이지 맨 위에서 현재 파이프라인의 이름을 새 릴리스 파이프라인에서 eshoponweb-cd 로 바꿉니다.
  7. DevTest 스테이지 위로 마우스를 올리고 복제 단추를 클릭하여 DevTest 스테이지를 추가 스테이지로 복사합니다. 이 스테이지의 이름을 Production 으로 지정합니다.

    참고: 파이프라인에는 이제 DevTestProduction이라는 이름의 스테이지 2개가 포함되어 있습니다.

  8. 파이프라인 탭에서 아티팩트 추가 사각형을 선택하고 원본(빌드 파이프라인) 필드에서 eshoponweb-ci를 선택합니다. 추가를 클릭하여 아티팩트 선택 사항을 확인합니다.
  9. 아티팩트 사각형에서 연속 배포 트리거(번개 모양)를 확인합니다. 연속 배포 트리거 설정을 열려면 이를 클릭합니다. 사용 안 함을 클릭하여 스위치를 전환하고 사용하도록 설정합니다. 다른 설정은 모두 기본값으로 유지하고 연속 배포 트리거 창 오른쪽 위의 x 표시를 클릭하여 창을 닫습니다.
  10. DevTest 환경 스테이지 내에서 작업 1개, 태스크 1개 레이블을 클릭하고 이 페이지 내에서 해당 태스크를 검토합니다.

    참고: DevTest 환경에는 각각 아티팩트 패키지를 Azure 웹앱에 게시하는 1개의 작업이 있습니다.

  11. 모든 파이프라인 > eshoponweb-cd 창에서 DevTest 스테이지가 선택되어 있는지 확인합니다. Azure 구독 드롭다운 목록에서 Azure 구독을 선택하고 권한 부여를 클릭합니다. 메시지가 표시되면 Azure 구독의 Owner 역할이 지정된 사용자 계정을 사용하여 인증합니다.
  12. 앱 유형이 ‘Windows의 웹앱’으로 설정되어 있는지 확인합니다. 그 다음, App Service 이름 드롭다운 목록에서 DevTest 웹앱의 이름을 선택합니다.
  13. Azure App Service 배포 작업을 선택합니다. 패키지 또는 폴더 필드에서 “$(System.DefaultWorkingDirectory)/**/*.zip”의 기본값을 “$(System.DefaultWorkingDirectory)/**/Web.zip”으로 업데이트합니다.

    참고: 작업 탭 옆에 느낌표가 표시됩니다. 프로덕션 단계에 대한 설정을 구성해야 하므로 이 느낌표가 표시되는 건 정상입니다.

  14. 애플리케이션 및 구성 설정 창을 열고 앱 설정 상자에 -UseOnlyInMemoryDatabase true -ASPNETCORE_ENVIRONMENT Development를 입력합니다.

  15. 모든 파이프라인 > eshoponweb-cd 창에서 파이프라인 탭으로 이동하고 이번에는 프로덕션 스테이지 내에서 작업 1개, 태스크 1개 레이블을 클릭합니다. 이전의 DevTest 스테이지와 유사한 방식으로 파이프라인 설정을 완료합니다. 작업 탭/프로덕션 배포 프로세스 아래의 Azure 구독 드롭다운 목록에서 DevTest 환경 스테이지에 대해 사용한 Azure 구독을 선택합니다(사용 가능한 Azure 서비스 연결 아래에 표시됨). 이렇게 하는 이유는 구독을 사용하도록 권한을 부여할 때 이미 서비스 연결을 만들었기 때문입니다.
  16. App Service 이름 드롭다운 목록에서 프로덕션 웹앱의 이름을 선택합니다.
  17. Azure App Service 배포 작업을 선택합니다. 패키지 또는 폴더 필드에서 “$(System.DefaultWorkingDirectory)/**/*.zip”의 기본값을 “$(System.DefaultWorkingDirectory)/**/Web.zip”으로 업데이트합니다.
  18. 애플리케이션 및 구성 설정 창을 열고 앱 설정 상자에 -UseOnlyInMemoryDatabase true -ASPNETCORE_ENVIRONMENT Development를 입력합니다.
  19. 모든 파이프라인 > eshoponweb-cd 창에서 저장을 클릭하고 저장 대화 상자에서 확인을 클릭합니다

    이제 릴리스 파이프라인을 성공적으로 구성했습니다.

  20. eShopOnWeb 프로젝트가 표시된 브라우저 창의 세로 탐색 창에 있는 파이프라인 섹션에서 파이프라인을 클릭합니다.
  21. 파이프라인 창에서 eshoponweb-ci 빌드 파이프라인을 나타내는 항목을 클릭한 다음, 파이프라인 실행을 클릭합니다.
  22. 파이프라인 실행 페이지에서 기본 설정을 수락하고 실행을 클릭하여 파이프라인을 트리거합니다. 빌드 파이프라인이 완료될 때까지 기다립니다.

    참고: 빌드가 정상적으로 완료되면 릴리스가 자동으로 트리거되며 애플리케이션이 두 환경에 배포됩니다. 빌드 파이프라인이 성공적으로 완료되면 릴리스 작업의 유효성을 검사합니다.

  23. 세로 탐색 창의 파이프라인 섹션에서 릴리스를 클릭하고 eshoponweb-cd 창에서 가장 최신 릴리스를 나타내는 항목을 클릭합니다.
  24. eshoponweb-cd > Release-1 블레이드에서 릴리스 진행률을 추적하여 두 웹앱으로의 배포가 정상적으로 완료되었는지 확인합니다.
  25. Azure Portal 인터페이스로 전환하여 리소스 그룹 az400m03l08-RG로 이동하고 리소스 목록에서 DevTest 웹앱을 클릭한 다음 웹앱 블레이드에서 찾아보기를 클릭하고 새 웹 브라우저 탭에서 웹 페이지(전자 상거래 웹사이트)가 성공적으로 로드되는지 확인합니다.
  26. Azure Portal 인터페이스로 다시 전환하여 이번에는 리소스 그룹 az400m03l08-RG로 이동하고, 리소스 목록에서 Production 웹앱을 클릭하고, 웹앱 블레이드에서 찾아보기를 클릭한 다음 새 웹 브라우저 탭에서 웹 페이지가 성공적으로 로드되는지 확인합니다.
  27. EShopOnWeb 웹 사이트가 표시된 웹 브라우저 탭을 닫습니다.

    참고: 이제 애플리케이션에서 CI/CD가 구성되었습니다. 다음 연습에서는 품질 게이트를 고급 릴리스 파이프라인의 일부로 설정합니다.

연습 3: 릴리스 게이트 구성

이 연습에서는 릴리스 파이프라인에서 품질 게이트를 설정합니다.

작업 1: 승인을 위한 배포 전 게이트 구성

이 작업에서는 배포 전 게이트를 구성합니다.

  1. Azure DevOps 포털이 표시된 웹 브라우저 창으로 전환하고 eShopOnWeb 프로젝트를 엽니다. 세로 탐색 창의 파이프라인 섹션에서 릴리스를 클릭하고 eshoponweb-cd 창에서 편집을 클릭합니다.
  2. 모든 파이프라인 > eshoponweb-cd 창에서 DevTest 환경 스테이지를 나타내는 사각형의 왼쪽 모서리에 있는 배포 전 조건을 나타내는 타원을 클릭합니다.
  3. 배포 전 조건 창에서 배포 전 승인 슬라이더를 사용으로 설정하고 승인자 텍스트 상자에 Azure DevOps 계정 이름을 입력한 다음 선택합니다.

    참고: 실제 시나리오에서 이는 사용자의 고유한 이름 대신 DevOps 팀 이름 별칭으로 표시됩니다.

  4. 사전 승인 설정을 저장하고 팝업 창을 닫습니다.
  5. 릴리스 만들기를 클릭하고 팝업 창에서 만들기 단추를 눌러 확인합니다.
  6. ‘Release-2’가 생성되었다는 녹색 확인 메시지가 표시되는지 확인합니다. ‘Release-2’ 링크를 클릭하여 세부 정보로 이동합니다.
  7. DevTest 스테이지가 승인 보류 중 상태입니다. 승인 단추를 클릭합니다. 이렇게 하면 DevTest 스테이지가 다시 시작됩니다.

작업 2: Azure Monitor를 위한 배포 후 게이트 구성

이 작업에서는 DevTest 환경의 배포 후 게이트를 사용하도록 설정합니다.

  1. 모든 파이프라인 > eshoponweb-cd 창으로 돌아와서 DevTest 환경 스테이지를 나타내는 사각형의 오른쪽 모서리에 있는 배포 후 조건을 나타내는 타원을 클릭합니다.
  2. 배포 후 조건 창에서 게이트 슬라이더를 사용으로 설정하고 + 추가를 클릭한 다음 팝업 메뉴에서 Azure Monitor 경고 쿼리를 클릭합니다.
  3. 배포 후 조건 창의 Azure Monitor 경고 쿼리 섹션의 Azure 구독 드롭다운 목록에서 Azure 구독 연결을 나타내는 서비스 연결 항목을 선택하고, 리소스 그룹 드롭다운 목록에서 az400m03l08-RG 항목을 선택합니다.
  4. 배포 후 조건 창에서 고급 섹션을 확장하고 다음 옵션을 구성합니다.

    • 필터 유형: 없음
    • 심각도: Sev0, Sev1, Sev2, Sev3, Sev4
    • 시간 범위: 지난 시간
    • 경고 상태: 승인됨, 새로 만들기
    • 모니터 조건: 발생함
  5. 배포 후 조건 창에서 평가 옵션을 확장하고 다음 옵션을 구성합니다.

    • 게이트 재평가 간격 값을 5분으로 설정합니다.
    • 이 시간 후에 게이트가 실패하는 시간 제한 값을 8분으로 설정합니다.
    • 게이트 성공 시 승인 요청 옵션을 선택합니다.

    참고: 샘플링 간격과 시간 제한은 연동되므로 게이트는 적절한 간격으로 함수를 호출하며, 시간 제한에 해당하는 기간 내의 동일 샘플링 간격 동안 배포가 정상적으로 완료되지 않으면 배포를 거부합니다.

  6. 배포 후 조건 창 오른쪽 위의 x 표시를 클릭하여 창을 닫습니다.
  7. eshoponweb-cd 창으로 돌아와서 저장을 클릭하고 저장 대화 상자에서 확인을 클릭합니다

연습 4: 릴리스 게이트 테스트

이 연습에서는 애플리케이션을 업데이트하여 릴리스 게이트를 테스트합니다. 애플리케이션을 업데이트하면 배포가 트리거됩니다.

작업 1: 릴리스 게이트 추가 후 애플리케이션 업데이트 및 배포

이 작업에서는 먼저 DevTest 웹앱에 대한 몇 가지 경고를 생성한 다음 릴리스 게이트를 사용하도록 설정된 릴리스 프로세스를 추적합니다.

  1. Azure Portal에서 이전에 배포된 DevTest 웹앱 리소스로 이동합니다.
  2. 개요 창에서 웹 애플리케이션의 하이퍼링크를 보여 주는 URL 필드를 확인합니다. 브라우저에서 eShopOnWeb 웹 애플리케이션으로 리디렉션되는 이 링크를 클릭합니다.
  3. 실패한 요청을 시뮬레이션하려면 URL에 /discount를 추가합니다. 그러면 해당 페이지가 없으므로 오류 메시지가 표시됩니다. 이 페이지를 여러 번 새로 고쳐 여러 이벤트를 생성합니다.
  4. Azure Portal의 “리소스, 서비스 및 문서 검색” 필드에 Application Insights 을 입력하고 이전 연습에서 만든 DevTest-AppInsights 리소스를 선택합니다. 다음으로 경고로 이동합니다.
  5. 결과 목록에 1개 이상의 새 경고가 있어야 하며, 심각도 2Alerts 을 입력하여 Azure Monitor의 경고 서비스를 열 수 있습니다.
  6. 심각도 2 - 경고가 목록에 표시된 1개 이상의 Failed_Alert가 있어야 합니다. 이전 연습에서 존재하지 않는 웹 사이트 URL 주소의 유효성을 검사할 때 트리거가 발생했습니다.

    참고: 경고가 아직 표시되지 않은 경우 몇 분 정도 더 기다리세요.

  7. Azure DevOps 포털로 돌아가서 eShopOnWeb 프로젝트를 엽니다. 파이프라인으로 이동하여 릴리스를 선택하고 eshoponweb-cd를 선택합니다.
  8. 릴리스 만들기 단추를 클릭합니다.
  9. 릴리스 파이프라인이 시작될 때까지 기다렸다가 DevTest 스테이지 릴리스 작업을 승인합니다.
  10. DevTest 릴리스 스테이지가 성공적으로 완료될 때까지 기다립니다. 배포 후 게이트가 어떻게 평가 게이트 상태로 전환되는지 살펴보십시오. 평가 게이트 아이콘을 클릭합니다.
  11. Azure Monitor 경고 쿼리의 경우, 초기 실패 상태를 살펴봅니다.
  12. 릴리스 파이프라인을 다음 5분 동안 보류 중인 상태로 둡니다. 5분이 지나면 두 번째 평가가 다시 실패하는 걸 볼 수 있습니다.
  13. DevTest 웹앱에 대해 트리거된 Application Insights 경고가 있기 때문에 이는 예상된 동작입니다.

    참고: 예외로 인해 트리거된 경고가 있으므로 Azure Monitor 쿼리 게이트는 실패합니다. 그러므로 프로덕션 환경으로의 배포도 중단됩니다.

  14. 2~3분 동안 기다렸다가 릴리스 게이트의 상태를 다시 확인합니다. 초기 릴리스 게이트를 확인하고 초기 Application Insight 경고가 ‘실행됨’ 작업으로 트리거된 지도 몇 분이 지났으므로, 프로덕션 릴리스 스테이지의 배포가 허용되도록 릴리스 게이트가 성공해야 합니다.

    참고: 게이트가 실패하면 경고를 닫습니다.

    [!IMPORTANT] 불필요한 요금이 부과되지 않도록 Azure Portal에서 만든 리소스를 삭제하는 것을 잊지 마세요.

검토

이 랩에서는 릴리스 파이프라인을 구성한 다음 릴리스 게이트를 구성하고 테스트했습니다.