Azure Pipelines과의 연속 통합 지원

랩 요구 사항

랩 개요

이 랩에서는 YAML을 사용하여 Azure DevOps에서 빌드 파이프라인을 정의하는 방법을 알아봅니다. 파이프라인은 다음 두 가지 시나리오에서 사용됩니다.

  • 끌어오기 요청 유효성 검사 프로세스의 일부입니다.
  • 연속 통합 구현의 일부입니다.

목표

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

  • 끌어오기 요청의 일부로 빌드 유효성 검사를 포함합니다.
  • YAML을 사용하여 CI 파이프라인을 코드로 구성합니다.

예상 소요 시간: 30분

지침

연습 0: (완료된 경우 건너뛰기)랩 필수 구성 요소 구성

이 연습에서는 랩의 필수 구성 요소를 설정합니다. 구체적으로는 eShopOnWeb을 기반으로 하여 새 Azure DevOps 프로젝트와 리포지토리를 설정합니다.

작업 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 웹 사이트가 포함되어 있습니다.

작업 3: (완료된 경우 건너뛰기) 기본(main) 분기를 기본 분기로 설정

  1. Repos > Branches로 이동합니다.
  2. 기본 분기를 마우스로 가리킨 다음 열 오른쪽에 있는 줄임표를 클릭합니다.
  3. 기본 분기로 설정을 클릭합니다.

연습 1: 끌어오기 요청의 일부로 빌드 유효성 검사 포함

이 연습에서는 끌어오기 요청의 유효성을 검사하는 빌드 유효성 검사를 포함합니다.

작업 1: YAML 빌드 정의 가져오기

이 작업에서는 끌어오기 요청의 유효성을 검사하기 위해 분기 정책으로 사용할 YAML 빌드 정의를 가져옵니다.

먼저 eshoponweb-ci-pr.yml이라는 빌드 파이프라인을 가져오겠습니다.

  1. Pipelines > Pipelines로 이동합니다.
  2. 파이프라인 만들기 또는 새 파이프라인 만들기 단추를 클릭합니다.
  3. Azure Repos Git(YAML) 을 선택합니다.
  4. eShopOnWeb 리포지토리를 선택합니다.
  5. 기존 Azure Pipelines YAML 파일을 선택합니다.
  6. 기본 분기와 /.ado/eshoponweb-ci-pr.yml 파일을 선택한 다음 계속을 클릭합니다.

    빌드 정의는 다음과 같은 작업으로 구성되어 있습니다.

    • DotNet Restore: NuGet 패키지 복원을 사용하면 소스 제어에 저장하지 않고도 프로젝트의 모든 종속성을 설치할 수 있습니다.
    • DotNet Build: 프로젝트 및 모든 해당 종속성을 빌드합니다.
    • DotNet Test: 단위 테스트를 실행하는 데 사용되는 .Net 테스트 드라이버입니다.
    • DotNet Publish: 호스팅 시스템에 배포하기 위해 애플리케이션 및 해당 종속성을 폴더에 게시합니다. 이 경우 Build.ArtifactStagingDirectory입니다.
  7. 저장 단추를 클릭하여 파이프라인 정의를 저장합니다.
  8. 파이프라인은 프로젝트 이름을 기준으로 이름을 사용합니다. 파이프라인을 더 잘 식별하기 위해 이름을 바꿔보겠습니다. Pipelines > Pipelines로 이동하여 최근에 만든 파이프라인을 클릭합니다. 줄임표 및 이름 바꾸기/이동 옵션을 클릭합니다. 이름을 eshoponweb-ci-pr로 설정하고 저장을 클릭합니다.

작업 2: 분기 정책

이 작업에서는 기본 분기에 정책을 추가하며, 정의된 정책을 준수하는 끌어오기 요청을 사용하는 변경 내용만 허용합니다. 분기의 변경 내용을 병합하기 전에 해당 변경 내용을 검토하려 합니다.

  1. Repos > 분기 섹션으로 이동합니다.
  2. 분기 창의 내 항목 탭에서 main 분기 항목 위에 마우스 포인터를 올리면 오른쪽에 줄임표 기호가 표시됩니다.
  3. 줄임표를 클릭하고 팝업 메뉴에서 분기 정책을 선택합니다.
  4. 리포지토리 설정의 main 탭에서 최소 검토자 수 필요 옵션을 사용하도록 설정합니다. 검토자 1명을 추가하고 요청자가 자신의 변경 내용을 승인할 수 있음(현재 수강생 본인이 랩 프로젝트의 유일한 사용자이므로) 확인란을 선택합니다.
  5. 리포지토리 설정의 기본 탭에 있는 빌드 유효성 검사 섹션에서 +(새 빌드 정책 추가)를 클릭하고 빌드 파이프라인 목록에서 eshoponweb-ci-pr을 선택한 다음 저장을 클릭합니다.

