演習 - 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 を自分のものに置き換えてください。
この操作に成功すると、次のように tenantId
、subscriptionId
、clientId
、clientSecret
などのプロパティを含む JSON オブジェクトが出力されます。
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
GitHub シークレットに追加する必要があるので、このオブジェクトをメモしておきます。
GitHub シークレットの作成
GitHub リポジトリで、[Settings](設定)>[Secrets](シークレット)>[Actions](アクション) に移動します。
AZURE_CREDENTIALS
という新しいシークレットを作成し、前の手順で取得した JSON オブジェクト全体を貼り付けます。
AZURE_RG
のような名前のリソース グループ名用にシークレットをもう 1 つ、サブスクリプション用にもう 1 つを作成します。
GitHub アクションの作成
まずリポジトリに移動し、[Actions](アクション) メニューを選びます。 次に、リポジトリに空のワークフローを作成するようにワークフローを設定します。 必要に応じて、ファイルを別の名前に変更できます。
ファイルの内容を次のスニペットに置き換えます。
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 ファイルのデプロイを行っています。
[Start commit](コミットの開始) を選び、ポップアップ ダイアログにタイトルと説明を入力します。 次に [Commit directly to the main branch](メイン ブランチに直接コミット)、[Commit a new file](新しいファイルのコミット) の順に選びます。
[Actions](アクション) タブに移動し、実行する必要がある新しく作成したアクションを選びます。
状態を監視し、ジョブが完了したら、Azure portal を確認して、ストレージ アカウントが作成されているかどうかを確認します。