クイックスタート: 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
デプロイ資格情報を生成する
GitHub Actions は ID の下で実行されます。 サービス プリンシパルを作成するには、az ad sp create-for-rbac コマンドを使用して、ID のサービス プリンシパルを作成します。 前のセッションで作成したリソース グループの共同作成者ロールをサービス プリンシパルに付与し、その ID を持つ GitHub アクションがこのリソース グループにリソースを作成できるようにします。 必要な最小限のアクセス権を付与することをお勧めします。
az ad sp create-for-rbac --name {app-name} --role contributor --scopes /subscriptions/{subscription-id}/resourceGroups/exampleRG --json-auth
{app-name}
のプレースホルダーはアプリケーションの名前に置き換えます。 {subscription-id}
は、サブスクリプション ID で置き換えてください。
出力は、次の出力のような、App Service アプリへのアクセスを提供するロールの割り当て資格情報を含む JSON オブジェクトとなります。
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
...
}
この JSON オブジェクトを後のためにコピーします。 必要なのは、clientId
、clientSecret
、subscriptionId
、tenantId
の値を持つセクションだけです。 最後の行の末尾に余分なコンマがないことを確認します (たとえば、前の例の tenantId
行)。そうでない場合は、無効な JSON ファイルになります。 デプロイ中に、"ログインに失敗しました: コンテンツは有効な JSON オブジェクトではありません。 'auth-type' が正しいかどうかを再確認してください。"というエラーが発生します。
GitHub シークレットを構成する
Azure の資格情報、リソース グループ、およびサブスクリプションのシークレットを作成します。 これらのシークレットは、「ワークフローの作成」セクションで使用します。
GitHub で、自分のリポジトリに移動します。
[設定] > [シークレットと変数] > [アクション] > [新しいリポジトリ シークレット] の順に選択します。
Azure CLI コマンドからの JSON 出力全体をシークレットの値フィールドに貼り付けます。 シークレットに
AZURE_CREDENTIALS
という名前を付けます。AZURE_RG
という名前の別のシークレットを作成します。 リソース グループの名前をシークレットの値フィールドに追加します (exampleRG
)。AZURE_SUBSCRIPTION
という名前の別のシークレットを作成します。 シークレットの値フィールドにサブスクリプション ID を追加します (例:aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
)。
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 ファイルの内容を次のコードに置き換えます。
name: Deploy Bicep file on: [push] jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@main - name: Log into Azure uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Deploy Bicep file 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
mystore
を独自のストレージ アカウント名プレフィックスに置き換えます。注意
代わりに、ARM デプロイ アクション (例:
.azuredeploy.parameters.json
) に JSON 形式のパラメーター ファイルを指定できます。ワークフロー ファイルの最初のセクションには次のものが含まれます。
- name:ワークフローの名前。
- on: ワークフローをトリガーする GitHub イベントの名前。 ワークフローは、メイン ブランチにプッシュ イベントがある場合にトリガーされます。
[変更点のコミット] を選択します。
[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