작업 3: 끌어오기 요청 작업

이 작업에서는 Azure DevOps 포털을 사용하여 끌어오기 요청을 만듭니다. 끌어오기 요청은 새 분기를 사용하여 변경 내용을 보호된 main 분기에 병합합니다.

  1. eShopOnWeb 탐색에서 리포지토리 섹션으로 이동하고 분기를 클릭합니다.
  2. main 분기를 기반으로 Feature01이라는 새 분기를 만듭니다.
  3. Feature01을 클릭하고 Feature01 분기의 일부로 /eShopOnWeb/src/Web/Program.cs 파일로 이동합니다.
  4. 오른쪽 위에서 편집 단추를 클릭합니다.
  5. 첫 번째 줄에서 다음을 변경합니다.

     // Testing my PR
    
  6. 커밋 > 커밋을 클릭합니다(기본 커밋 메시지는 그대로 둠).
  7. 끌어오기 요청을 만들도록 제안하는 메시지가 팝업 창에 표시됩니다. 이제 Feature01 분기가 main과 비교하여 변경 내용에서 앞서 있기 때문입니다. 끌어오기 요청 만들기를 클릭합니다.
  8. 새 끌어오기 요청 탭에서 기본값은 그대로 두고 만들기를 클릭합니다.
  9. 대상 main 분기에 적용된 정책에 따라, 끌어오기 요청에는 몇 가지 보류 중인 요구 사항이 표시됩니다.
    • 1명 이상의 사용자가 변경 내용을 검토하고 승인해야 합니다.
    • 빌드 유효성 검사에서 eshoponweb-ci-pr 빌드가 자동으로 트리거된 것을 볼 수 있습니다.
  10. 모든 유효성 검사가 성공하면 오른쪽 위에 있는 승인을 클릭합니다. 이제 자동 완성 설정 드롭다운에서 완료를 클릭할 수 있습니다.
  11. 끌어오기 요청 완료 탭에서 병합 완료를 클릭합니다.

연습 2: YAML을 사용하여 CI 파이프라인을 코드로 구성

이 연습에서는 YAML을 사용하여 CI 파이프라인을 코드로 구성합니다.

작업 1: CI용 YAML 빌드 정의 가져오기

이 작업에서는 연속 통합을 구현하는 데 사용할 YAML 빌드 정의를 추가합니다.

먼저 eshoponweb-ci.yml이라는 CI 파이프라인을 가져오겠습니다.

  1. Pipelines > Pipelines로 이동합니다.
  2. 새 파이프라인 단추를 클릭합니다.
  3. Azure Repos Git(YAML) 을 선택합니다.
  4. eShopOnWeb 리포지토리를 선택합니다.
  5. 기존 Azure Pipelines YAML 파일을 선택합니다.
  6. 기본 분기와 /.ado/eshoponweb-ci.yml 파일을 선택한 후 계속을 클릭합니다.

    CI 정의는 다음과 같은 작업으로 구성되어 있습니다.

    • DotNet Restore: NuGet 패키지 복원을 사용하면 소스 제어에 저장하지 않고도 프로젝트의 모든 종속성을 설치할 수 있습니다.
    • DotNet Build: 프로젝트 및 모든 해당 종속성을 빌드합니다.
    • DotNet Test: 단위 테스트를 실행하는 데 사용되는 .Net 테스트 드라이버입니다.
    • DotNet Publish: 호스팅 시스템에 배포하기 위해 애플리케이션 및 해당 종속성을 폴더에 게시합니다. 이 경우 Build.ArtifactStagingDirectory입니다.
    • Publish Artifact - Website: 이전 단계에서 만든 앱 아티팩트를 게시하고 파이프라인 아티팩트로 사용할 수 있도록 합니다.
    • Publish Artifact - Bicep: 인프라 아티팩트(Bicep 파일)를 게시하고 파이프라인 아티팩트로 사용할 수 있도록 합니다.
  7. 실행을 클릭하고 파이프라인이 성공적으로 실행될 때까지 기다립니다.

