演習 - プレビュー ジョブをワークフローに追加する
ワークフローにさらなるジョブを追加して、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 }}
ファイルに加えた変更を保存します。
環境を追加する
ブラウザーで、[設定]>[環境] と移動します。
[New environment] (新しい環境) を選択します。
環境名として Web サイトと入力します。
[環境の構成] を選択します。
このモジュールのセットアップ手順では、ワークフローを環境にデプロイするときに使用するフェデレーション資格情報を既に作成しました。
必要なレビュー担当者保護ルールを環境に追加する
[必要なレビュー担当者] ボックスを選択します。
独自の GitHub ユーザー名をレビュー担当者リストに追加します。
[保護ルールの保存 (Save protection rules)] を選択します。
[環境] を選択し、構成を終了します。
環境とレビュー担当者を必要とするようにワークフロー定義を更新する
ここでは、既に作成した Web サイト環境に対して実行するようにデプロイ ジョブを構成します。
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 }}
ファイルを保存します。
ワークフロー定義を検証してコミットする
deploy.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 アカウントの設定方法に応じて、ワークフロー確認の要求を含む電子メールか Web 通知が届きます。
後続のワークフローを承認する前に、what-if の結果を確認し、期待通りであることを確かめます。
[プレビュー] ジョブを選択します。
[Run what-if](what-if の実行) ステップを選択し、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.
What-If 操作によって、Log Analytics ワークスペースと Web サイト リソースの変更が検出されました。 ただし、検出された変更はノイズです。 リソースに対する実際の変更を表すものではありません。 時間の経過と共に、Azure チームによってノイズは軽減されます。 さしあたり、検出された変更は無視できます。
また、what-if 出力に
microsoft.alertsmanagement/smartDetectorAlertRules/Failure Anomalies - toywebsite
というリソースの種類の項目が表示される場合があります。 これは、Application Insights によって自動的に作成されるリソースです。 リソースに変更が加えられないことが what-if コマンドで検出されます。
ワークフロー実行を承認する
[概要] を選択して、ワークフロー実行の概要に戻ります。
レビュー パネルにある [デプロイのレビュー] ボタンを選択します。
[保留中のデプロイのレビュー (Review pending deployments)] ポップアップで、Web サイト環境を選択します。 [コメントを残す] ボックスに、レビュー済みの what-if 結果と入力します。
[承認してデプロイ (Approve and deploy)] を選択します。
デプロイが成功したことを確認する
ワークフローの実行を承認した後、デプロイ ジョブの実行が開始されることに注目してください。
ジョブが完了するまでお待ちください。
ワークフロー実行が正常に終了することに注目してください。