演習 - テンプレート スペックを発行する
あなたのチームは、会社の新しいガバナンス モデルに準拠したセキュリティ強化された Bicep ファイルをいくつか作成しました。 強化された Bicep ファイルの 1 つでは、Linux ベースの Azure App Service アプリがデプロイされます。 この演習では、デプロイ ワークフローを使用して、Bicep ファイルをテンプレート スペックとして発行します。
このプロセスでは、次のことを行います。
- ワークフローに lint ジョブを追加します。
- テンプレート スペックを発行するワークフロー ジョブを追加します。
- ワークフローを手動で実行し、正常に完了することを確認します。
- 発行されたテンプレート スペックを Azure で確認します。
ワークフローにリント ジョブを追加する
リポジトリには、出発点として使用できるワークフローのドラフトが含まれています。
Visual Studio Code で、リポジトリのルートにある .github/workflows フォルダーを展開します。
template-spec-linux-app-service.yml ファイルを開きます。
ワークフロー定義には、2 つのトリガーが含まれています。 この演習では、テンプレート スペックの Bicep ファイルを変更しないため、
push
トリガーが起動することはありません。 ワークフローを試すには、workflow_dispatch
トリガーを使用して手動で呼び出します。ファイルの下部の
# To be added
というコメントが表示されている場所に、次の lint ジョブ定義を追加します。jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Run Bicep linter run: az bicep build --file ${{ env.TEMPLATE_SPEC_FILE_PATH }}
リポジトリには、警告ではなくエラーを生成するようにリンターを構成する bicepconfig.json ファイルが含まれています。 lint ジョブ中にエラーが発生すると、ワークフローが失敗します。
ヒント
YAML ファイルは、インデントによって区別されます。 このコードを入力する場合でも貼り付ける場合でも、インデントが正しいことを確認してください。 この演習の後半では、ファイルが一致することを確認できるように、完全な YAML ワークフロー定義を示します。
ワークフローに発行ジョブを追加する
これで、テンプレート スペックを Azure に発行する 2 番目のジョブを追加できます。
template-spec-linux-app-service.yml ファイルの末尾に次のコードを追加します。
publish: runs-on: ubuntu-latest needs: [ lint ] 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/cli@v1 name: Publish template spec with: inlineScript: | az ts create \ --resource-group ${{ env.AZURE_RESOURCEGROUP_NAME }} \ --name ${{ env.TEMPLATE_SPEC_NAME }} \ --version ${{ github.run_number }} \ --template-file ${{ env.TEMPLATE_SPEC_FILE_PATH }} \ --location ${{ env.AZURE_REGION }} \ --yes
このジョブでは、リポジトリからコードをチェックアウトし、作成した GitHub シークレット使って Azure にサインインします。 その後、
az ts create
コマンドを実行してテンプレート スペックを Azure に発行します。ヒント
単純にするために、このワークフローでは、ワークフローの "実行番号" をテンプレート スペックのバージョン番号として使用しています。 次のユニットでは、より複雑なバージョン管理スキームについて学習します。
ファイルに加えた変更を保存します。
ワークフロー定義を検証してコミットする
template-spec-linux-app-service.yml ファイルが次の例のようになっていることを確認します。
name: template-spec-linux-app-service concurrency: template-spec-linux-app-service on: workflow_dispatch: push: branches: - main paths: - 'template-specs/linux-app-service/**' permissions: id-token: write contents: read env: AZURE_RESOURCEGROUP_NAME: ToyReusable AZURE_REGION: westus3 TEMPLATE_SPEC_NAME: linux-app-service TEMPLATE_SPEC_FILE_PATH: template-specs/linux-app-service/main.bicep jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Run Bicep linter run: az bicep build --file ${{ env.TEMPLATE_SPEC_FILE_PATH }} publish: runs-on: ubuntu-latest needs: [ lint ] 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/cli@v1 name: Publish template spec with: inlineScript: | az ts create \ --resource-group ${{ env.AZURE_RESOURCEGROUP_NAME }} \ --name ${{ env.TEMPLATE_SPEC_NAME }} \ --version ${{ github.run_number }} \ --template-file ${{ env.TEMPLATE_SPEC_FILE_PATH }} \ --location ${{ env.AZURE_REGION }} \ --yes
そうでない場合は、この例に一致するように更新してから保存してください。
Visual Studio Code ターミナルで次のコマンドを実行し、変更をコミットして Git リポジトリにプッシュします。
git add . git commit -m "Add lint and publish jobs to Linux App Service template spec workflow" git push
このリポジトリにプッシュしたのは初めてなので、サインインを求めるメッセージが表示される場合があります。
Windows の場合は、Web ブラウザーを使用して認証の「1」を入力し、Enter キーを押します。
macOS の場合は、[承認] を選択します。
ブラウザー ウィンドウが開きます。 場合によっては、再度 GitHub にサインインする必要があります。 [承認] を選択します。
ワークフローをトリガーする
ブラウザーで、[アクション] タブを選択します。
失敗したワークフロー実行が既に表示されていますが、心配する必要はありません。 この実行が失敗したのは、リポジトリの作成時にワークフロー定義がまだ完了していなかったためです。
[template-spec-linux-app-service] ワークフローを選択して、[ワークフローの実行] ボタンを選択し、[ワークフローの実行] を選択します。
GitHub で新しいワークフローの実行が開始されます。 実行が表示されるようにするには、ブラウザー ウィンドウを更新する必要がある場合があります。
一覧で最新の実行を選択します。
ワークフロー実行が完了するまで待ちます。 実行が完了すると、テンプレート スペックが Azure に発行されます。
ワークフローの実行番号 (おそらく 2) をメモします。
Azure でテンプレート スペックを確認する
発行されたテンプレート スペックは、Azure portal で表示することもできます。
ブラウザーで、Azure portal に移動します。
ToyReusable リソース グループに移動し、linux-app-service テンプレート スペックを選択します。
テンプレート スペックの詳細を確認します。
[最新バージョン] と [バージョン] 番号がワークフローの実行番号と同じであることに注意してください。 このワークフローでは、テンプレート スペックのバージョン番号に実行番号が使用されます。