작업 2: 연속 통합 사용

기본 빌드 파이프라인 정의는 연속 통합을 사용하도록 설정하지 않습니다.

  1. 오른쪽 위에서 편집 단추를 클릭합니다.
  2. 이제 # 트리거# - 기본 줄을 다음 코드로 바꿔야 합니다.

     trigger:
       branches:
         include:
         - main
       paths:
         include:
         - src/web/*
    

    기본 분기 및 웹 애플리케이션 코드(src/웹 폴더)가 변경되면 빌드 파이프라인이 자동으로 트리거됩니다.

    분기 정책을 사용하도록 설정했기 때문에 코드를 업데이트하려면 끌어오기 요청을 전달해야 합니다.

  3. 유효성 검사 및 저장 단추를 클릭하여 파이프라인 정의의 유효성을 검사하고 저장합니다.
  4. 이 커밋의 새 분기 만들기를 선택합니다.
  5. 기본 분기 이름을 그대로 사용하고 끌어오기 요청 시작을 선택된 상태로 유지합니다.
  6. Save를 클릭합니다.
  7. 파이프라인은 프로젝트 이름을 기준으로 이름을 사용합니다. 파이프라인을 더 잘 식별하기 위해 이름을 바꿔보겠습니다. Pipelines > Pipelines로 이동하여 최근에 만든 파이프라인을 클릭합니다. 줄임표 및 이름 바꾸기/이동 옵션을 클릭합니다. 이름을 eshoponweb-ci로 설정하고 저장을 클릭합니다.
  8. 리포지토리 > 끌어오기 요청으로 이동합니다.
  9. “Azure Pipelines에 대한 eshoponweb-ci.yml 업데이트” 끌어오기 요청을 클릭합니다.
  10. 모든 유효성 검사가 성공하면 오른쪽 위에 있는 승인을 클릭합니다. 이제 완료를 클릭할 수 있습니다.
  11. 끌어오기 요청 완료 탭에서 병합 완료를 클릭합니다.

작업 3: CI 파이프라인 테스트

이 작업에서는 새 분기를 사용하여 끌어오기 요청을 만들어 변경 내용을 보호된 기본 분기에 병합하고 CI 파이프라인을 자동으로 트리거합니다.

  1. Repos 섹션으로 이동하여 분기를 클릭합니다.
  2. main 분기를 기반으로 Feature02라는 새 분기를 만듭니다.
  3. Feature02 분기를 클릭합니다.
  4. /eShopOnWeb/src/Web/Program.cs 파일로 이동하고 오른쪽 위에서 편집을 클릭합니다.
  5. 첫 번째 줄을 제거합니다.

     // Testing my PR
    
  6. 커밋 > 커밋을 클릭합니다(기본 커밋 메시지는 그대로 둠).
  7. 끌어오기 요청을 만들도록 제안하는 메시지가 팝업 창에 표시됩니다. 이제 Feature02 분기가 main과 비교하여 변경 내용에서 앞서 있기 때문입니다.
  8. 끌어오기 요청 만들기를 클릭합니다.
  9. 새 끌어오기 요청 탭에서 기본값은 그대로 두고 만들기를 클릭합니다.
  10. 대상 main 분기에 적용된 정책에 따라, 끌어오기 요청에는 몇 가지 보류 중인 요구 사항이 표시됩니다.
  11. 모든 유효성 검사가 성공하면 오른쪽 위에 있는 승인을 클릭합니다. 이제 자동 완성 설정 드롭다운에서 완료를 클릭할 수 있습니다.
  12. 끌어오기 요청 완료 탭에서 병합 완료를 클릭합니다.
  13. Pipelines > Pipelines로 돌아가면 코드가 병합된 후 eshoponweb-ci 빌드가 자동으로 트리거된 것을 확인할 수 있습니다.
  14. eshoponweb-ci 빌드를 클릭한 다음 마지막 실행을 선택합니다.
  15. 성공적으로 실행된 후 관련 항목 > 게시됨을 클릭하여 게시된 아티팩트를 검사합니다.
    • Bicep: 인프라 아티팩트입니다.
    • 웹 사이트: 앱 아티팩트입니다.

검토

이 랩에서는 빌드 정의를 사용하여 끌어오기 요청 유효성 검사를 사용하도록 설정하고 AZURE DevOps에서 YAML을 사용하여 CI 파이프라인을 코드로 구성했습니다.