次の方法で共有


クイックスタート: 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 アプリケーション

オプション 2: ユーザー割り当てマネージド ID

GitHub シークレットを構成する

ログイン アクションには、アプリケーションのクライアント IDディレクトリ (テナント) IDサブスクリプション ID を指定する必要があります。 これらの値は、ワークフロー内で直接指定するか、GitHub シークレットに格納してワークフローで参照できます。 GitHub シークレットとして値を保存する方がより安全なオプションです。

  1. GitHub で、お使いのリポジトリに移動します。

  2. [Security] (セキュリティ) > [Secrets and variables] (シークレットと変数) > [Actions] (アクション) を選びます。

    シークレットを追加しているスクリーンショット

  3. [New repository secret](新しいリポジトリ シークレット) を選択します。

    Note

    パブリック リポジトリのワークフロー セキュリティを強化するには、リポジトリ シークレットの代わりに環境シークレットを使用します。 環境が承認を必要とするなら、ジョブは必須のレビュー担当者の一人が承認するまで環境のシークレットにアクセスできません。

  4. AZURE_CLIENT_IDAZURE_TENANT_IDAZURE_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 を指定できます。

ワークフローを作成するには、次の手順を実行します。

  1. GitHub リポジトリの上部のメニューで、 [Actions](アクション) を選択します。

  2. [New workflow](新しいワークフロー) を選択します。

  3. [Set up a workflow yourself](ワークフローを自分でセットアップする) を選択します。

  4. main.yml 以外の別の名前を使用する場合は、ワークフロー ファイルの名前を変更します。 例: deployBicepFile.yml

  5. .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
    
  6. [変更点のコミット] を選択します。

  7. [Commit directly to the main branch](メイン ブランチに直接コミットする) を選択します。

  8. [Commit new file](新しいファイルをコミットする) (または [Commit changes](変更をコミットする) ) を選択します。

ワークフロー ファイルまたは Bicep ファイルのいずれかを更新すると、ワークフローがトリガーされます。 変更をコミットすると、ワークフローがすぐに開始されます。

ワークフローの状態を確認する

  1. [Actions]\(アクション\) タブを選択します。Create deployBicepFile.yml ワークフローが一覧表示されます。 ワークフローの実行には 1 から 2 分かかります。
  2. ワークフローを選択して開き、StatusSuccess であることを確認します。

リソースをクリーンアップする

リソース グループとリポジトリが不要になったら、リソース グループと GitHub リポジトリを削除して、デプロイしたリソースをクリーンアップします。

az group delete --name exampleRG

次のステップ