演習 - GitHub ワークフローから Bicep ファイルをデプロイする

完了

GitHub Actions の性質は Azure Pipelines と似ています。 これらは、ソフトウェアの開発とデプロイを自動化する方法を提供するものです。 この演習では、GitHub Action を使って Bicep ファイルをデプロイする方法について学習します。

前提条件

  • GitHub アカウントが必要です。これはここで無料で作成できます。
  • 演習 - Bicep テンプレートを作成する」で前に作成した Bicep ファイルとワークフローを格納するには、GitHub リポジトリも必要です。 GitHub リポジトリを作成したら、Bicep ファイルをそこにプッシュします。
  • Azure へのデプロイには、Azure サブスクリプションへのアクセスが必要です。これはここで無料で作成できます。

Azure でのサービス プリンシパルの作成

リソースを Azure にデプロイするには、GitHub から使用できるサービス プリンシパルを作成する必要があります。 そのため、ターミナルを開くか、Azure portal の Cloud Shell を使って、次のコマンドを入力します。

az login
az ad sp create-for-rbac --name myApp --role contributor --scopes /subscriptions/{subscription-id}/resourceGroups/Bicep --sdk-auth

注意

忘れずにサブスクリプション ID を自分のものに置き換えてください。

この操作に成功すると、次のように tenantIdsubscriptionIdclientIdclientSecret などのプロパティを含む JSON オブジェクトが出力されます。

{
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    (...)
}

GitHub シークレットに追加する必要があるので、このオブジェクトをメモしておきます。

GitHub シークレットの作成

GitHub リポジトリで、[Settings](設定)>[Secrets](シークレット)>[Actions](アクション) に移動します。 AZURE_CREDENTIALS という新しいシークレットを作成し、前の手順で取得した JSON オブジェクト全体を貼り付けます。

AZURE_RG のような名前のリソース グループ名用にシークレットをもう 1 つ、サブスクリプション用にもう 1 つを作成します。

Screenshot of GitHub secrets creation and manage page.

GitHub アクションの作成

  1. まずリポジトリに移動し、[Actions](アクション) メニューを選びます。 次に、リポジトリに空のワークフローを作成するようにワークフローを設定します。 必要に応じて、ファイルを別の名前に変更できます。

    Screenshot of GitHub new file creation, edit and preview.

  2. ファイルの内容を次のスニペットに置き換えます。

    on: [push]
    name: Azure ARM
    jobs:
        build-and-deploy:
            runs-on: ubuntu-latest
            steps:
                # Checkout code
                - uses: actions/checkout@main
    
                  # Log into Azure
                - uses: azure/login@v1
                  with:
                      creds: ${{ secrets.AZURE_CREDENTIALS }}
    
                  # Deploy Bicep file
                - name: deploy
                  uses: azure/arm-deploy@v1
                  with:
                      subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }}
                      resourceGroupName: ${{ secrets.AZURE_RG }}
                      template: ./main.bicep
                      parameters: storagePrefix=stg
                      failOnStdErr: false
    

    ストレージ アカウントのプレフィックスは、自分のものに自由に置き換えてください。

    注意

    ワークフローの最初の部分では、トリガーと名前を定義しています。 残りの部分ではジョブを定義しており、いくつかのタスクを使ってコードのチェックアウト、Azure へのサインイン、Bicep ファイルのデプロイを行っています。

  3. [Start commit](コミットの開始) を選び、ポップアップ ダイアログにタイトルと説明を入力します。 次に [Commit directly to the main branch](メイン ブランチに直接コミット)[Commit a new file](新しいファイルのコミット) の順に選びます。

    Screenshot of GitHub commits a new file to the main branch.

  4. [Actions](アクション) タブに移動し、実行する必要がある新しく作成したアクションを選びます。

    Screenshot of GitHub action running and deploying.

  5. 状態を監視し、ジョブが完了したら、Azure portal を確認して、ストレージ アカウントが作成されているかどうかを確認します。

    Screenshot of GitHub action successful executed job.