演習 - テンプレート スペックを発行する
あなたのチームには、会社の新しいガバナンス モデルに準拠しているセキュリティ強化された Bicep ファイルがいくつかあります。 強化された Bicep ファイルの 1 つでは、Linux ベースの Azure App Service アプリがデプロイされます。 この演習では、デプロイ パイプラインを使用して、Bicep ファイルをテンプレート スペックとして発行します。
このプロセスでは、次のことを行います。
- パイプラインに lint ステージを追加します。
- テンプレート スペックを発行するパイプライン ステージを追加します。
- パイプラインが正常に開始され完了することを確認します。
- Azure で発行されたテンプレート スペックを確認します。
パイプラインに lint ステージを追加する
リポジトリには、出発点として使用できるパイプライン定義のドラフトが含まれています。
Visual Studio Code で、リポジトリのルートにある template-specs/linux-app-service フォルダーを展開します。
pipeline.yml ファイルを開きます。
ファイルの下部にある
# To be added
を次の lint ステージの定義に置き換えます。stages: - stage: Lint jobs: - job: LintCode displayName: Lint code steps: - script: | az bicep build --file $(TemplateSpecFilePath) name: LintBicepCode displayName: Run Bicep linter
リポジトリには、警告ではなくエラーを生成するようにリンターを構成する bicepconfig.json ファイルが含まれています。 lint ステージ中にエラーが発生すると、パイプラインは失敗します。
ヒント
YAML ファイルは、インデントによって区別されます。 このコードを入力する場合でも貼り付ける場合でも、インデントが正しいことを確認してください。 この演習の後半では、ファイルが一致することを確認できるように、完全な YAML パイプライン定義を示します。
パイプラインに発行ステージを追加する
これで、テンプレート スペックを Azure に発行する 2 番目のステージを追加できます。
pipeline.yml ファイルの末尾に次のコードを追加します。
- stage: Publish jobs: - job: Publish steps: - task: AzureCLI@2 name: Publish displayName: Publish template spec inputs: azureSubscription: $(ServiceConnectionName) scriptType: 'bash' scriptLocation: 'inlineScript' inlineScript: | az ts create \ --resource-group $(AzureResourceGroupName) \ --name $(TemplateSpecName) \ --version $(Build.BuildNumber) \ --template-file $(TemplateSpecFilePath) \ --location $(AzureRegion) \ --yes
このステージでは、リポジトリからコードをチェックアウトし、作成したサービス接続を使用して Azure にサインインします。 その後、
az ts create
コマンドを実行してテンプレート スペックを Azure に発行します。ヒント
簡単にするために、このパイプラインでは、パイプラインのビルド番号をテンプレート スペックのバージョン番号として使用しています。 次のユニットでは、より複雑なバージョン管理スキームについて学習します。
ファイルに加えた変更を保存します。
パイプライン定義を確認してコミットする
pipeline.yml ファイルが次の例のようになっていることを確認します。
trigger: batch: true branches: include: - main paths: include: - 'template-specs/linux-app-service/**' variables: - name: ServiceConnectionName value: ToyReusable - name: AzureResourceGroupName value: ToyReusable - name: AzureRegion value: westus3 - name: TemplateSpecName value: linux-app-service - name: TemplateSpecFilePath value: template-specs/linux-app-service/main.bicep pool: vmImage: ubuntu-latest stages: - stage: Lint jobs: - job: LintCode displayName: Lint code steps: - script: | az bicep build --file $(TemplateSpecFilePath) name: LintBicepCode displayName: Run Bicep linter - stage: Publish jobs: - job: Publish steps: - task: AzureCLI@2 name: Publish displayName: Publish template spec inputs: azureSubscription: $(ServiceConnectionName) scriptType: 'bash' scriptLocation: 'inlineScript' inlineScript: | az ts create \ --resource-group $(AzureResourceGroupName) \ --name $(TemplateSpecName) \ --version $(Build.BuildNumber) \ --template-file $(TemplateSpecFilePath) \ --location $(AzureRegion) \ --yes
そうでない場合は、この例に一致するように更新してから保存してください。
Visual Studio Code ターミナルで次のコマンドを実行し、変更をコミットして Git リポジトリにプッシュします。
git add . git commit -m "Add lint and publish stages to Linux App Service template spec pipeline" git push
プッシュした直後に、Azure Pipelines で新しいパイプライン実行が開始されます。
パイプラインの監視
ブラウザーで、[パイプライン]>[パイプライン] を選択します。
アクティブなパイプラインの実行を選択します。
パイプラインの実行が表示されます。
パイプラインの実行が終了するまで待ちます。 実行が完了すると、テンプレート スペックが Azure に発行されます。
パイプラインのビルド番号に注意してください。これには、今日の日付と一意のリビジョン番号が含まれています。 スクリーンショットの例では、ビルド番号は 20230407.1 です。
Azure でテンプレート スペックを確認する
発行されたテンプレート スペックは、Azure portal で表示することもできます。
ブラウザーで、Azure portal に移動します。
ToyReusable リソース グループに移動し、linux-app-service テンプレート スペックを選択します。
テンプレート スペックの詳細を確認します。
[最新バージョン] と [バージョン] 番号がパイプラインのビルド番号と同じであることに注意してください。 パイプラインでは、テンプレート スペックのバージョン番号にビルド番号が使用されます。