연습 - 워크플로에 미리 보기 작업 추가
Azure 환경이 어떻게 변경되는지 확인할 수 있도록 워크플로에 작업을 추가하려고 합니다.
이 과정에서 다음 작업을 수행합니다.
- 새 미리 보기 작업을 추가하도록 워크플로 정의 YAML 파일을 업데이트합니다.
- GitHub 리포지토리에 환경을 추가합니다.
- 검토가 필요하도록 환경을 구성합니다.
- 배포 작업에 환경을 사용하도록 워크플로 YAML 파일을 업데이트합니다.
- what-if 결과를 보고 워크플로 실행을 승인합니다.
미리 보기 작업을 추가하도록 워크플로 정의 업데이트
여기서는 what-if 작업을 실행하는 새 작업을 워크플로에 추가합니다.
Visual Studio Code에서 .github/workflows 폴더의 workflow.yml 파일을 엽니다.
유효성 검사 및 배포 작업 사이에 미리 보기 작업에 대한 다음 정의를 추가합니다.
preview: runs-on: ubuntu-latest needs: [lint, validate] steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 name: Run what-if with: failOnStdErr: false resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: deploy/main.bicep parameters: > environmentType=${{ env.ENVIRONMENT_TYPE }} additionalArguments: --what-if
미리 보기 작업은 린팅 및 유효성 검사 작업을 성공적으로 완료했는지에 따라 달라집니다.
배포 작업을 미리 보기 작업에 종속되도록 업데이트합니다.
deploy: runs-on: ubuntu-latest needs: preview steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 name: Deploy website with: failOnStdErr: false deploymentName: ${{ github.run_number }} resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: ./deploy/main.bicep parameters: environmentType=${{ env.ENVIRONMENT_TYPE }}
파일의 변경 내용을 저장합니다.
환경 추가
브라우저에서 설정>환경으로 이동합니다.
새 환경을 선택합니다.
환경 이름으로 Website를 입력합니다.
환경 구성을 선택합니다.
이 모듈의 설정 단계에서는 환경에 배포할 때 사용할 워크플로에 대한 페더레이션 자격 증명을 이미 만들었습니다.
환경에 필수 검토자 보호 규칙 추가
필수 검토자 확인란을 선택합니다.
검토자 목록에 고유한 GitHub 사용자 이름을 추가합니다.
보호 규칙 저장을 선택합니다.
환경을 선택하여 구성을 종료합니다.
환경 및 검토자가 필요하도록 워크플로 정의 업데이트
여기서는 이전에 만든 Website 환경에 대해 실행되도록 배포 작업을 구성합니다.
Visual Studio Code에서 ‘workflow.yml’ 파일을 엽니다.
배포 작업에
environment
매개 변수를 추가합니다. 앞서 환경의 이름과 일치하도록 값을Website
로 설정합니다.deploy: runs-on: ubuntu-latest environment: Website needs: preview steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 name: Deploy website with: failOnStdErr: false deploymentName: ${{ github.run_number }} resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: ./deploy/main.bicep parameters: environmentType=${{ env.ENVIRONMENT_TYPE }}
파일을 저장합니다.
워크플로 정의 확인 및 커밋
‘workflow.yml’ 파일이 다음 코드와 같이 표시되는지 확인합니다.
name: deploy-toy-website-test concurrency: toy-company on: push: branches: - main permissions: id-token: write contents: read env: AZURE_RESOURCEGROUP_NAME: ToyWebsiteTest ENVIRONMENT_TYPE: Test jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Run Bicep linter run: az bicep build --file deploy/main.bicep validate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 name: Run preflight validation with: deploymentName: ${{ github.run_number }} resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: ./deploy/main.bicep parameters: environmentType=${{ env.ENVIRONMENT_TYPE }} deploymentMode: Validate preview: runs-on: ubuntu-latest needs: [lint, validate] steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 name: Run what-if with: failOnStdErr: false resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: deploy/main.bicep parameters: > environmentType=${{ env.ENVIRONMENT_TYPE }} additionalArguments: --what-if deploy: runs-on: ubuntu-latest environment: Website needs: preview steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 name: Deploy website with: failOnStdErr: false deploymentName: ${{ github.run_number }} resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: ./deploy/main.bicep parameters: environmentType=${{ env.ENVIRONMENT_TYPE }}
파일이 달라 보이면 다음 예제와 일치하도록 업데이트한 후 저장합니다.
Visual Studio Code 터미널에서 다음 명령을 실행하여 변경 내용을 커밋하고 Git 리포지토리에 푸시합니다.
git add . git commit -m "Add preview job" git push
워크플로를 실행하고 what-if 출력 검토
브라우저에서 워크플로 실행으로 이동합니다.
가장 최근에 실행한 워크플로를 선택합니다.
워크플로가 린팅, 유효성 검사 및 미리 보기 작업을 완료할 때까지 기다립니다. GitHub는 자동으로 페이지를 최신 상태로 업데이트하지만 가끔 페이지를 새로 고치는 것이 좋습니다.
워크플로에서 검토를 요청하는 메시지를 표시합니다. GitHub 계정을 설정한 방법에 따라 워크플로를 검토하라는 요청 메일 또는 웹 알림을 받게 됩니다.
워크플로를 계속하도록 승인하기 전에, what-if 결과를 검토하여 예상과 일치하는지 확인합니다.
미리 보기 작업을 선택합니다.
가상 실행 단계를 선택하여 가상 명령이 보고하는 변경 내용을 검사합니다.
워크플로 로그는 다음 코드와 비슷한 what-if 결과를 제공합니다.
Resource and property changes are indicated with these symbols: - Delete + Create ~ Modify = Nochange * Ignore The deployment will update the following scope: Scope: /subscriptions/***/resourceGroups/ToyWebsiteTest ~ Microsoft.OperationalInsights/workspaces/workspace-abcdefghijklm [2022-10-01] - properties.retentionInDays: 30 - properties.sku: name: "pergb2018" - properties.workspaceCapping: dailyQuotaGb: -1.0 ~ Microsoft.Web/sites/toy-website-abcdefghijklm [2022-03-01] + properties.siteConfig.localMySqlEnabled: false + properties.siteConfig.netFrameworkVersion: "v4.6" = Microsoft.Insights/components/toywebsite [2020-02-02] = Microsoft.Storage/storageAccounts/mystorageabcdefghijklm [2022-09-01] = Microsoft.Web/serverfarms/toy-website [2022-03-01] * microsoft.alertsmanagement/smartDetectorAlertRules/Failure Anomalies - toywebsite Resource changes: 2 to modify, 3 no change, 1 to ignore.
가상 작업에서 로그 분석 작업 영역 및 웹 사이트 리소스에 대한 변경을 감지했습니다. 그러나 감지된 변경 내용은 노이즈입니다. 노이즈는 리소스를 실제로 변경하지 않습니다. Azure 팀에서 노이즈를 줄이기 위해 노력하고 있습니다. 당분간은 감지된 변경을 무시해도 됩니다.
리소스 종류
microsoft.alertsmanagement/smartDetectorAlertRules/Failure Anomalies - toywebsite
에 대한 가상 출력에 항목이 표시될 수도 있습니다. 이 리소스는 Application Insights에서 자동으로 생성하는 리소스입니다. 가상 명령은 리소스에 대한 변경 내용이 없는 것을 확인합니다.
워크플로 실행 승인
요약을 선택하여 워크플로 실행에 대한 개요로 돌아갑니다.
검토 패널에서 배포 검토 단추를 선택합니다.
보류 중인 배포 검토 팝업에서 Website 환경을 선택합니다. 의견 남기기 상자에 Reviewed what-if results를 입력합니다.
승인 및 배포를 선택합니다.
성공한 배포 관찰
워크플로 실행을 승인한 후에는 배포 작업의 실행이 시작되는 것을 확인할 수 있습니다.
작업이 완료될 때까지 기다립니다.
워크플로 실행이 성공적으로 완료됩니다.