Azure Pipelines과의 연속 통합 지원
랩 요구 사항
-
이 랩은 Microsoft Edge 또는 Azure DevOps 지원 브라우저가 필요합니다.
-
Azure DevOps 조직 설정: 이 랩에 사용할 수 있는 Azure DevOps 조직이 아직 없으면 조직 또는 프로젝트 컬렉션 만들기에서 제공되는 지침에 따라 조직을 만듭니다.
랩 개요
이 랩에서는 YAML을 사용하여 Azure DevOps에서 빌드 파이프라인을 정의하는 방법을 알아봅니다. 파이프라인은 다음 두 가지 시나리오에서 사용됩니다.
- 끌어오기 요청 유효성 검사 프로세스의 일부입니다.
- 연속 통합 구현의 일부입니다.
목표
이 랩을 완료하면 다음 작업을 수행할 수 있습니다.
- 끌어오기 요청의 일부로 빌드 유효성 검사를 포함합니다.
- YAML을 사용하여 CI 파이프라인을 코드로 구성합니다.
예상 소요 시간: 30분
지침
연습 0: (완료된 경우 건너뛰기)랩 필수 구성 요소 구성
이 연습에서는 랩의 필수 구성 요소를 설정합니다. 구체적으로는 eShopOnWeb을 기반으로 하여 새 Azure DevOps 프로젝트와 리포지토리를 설정합니다.
작업 1: (완료된 경우 건너뛰기) 팀 프로젝트 만들기 및 구성
이 작업에서는 여러 랩에서 사용할 eShopOnWeb Azure DevOps 프로젝트를 만듭니다.
- 랩 컴퓨터의 브라우저 창에서 Azure DevOps 조직을 엽니다. 새 프로젝트를 클릭합니다. 프로젝트 이름을 eShopOnWeb으로 설정하고 다른 필드는 기본값으로 유지합니다. 만들기를 클릭합니다.
작업 2: (완료된 경우 건너뛰기) eShopOnWeb Git 리포지토리 가져오기
이 작업에서는 여러 랩에서 사용할 eShopOnWeb Git 리포지토리를 가져옵니다.
-
랩 컴퓨터의 브라우저 창에서 Azure DevOps 조직 및 이전에 만든 eShopOnWeb 프로젝트를 엽니다. Repos > 파일, 리포지토리 가져오기를 클릭합니다. 가져오기를 선택합니다. Git 리포지토리 가져오기 창에서 다음 URL https://github.com/MicrosoftLearning/eShopOnWeb.git을 붙여넣고 가져오기를 클릭합니다.
-
리포지토리는 다음과 같은 방식으로 구성됩니다.
- .ado 폴더에는 Azure DevOps YAML 파이프라인이 포함되어 있습니다.
- .devcontainer 폴더 컨테이너 설정을 통해 컨테이너를 사용하여 개발합니다(VS Code 또는 GitHub Codespaces에서 로컬로).
- infra 폴더에는 일부 랩 시나리오에서 사용되는 코드 템플릿으로 Bicep & ARM 인프라가 포함되어 있습니다.
- .github 폴더에는 YAML GitHub 워크플로 정의가 포함되어 있습니다.
- src 폴더에는 랩 시나리오에서 사용되는 .NET 웹 사이트가 포함되어 있습니다.
작업 3: (완료된 경우 건너뛰기) 기본(main) 분기를 기본 분기로 설정
- Repos > Branches로 이동합니다.
- 기본 분기를 마우스로 가리킨 다음 열 오른쪽에 있는 줄임표를 클릭합니다.
- 기본 분기로 설정을 클릭합니다.
연습 1: 끌어오기 요청의 일부로 빌드 유효성 검사 포함
이 연습에서는 끌어오기 요청의 유효성을 검사하는 빌드 유효성 검사를 포함합니다.
작업 1: YAML 빌드 정의 가져오기
이 작업에서는 끌어오기 요청의 유효성을 검사하기 위해 분기 정책으로 사용할 YAML 빌드 정의를 가져옵니다.
먼저 eshoponweb-ci-pr.yml이라는 빌드 파이프라인을 가져오겠습니다.
- Pipelines > Pipelines로 이동합니다.
- 파이프라인 만들기 또는 새 파이프라인 만들기 단추를 클릭합니다.
- Azure Repos Git(YAML) 을 선택합니다.
- eShopOnWeb 리포지토리를 선택합니다.
- 기존 Azure Pipelines YAML 파일을 선택합니다.
-
기본 분기와 /.ado/eshoponweb-ci-pr.yml 파일을 선택한 다음 계속을 클릭합니다.
빌드 정의는 다음과 같은 작업으로 구성되어 있습니다.
- DotNet Restore: NuGet 패키지 복원을 사용하면 소스 제어에 저장하지 않고도 프로젝트의 모든 종속성을 설치할 수 있습니다.
- DotNet Build: 프로젝트 및 모든 해당 종속성을 빌드합니다.
- DotNet Test: 단위 테스트를 실행하는 데 사용되는 .Net 테스트 드라이버입니다.
- DotNet Publish: 호스팅 시스템에 배포하기 위해 애플리케이션 및 해당 종속성을 폴더에 게시합니다. 이 경우 Build.ArtifactStagingDirectory입니다.
- 저장 단추를 클릭하여 파이프라인 정의를 저장합니다.
- 파이프라인은 프로젝트 이름을 기준으로 이름을 사용합니다. 파이프라인을 더 잘 식별하기 위해 이름을 바꿔보겠습니다. Pipelines > Pipelines로 이동하여 최근에 만든 파이프라인을 클릭합니다. 줄임표 및 이름 바꾸기/이동 옵션을 클릭합니다. 이름을 eshoponweb-ci-pr로 설정하고 저장을 클릭합니다.
작업 2: 분기 정책
이 작업에서는 기본 분기에 정책을 추가하며, 정의된 정책을 준수하는 끌어오기 요청을 사용하는 변경 내용만 허용합니다. 분기의 변경 내용을 병합하기 전에 해당 변경 내용을 검토하려 합니다.
- Repos > 분기 섹션으로 이동합니다.
- 분기 창의 내 항목 탭에서 main 분기 항목 위에 마우스 포인터를 올리면 오른쪽에 줄임표 기호가 표시됩니다.
- 줄임표를 클릭하고 팝업 메뉴에서 분기 정책을 선택합니다.
- 리포지토리 설정의 main 탭에서 최소 검토자 수 필요 옵션을 사용하도록 설정합니다. 검토자 1명을 추가하고 요청자가 자신의 변경 내용을 승인할 수 있음(현재 수강생 본인이 랩 프로젝트의 유일한 사용자이므로) 확인란을 선택합니다.
- 리포지토리 설정의 기본 탭에 있는 빌드 유효성 검사 섹션에서 +(새 빌드 정책 추가)를 클릭하고 빌드 파이프라인 목록에서 eshoponweb-ci-pr을 선택한 다음 저장을 클릭합니다.
작업 3: 끌어오기 요청 작업
이 작업에서는 Azure DevOps 포털을 사용하여 끌어오기 요청을 만듭니다. 끌어오기 요청은 새 분기를 사용하여 변경 내용을 보호된 main 분기에 병합합니다.
- eShopOnWeb 탐색에서 리포지토리 섹션으로 이동하고 분기를 클릭합니다.
- main 분기를 기반으로 Feature01이라는 새 분기를 만듭니다.
- Feature01을 클릭하고 Feature01 분기의 일부로 /eShopOnWeb/src/Web/Program.cs 파일로 이동합니다.
- 오른쪽 위에서 편집 단추를 클릭합니다.
-
첫 번째 줄에서 다음을 변경합니다.
// Testing my PR
- 커밋 > 커밋을 클릭합니다(기본 커밋 메시지는 그대로 둠).
- 끌어오기 요청을 만들도록 제안하는 메시지가 팝업 창에 표시됩니다. 이제 Feature01 분기가 main과 비교하여 변경 내용에서 앞서 있기 때문입니다. 끌어오기 요청 만들기를 클릭합니다.
- 새 끌어오기 요청 탭에서 기본값은 그대로 두고 만들기를 클릭합니다.
- 대상 main 분기에 적용된 정책에 따라, 끌어오기 요청에는 몇 가지 보류 중인 요구 사항이 표시됩니다.
- 1명 이상의 사용자가 변경 내용을 검토하고 승인해야 합니다.
- 빌드 유효성 검사에서 eshoponweb-ci-pr 빌드가 자동으로 트리거된 것을 볼 수 있습니다.
- 모든 유효성 검사가 성공하면 오른쪽 위에 있는 승인을 클릭합니다. 이제 자동 완성 설정 드롭다운에서 완료를 클릭할 수 있습니다.
- 끌어오기 요청 완료 탭에서 병합 완료를 클릭합니다.
연습 2: YAML을 사용하여 CI 파이프라인을 코드로 구성
이 연습에서는 YAML을 사용하여 CI 파이프라인을 코드로 구성합니다.
작업 1: CI용 YAML 빌드 정의 가져오기
이 작업에서는 연속 통합을 구현하는 데 사용할 YAML 빌드 정의를 추가합니다.
먼저 eshoponweb-ci.yml이라는 CI 파이프라인을 가져오겠습니다.
- Pipelines > Pipelines로 이동합니다.
- 새 파이프라인 단추를 클릭합니다.
- Azure Repos Git(YAML) 을 선택합니다.
- eShopOnWeb 리포지토리를 선택합니다.
- 기존 Azure Pipelines YAML 파일을 선택합니다.
-
기본 분기와 /.ado/eshoponweb-ci.yml 파일을 선택한 후 계속을 클릭합니다.
CI 정의는 다음과 같은 작업으로 구성되어 있습니다.
- DotNet Restore: NuGet 패키지 복원을 사용하면 소스 제어에 저장하지 않고도 프로젝트의 모든 종속성을 설치할 수 있습니다.
- DotNet Build: 프로젝트 및 모든 해당 종속성을 빌드합니다.
- DotNet Test: 단위 테스트를 실행하는 데 사용되는 .Net 테스트 드라이버입니다.
- DotNet Publish: 호스팅 시스템에 배포하기 위해 애플리케이션 및 해당 종속성을 폴더에 게시합니다. 이 경우 Build.ArtifactStagingDirectory입니다.
- Publish Artifact - Website: 이전 단계에서 만든 앱 아티팩트를 게시하고 파이프라인 아티팩트로 사용할 수 있도록 합니다.
- Publish Artifact - Bicep: 인프라 아티팩트(Bicep 파일)를 게시하고 파이프라인 아티팩트로 사용할 수 있도록 합니다.
- 실행을 클릭하고 파이프라인이 성공적으로 실행될 때까지 기다립니다.
작업 2: 연속 통합 사용
기본 빌드 파이프라인 정의는 연속 통합을 사용하도록 설정하지 않습니다.
- 오른쪽 위에서 편집 단추를 클릭합니다.
-
이제 # 트리거 및 # - 기본 줄을 다음 코드로 바꿔야 합니다.
trigger: branches: include: - main paths: include: - src/web/*
기본 분기 및 웹 애플리케이션 코드(src/웹 폴더)가 변경되면 빌드 파이프라인이 자동으로 트리거됩니다.
분기 정책을 사용하도록 설정했기 때문에 코드를 업데이트하려면 끌어오기 요청을 전달해야 합니다.
- 유효성 검사 및 저장 단추를 클릭하여 파이프라인 정의의 유효성을 검사하고 저장합니다.
- 이 커밋의 새 분기 만들기를 선택합니다.
- 기본 분기 이름을 그대로 사용하고 끌어오기 요청 시작을 선택된 상태로 유지합니다.
- Save를 클릭합니다.
- 파이프라인은 프로젝트 이름을 기준으로 이름을 사용합니다. 파이프라인을 더 잘 식별하기 위해 이름을 바꿔보겠습니다. Pipelines > Pipelines로 이동하여 최근에 만든 파이프라인을 클릭합니다. 줄임표 및 이름 바꾸기/이동 옵션을 클릭합니다. 이름을 eshoponweb-ci로 설정하고 저장을 클릭합니다.
- 리포지토리 > 끌어오기 요청으로 이동합니다.
- “Azure Pipelines에 대한 eshoponweb-ci.yml 업데이트” 끌어오기 요청을 클릭합니다.
- 모든 유효성 검사가 성공하면 오른쪽 위에 있는 승인을 클릭합니다. 이제 완료를 클릭할 수 있습니다.
- 끌어오기 요청 완료 탭에서 병합 완료를 클릭합니다.
작업 3: CI 파이프라인 테스트
이 작업에서는 새 분기를 사용하여 끌어오기 요청을 만들어 변경 내용을 보호된 기본 분기에 병합하고 CI 파이프라인을 자동으로 트리거합니다.
- Repos 섹션으로 이동하여 분기를 클릭합니다.
- main 분기를 기반으로 Feature02라는 새 분기를 만듭니다.
- 새 Feature02 분기를 클릭합니다.
- /eShopOnWeb/src/Web/Program.cs 파일로 이동하고 오른쪽 위에서 편집을 클릭합니다.
-
첫 번째 줄을 제거합니다.
// Testing my PR
- 커밋 > 커밋을 클릭합니다(기본 커밋 메시지는 그대로 둠).
- 끌어오기 요청을 만들도록 제안하는 메시지가 팝업 창에 표시됩니다. 이제 Feature02 분기가 main과 비교하여 변경 내용에서 앞서 있기 때문입니다.
- 끌어오기 요청 만들기를 클릭합니다.
- 새 끌어오기 요청 탭에서 기본값은 그대로 두고 만들기를 클릭합니다.
- 대상 main 분기에 적용된 정책에 따라, 끌어오기 요청에는 몇 가지 보류 중인 요구 사항이 표시됩니다.
- 모든 유효성 검사가 성공하면 오른쪽 위에 있는 승인을 클릭합니다. 이제 자동 완성 설정 드롭다운에서 완료를 클릭할 수 있습니다.
- 끌어오기 요청 완료 탭에서 병합 완료를 클릭합니다.
- Pipelines > Pipelines로 돌아가면 코드가 병합된 후 eshoponweb-ci 빌드가 자동으로 트리거된 것을 확인할 수 있습니다.
- eshoponweb-ci 빌드를 클릭한 다음 마지막 실행을 선택합니다.
- 성공적으로 실행된 후 관련 항목 > 게시됨을 클릭하여 게시된 아티팩트를 검사합니다.
- Bicep: 인프라 아티팩트입니다.
- 웹 사이트: 앱 아티팩트입니다.
검토
이 랩에서는 빌드 정의를 사용하여 끌어오기 요청 유효성 검사를 사용하도록 설정하고 AZURE DevOps에서 YAML을 사용하여 CI 파이프라인을 코드로 구성했습니다.