연습 - 컨테이너 이미지를 빌드하는 GitHub 작업 만들기
이 단원에서는 다음 작업을 완료합니다.
- 빌드 파이프라인을 구현하는 GitHub 작업을 만듭니다.
- 쿠폰 서비스 코드를 수정하여 빌드 워크플로를 트리거합니다.
- 빌드 워크플로의 진행률을 실시간으로 모니터링합니다.
빌드 작업 만들기
이 절차의 YAML 코드는 다음과 같은 GitHub 작업을 정의합니다.
- 쿠폰 서비스의 소스 코드 또는 단위 테스트에
main
브랜치로 커밋이 푸시될 때 트리거됩니다. - 단계별 환경 변수를 정의합니다.
- 동일한 워크플로 실행기
Build and push image to ACR
에서 실행되는 작업 또는 단계 집합이 있습니다.
중요합니다
트리거 조건 및 GitHub Actions 또는 워크플로의 다른 아티팩트는 앱 및 환경에 따라 달라집니다. 쉽게 이해할 수 있게 이 예제에서는 세부 정보를 간단하게 유지합니다. 모든 마이크로 서비스가 단일 리포지토리 아래에 유지되므로 빌드 및 배포 워크플로는 모두 제품 서비스 변경으로 범위가 지정됩니다. 실제 프로덕션 시나리오에서는 각 마이크로 서비스가 별도의 리포지토리에 유지됩니다.
다음 단계를 완료하여 GitHub Actions 빌드 작업을 만듭니다.
GitHub에서 포크된 리포지토리로 이동하여 탭을 Actions 선택합니다.
Get started with GitHub Actions 페이지에서 set up a workflow yourself 링크를 선택합니다.
다음 페이지에서 다음 YAML 코드를 편집기에 붙여넣습니다.
name: Build and deploy an app to AKS on: push: branches: ["main"] workflow_dispatch: env: # Local environment variables used later in the workflow AZURE_CONTAINER_REGISTRY: 'name of your Azure Container Registry' CONTAINER_NAME: 'productservice' RESOURCE_GROUP: 'rg-eshop' CLUSTER_NAME: 'aks-eshop' DEPLOYMENT_MANIFEST_PATH: './product.yml' DOCKER_PATH: './DockerfileProducts.acr' jobs: buildImage: permissions: contents: read id-token: write runs-on: ubuntu-latest steps: # Checks out the repository this file is in - uses: actions/checkout@v3 # Logs in with your Azure credentials stored in GitHub secrets - name: Azure login uses: azure/login@v1.4.6 with: creds: '${{ secrets.AZURE_CREDENTIALS }}' # Builds and pushes an image up to your Azure Container Registry - name: Build and push image to ACR run: | az acr build --file ${{ env.DOCKER_PATH }} --image ${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.CONTAINER_NAME }}:${{ github.sha }} --registry ${{ env.AZURE_CONTAINER_REGISTRY }} -g ${{ env.RESOURCE_GROUP }} .
Azure Container Registry의 이름을 이전 단원에서 만든 ACR 이름으로 바꿉다. 예를 들어 acseshop186748394입니다.
기본 워크플로 main.yml 파일 이름을 azure-kubernetes-service.yml로 바꾼 다음, Commit changes을 선택하세요.
화면에서 Commit changes을 선택한 다음 Commit directly to the main branch을 선택하고 Commit changes을 선택합니다.
CI/CD 파이프라인에 대한 빌드 워크플로 만들기를 완료했습니다.
터미널에서 이 명령을 실행하여 ACR에 저장된 제품 서비스의 현재 버전을 확인합니다.
az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
AZURE_CONTAINER_REGISTRY ACR의 이름으로 대체하면 다음과 유사한 출력이 표시됩니다.
Result ---------------------------------------- v1
빌드 시작
빌드 워크플로는 워크플로 파일을 커밋하는 즉시 자동으로 트리거됩니다. 빌드를 수동으로 트리거할 수도 있습니다.
- 리포지토리에서 탭을 Actions 선택합니다.
- 왼쪽에서 All workflows 아래의 Build and deploy an app to AKS 워크플로를 선택한 다음 Run workflow을 선택합니다.
빌드 모니터링
빌드의 실시간 진행률을 보려면 다음을 수행합니다.
리포지토리에서 탭을 Actions 선택합니다.
워크플로에 대해 나열된 Build and deploy an app to AKS 가장 최근 워크플로 실행을 선택합니다. 실행의 이름은 이전 단계에서 사용한 커밋 메시지입니다.
buildImage 작업을 선택합니다.
몇 분 정도 기다리면 작업의 단계가 성공적으로 완료됩니다.
터미널에서 이 명령을 다시 실행하여 ACR에 저장된 제품 서비스의 버전을 확인합니다.
az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
GitHub 워크플로에서 새 이미지 버전이 ACR에 추가되었음을 보여 주는 다음과 유사한 출력이 표시됩니다.
Result ---------------------------------------- 8c75edb7a349ec570bd4eac397015bc3c547186e v1