クイックスタート: GitHub Actions を使用した Bicep ファイルのデプロイ
GitHub Actions は、ソフトウェア開発ワークフローを自動化する一連の GitHub 機能です。 このクイックスタートでは、Azure Resource Manager のデプロイに GitHub Actions を使って、Bicep ファイルの Azure へのデプロイを自動化します。
GitHub Actions と Bicep ファイルの概要を簡単に示します。 GitHub Actions とプロジェクトの設定に関する詳細なステップが必要な場合は、「 Bicep と GitHub Actions を使用して Azure リソースをデプロイする」を参照してください。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- GitHub アカウント。 お持ちでない場合は、無料でサインアップしてください。
- Bicep ファイルとワークフロー ファイルを保存するための GitHub リポジトリ。 リポジトリを作成するには、新しいリポジトリの作成に関するページをご覧ください。
リソース グループの作成
リソース グループを作成する。 このクイックスタートの後半では、Bicep ファイルをこのリソース グループにデプロイします。
az group create -n exampleRG -l westus
デプロイ資格情報を生成する
OIDC で Azure ログイン アクションを使用するには、Microsoft Entra アプリケーションまたはユーザー割り当てマネージド ID でフェデレーション ID 資格情報を構成する必要があります。
オプション 1: Microsoft Entra アプリケーション
- Azure portal、Azure CLI、または Azure PowerShell で、サービス プリンシパルを使って Microsoft Entra アプリケーションを作成します。
- 後で GitHub Actions ワークフローで使うため、クライアント ID、サブスクリプション ID、ディレクトリ (テナント) ID の値をコピーしておきます。
- Azure portal、Azure CLI、または Azure PowerShell を使用して、サービス プリンシパルに適切なロールを割り当てます。
- GitHub Actions により GitHub リポジトリに対して発行されたトークンを信頼するように、Microsoft Entra アプリケーションでフェデレーション ID 資格情報を構成します。
オプション 2: ユーザー割り当てマネージド ID
- 「ユーザー割り当てマネージド ID を作成する」の手順を使用して、ユーザー割り当てマネージド ID を作成します。
- 後で GitHub Actions ワークフローで使うため、クライアント ID、サブスクリプション ID、ディレクトリ (テナント) ID の値をコピーしておきます。
- ユーザー割り当てマネージド ID に適切なロールを割り当てます。
- GitHub Actions により GitHub リポジトリに対して発行されたトークンを信頼するように、ユーザー割り当てマネージド ID でフェデレーション ID 資格情報を構成します。
GitHub シークレットを構成する
ログイン アクションには、アプリケーションのクライアント ID、ディレクトリ (テナント) ID、サブスクリプション ID を指定する必要があります。 これらの値は、ワークフロー内で直接指定するか、GitHub シークレットに格納してワークフローで参照できます。 GitHub シークレットとして値を保存する方がより安全なオプションです。
GitHub で、お使いのリポジトリに移動します。
[Security] (セキュリティ) > [Secrets and variables] (シークレットと変数) > [Actions] (アクション) を選びます。
[New repository secret](新しいリポジトリ シークレット) を選択します。
Note
パブリック リポジトリのワークフロー セキュリティを強化するには、リポジトリ シークレットの代わりに環境シークレットを使用します。 環境が承認を必要とするなら、ジョブは必須のレビュー担当者の一人が承認するまで環境のシークレットにアクセスできません。
AZURE_CLIENT_ID
、AZURE_TENANT_ID
、AZURE_SUBSCRIPTION_ID
のシークレットを作成します。 Microsoft Entra アプリケーションまたは GitHub シークレットのユーザー割り当てマネージド ID から次の値をコピーします。GitHub シークレット Microsoft Entra アプリケーションまたはユーザー割り当てマネージド ID AZURE_CLIENT_ID クライアント ID AZURE_SUBSCRIPTION_ID サブスクリプション ID AZURE_TENANT_ID ディレクトリ (テナント) ID Note
セキュリティ上の理由から、値をワークフローに直接渡すのではなく、GitHub シークレットを使用することをお勧めします。
Bicep ファイルを追加する
GitHub リポジトリに Bicep ファイルを追加します。 次の Bicep ファイルでは、ストレージ アカウントが作成されます。
@minLength(3)
@maxLength(11)
param storagePrefix string
@allowed([
'Standard_LRS'
'Standard_GRS'
'Standard_RAGRS'
'Standard_ZRS'
'Premium_LRS'
'Premium_ZRS'
'Standard_GZRS'
'Standard_RAGZRS'
])
param storageSKU string = 'Standard_LRS'
param location string = resourceGroup().location
var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: uniqueStorageName
location: location
sku: {
name: storageSKU
}
kind: 'StorageV2'
properties: {
supportsHttpsTrafficOnly: true
}
}
output storageEndpoint object = stg.properties.primaryEndpoints
Bicep ファイルでは storagePrefix と呼ばれる 1 つのパラメーターが 3 文字から 11 文字で必要です。
ファイルは、リポジトリ内のどこに置いてもかまいません。 次のセクションのワークフロー サンプルでは、Bicep ファイル名が main.bicep であり、リポジトリのルートに保存されていることを想定しています。
ワークフローを作成する
ワークフローでは、トリガーされた場合に実行するステップを定義します。 これは、お使いのリポジトリの /.github/workflows/ パスの YAML (.yml) ファイルです。 ワークフロー ファイルの拡張子には、 .yml または .yaml を指定できます。
ワークフローを作成するには、次の手順を実行します。
GitHub リポジトリの上部のメニューで、 [Actions](アクション) を選択します。
[New workflow](新しいワークフロー) を選択します。
[Set up a workflow yourself](ワークフローを自分でセットアップする) を選択します。
main.yml 以外の別の名前を使用する場合は、ワークフロー ファイルの名前を変更します。 例: deployBicepFile.yml。
.yml ファイルの内容を次のコードに置き換えます。
on: [push] name: Azure ARM permissions: id-token: write contents: read jobs: build-and-deploy: runs-on: ubuntu-latest steps: # Checkout code - uses: actions/checkout@main # Log into Azure - uses: azure/login@v2 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} # Deploy Bicep file - name: deploy uses: azure/arm-deploy@v1 with: subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }} resourceGroupName: ${{ secrets.AZURE_RG }} template: ./main.bicep parameters: 'storagePrefix=mystore storageSKU=Standard_LRS' failOnStdErr: false
[変更点のコミット] を選択します。
[Commit directly to the main branch](メイン ブランチに直接コミットする) を選択します。
[Commit new file](新しいファイルをコミットする) (または [Commit changes](変更をコミットする) ) を選択します。
ワークフロー ファイルまたは Bicep ファイルのいずれかを更新すると、ワークフローがトリガーされます。 変更をコミットすると、ワークフローがすぐに開始されます。
ワークフローの状態を確認する
- [Actions]\(アクション\) タブを選択します。Create deployBicepFile.yml ワークフローが一覧表示されます。 ワークフローの実行には 1 から 2 分かかります。
- ワークフローを選択して開き、
Status
がSuccess
であることを確認します。
リソースをクリーンアップする
リソース グループとリポジトリが不要になったら、リソース グループと GitHub リポジトリを削除して、デプロイしたリソースをクリーンアップします。
az group delete --name exampleRG