演習 - ワークフローのトリガーを更新する
あなたは、会社の Web サイトの App Service Always On 機能を有効にして、Web サイト アプリが常に実行されるようにすることを同僚に求められています。
この演習では、 メイン ブランチでファイルが変更されるたびに自動的に実行されるように、作成したワークフローを更新します。 更新されたワークフローを使用して、要求された構成変更を Web サイトにデプロイします。
このプロセスでは、次のことを行います。
- ワークフローを更新して、メイン ブランチの配置フォルダーでファイルが変更されるたびに自動的にトリガーされるようにします。
- Bicep ファイルに変更を加えます。
- ワークフローが自動的に実行されることを確認します。
ブランチベースになるようにトリガーを更新する
Visual Studio Code で 、.github/workflows/workflow.yml ファイルを開きます。
ファイルの先頭で、行の後に次のコード
name: deploy-toy-website
追加して、複数の同時ワークフローが実行されないようにします。name: deploy-toy-website concurrency: toy-company
手動トリガー (現在
on: [workflow_dispatch]
を読み取る行) を削除します。concurrency:
とpermissions:
の間に、次のトリガー定義を追加します。concurrency: toy-company on: push: branches: - main paths: - 'deploy/**' permissions:
ファイルに加えた変更を保存します。
変更をコミットしますが、まだプッシュしないでください。 変更はもう少し後でプッシュします。
git add . git commit -m 'Add branch trigger'
Bicep ファイルを更新する
Visual Studio Code で main.bicep ファイルを開きます。
appServiceApp
リソース定義のsiteConfig
プロパティに、alwaysOn
という値でtrue
プロパティを追加します。resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName ___location: ___location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { alwaysOn: true appSettings: [ { name: 'ToyManualsStorageAccountConnectionString' value: toyManualsStorageAccountConnectionString } ] } }
ファイルに加えた変更を保存します。
Visual Studio Code ターミナルで、次のコードを実行して変更をコミットし、両方のコミットをプッシュします。
git add . git commit -m 'Configure app Always On setting' git push
ワークフローが失敗したかどうかを確認する
ブラウザーで、GitHub の [アクション] メニューを選択し、ワークフローを選択します。
最新のワークフロー実行を選択して、ワークフローが自動的に実行されたことを確認します。 プッシュ トリガーによって監視されているブランチに変更をプッシュしたため、ワークフローが実行されました。 ワークフローがまだ実行されている場合は、少し待ってからページを更新します。
ワークフローには、失敗したデプロイが表示されます。
失敗を診断するには、 デプロイ ジョブを選択し、失敗した arm-deploy タスクを選択します。
次のテキストが含まれていることに注意してください。
There was a conflict. AlwaysOn cannot be set for this site as the plan does not allow it. For more information on pricing and features, please see: https://aka.ms/appservicepricingdetails
このエラー メッセージは、App Service アプリが、Always On 機能がサポートされていない F1 Free レベルを使用してデプロイされたため、デプロイが失敗したことを示しています。
重要
この例では、使用するすべてのパラメーター値を含めて、Bicep ファイルをテストすることの重要性が示されています。 微妙なエラーは、リソース構成やその他のコードに追加されやすいものです。 ワークフローがコードをデプロイして失敗するまで、問題を検出できない場合があります。 今後のモジュールでは、Bicep コードの検証とテストに使用できるいくつかの戦略について学習します。
Bicep ファイルを修正し、ワークフローが再度トリガーされたことを確認する
あなたは、失敗したデプロイについて同僚に話します。 Always On 設定は運用環境にのみ適用する必要があるという判断で一致しました。 そこで、使用する新しい規則を適用して、デプロイの失敗の原因となった問題を修正することにしました。
Visual Studio Code で、環境の種類ごとに新しいプロパティを
environmentConfigurationMap
変数に追加します。var environmentConfigurationMap = { nonprod: { appServiceApp: { alwaysOn: false } appServicePlan: { sku: { name: 'F1' capacity: 1 } } toyManualsStorageAccount: { sku: { name: 'Standard_LRS' } } } prod: { appServiceApp: { alwaysOn: true } appServicePlan: { sku: { name: 'S1' capacity: 2 } } toyManualsStorageAccount: { sku: { name: 'Standard_ZRS' } } } }
アプリケーションの
alwaysOn
設定を変更して、環境の種類に適した構成マップ値を使用するようにします。resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = { name: appServiceAppName ___location: ___location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { alwaysOn: environmentConfigurationMap[environmentType].appServiceApp.alwaysOn appSettings: [ { name: 'ToyManualsStorageAccountConnectionString' value: toyManualsStorageAccountConnectionString } ] } } }
ファイルに加えた変更を保存します。
Visual Studio Code ターミナルで、変更をコミットし、プッシュします。
git add . git commit -m 'Enable App Service Always On for production environments only' git push
ワークフローが成功したことを確認する
GitHub で、 ワークフロー の一覧に戻ります。 ワークフローを選択します。
最新の実行を選択します。 ワークフローがまだ実行されている場合は、少し待ってからページを更新します。
ワークフロー実行が表示されます。
ワークフローには、デプロイが成功したことが表示されます。 有効な Bicep ファイルを使用したため、今回は成功しました。
リソースのクリーンアップ
これで演習が完了したので、課金されないようにリソースを削除しましょう。
Visual Studio Code ターミナルで、次のコマンドを実行します。
az group delete --resource-group ToyWebsite --yes --no-wait
バックグラウンドでリソース グループが削除されます。
Remove-AzResourceGroup -Name ToyWebsite -Force