次の方法で共有


GitHub Actions との統合

GitHub Actions は、ソフトウェア開発ワークフローを自動化するのに役立つ GitHub の機能です。 ソース コードが GitHub リポジトリに格納されている場合は、GitHub Actions でカスタム ワークフローを作成して、コード プロジェクトをビルド、テスト、パッケージ化、リリース、デプロイすることができます。

この記事では、GitHub Actions を使用して CI/CD ワークフローを作成し、Stream Analytic ジョブを Azure にデプロイする方法について説明します。 そのため、次に GitHub リポジトリを変更すると、ワークフローが自動的にトリガーされ、Stream Analytics プロジェクトが Azure にデプロイされます。

前提条件

作業を開始する前に、次の前提条件を満たしておく必要があります。

  • アクティブなサブスクリプションが含まれる Azure アカウント。
  • GitHub リポジトリの構成、ワークフローの作成、GitHub シークレットの構成を行う GitHub アカウント。
  • PowerShell で az コマンドを実行します。 このガイドに従って、ローカル コンピューターに Azure コマンド ライン インターフェイス (CLI) をインストールまたは更新します。

手順 1: Stream Analytics プロジェクトを GitHub リポジトリにプッシュする

Stream Analytics プロジェクトは、Visual Studio Code (VS Code) 用の Azure Stream Analytics 拡張機能を使用して管理されています。 インストールしていない場合は、このガイドに従ってください。

  1. Azure portal のクエリ エディターに移動し、[VS Code で開く] を選択します。

    クエリ ファイルで [VS Code で開く] 機能を使用している Azure portal のスクリーンショット。

  2. 完了すると、VS Code ワークスペースに Stream Analytics プロジェクトが表示されます。

    ジョブのエクスポート後の VS Code ワークスペースのスクリーンショット。

  3. Ctrl+J キーを押して、VS Code でターミナルを開きます。 git コマンドを入力して、プロジェクトを GitHub リポジトリにプッシュします。

    VS Code ターミナルのスクリーンショット。

手順 2: GitHub でシークレットを設定する

Stream Analytics ジョブをデプロイするには、少なくとも 3 つの GitHub シークレットを作成する必要があります。 1 つは Azure 資格情報用で、残りは、入力/出力 Azure リソース用です。

  1. GitHub リポジトリに移動し、[設定] タブを選択します。左側のメニューから [Secrets and variables](シークレットと変数) > [アクション] を選択してから、[New repository secret](新しいリポジトリ シークレット) を選択して新しいシークレットを作成します。 リポジトリ用のシークレットを設定している GitHub のスクリーンショット。

  2. Azure 資格情報用のシークレットを作成します。 PowerShell を開き、次のコマンドを実行します。 次に、出力 JSON をシークレット値にコピーします。

    1. {subscription-id} と {resource-group} をご自身の Azure リソースに置き換えます。 最新バージョンの Azure CLI をインストール済みであることを確認してください。

      az login 
      az ad sp create-for-rbac --name "myApp" --role contributor --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} --json-auth 
      

      az コマンドを実行中の PowerShell のスクリーンショット。

    2. AZURE_CREDENTIALS などのシークレット名を入力し、出力 JSON をシークレット値にコピーします。 次に、[シークレットの追加] を選択します。

      Azure 視覚情報用のシークレットを作成している GitHub のスクリーンショット。

    3. サービス プリンシパル シークレットで Azure ログイン アクションを使用する方法の詳細については、こちらを参照してください。

  3. 入力と出力のリソース用のシークレットを作成します。 複数の入力/出力リソースについては、Azure リソースごとにシークレットを作成する必要があります。

    1. たとえば、イベント ハブのシークレットを作成するには、Azure portal の Event Hubs に移動し、共有アクセス ポリシーから主キーをコピーします。

      アクセス キーを開いているイベント ハブのスクリーンショット。

    2. アクセス キーをシークレット値にコピーします。

      アクセス キーを開いているイベント ハブを示すスクリーンショット。

完了したら、GitHub リポジトリ用に少なくとも 3 つのシークレットが作成されているはずです。

3 つのシークレットの設定が完了した GitHub のスクリーンショット。

手順 3: GitHub Actions を使用してワークフローを作成する

  1. アクション タブに移動し、New workflow(新しいワークフロー)>set up a workflow yourself(ワークフローを自分でセットアップする の順に選択します。

    ワークフローを作成している GitHub のスクリーンショット。

  2. このテンプレートを YAML ファイルにコピーし、パラメーターを編集します。

    1. PROJECT_NAME: Stream Analytics ジョブの名前。

    2. OUTPUT_PATH: そのままにしておきます。

    3. TARGET_RESOURCE_GROUP: Azure リソース グループ。

    4. LOCATION: デプロイ用の Azure リージョン。 利用可能なリージョンについては、こちらを参照してください。

    5. OVERRIDE_PARAMETERS: Azure リソースの資格情報。 資格情報を正しく解析するには、このパラメーターを次の形式でキーと値のペアとして設定する必要があります。

      #               Inputs_ehinput_DataSource_SharedAccessPolicyKey
      #               \____/ \_____/ \________/ \__________________/
      #                  |      |                        |
      #          input/output  name                credential name
      

      たとえば、Event Hubs の入力と Blob Storage の出力の場合、キーは次のようになります。

      Inputs_ClickStream_DataSource_SharedAccessPolicyKey=${{ secrets.ASA_INPUT }} Outputs_BlobOutput_DataSource_AccountKey=${{ secrets.ASA_OUTPUT }}
      
      

      Azure リソースの種類から資格情報名へのマッピングを次に示します。

      リソースの種類 Credential name (資格情報名)
      Azure Event Hubs、Azure IoT Hub、Azure Service Bus SharedAccessPolicyKey
      Azure Blob Storage、Azure Cosmos DB、Azure Table Storage AccountKey
      Azure 関数 ApiKey
      Azure SQL Database、Azure Synapse Analytics Password
  3. メイン ブランチへの変更を保存コミットします。 次に、[アクション] に移動し、[ワークフローの実行] を選択します。 ワークフローの進行状況をモニタリングできます。

    ワークフローを実行中の GitHub のスクリーンショット。

  4. 完了すると、Stream Analytics ジョブが Azure portal で実行を開始していることが確認できます。 GitHub Actions のワークフローは、次にメイン ブランチに変更をプッシュしたときに自動的にトリガーされます。

    Stream Analytics ジョブが実行状態であることを示す Azure potal のスクリーンショット。

おめでとうございます。 GitHub でのワークフローの作成、および Stream Analytics プロジェクトの Azure へのデプロイが正常に完了しました。 このワークフローを使用すると、GitHub リポジトリのメイン ブランチに変更をプッシュするたびに、Stream Analytics プロジェクトに対してビルド、テスト、発行、Azure へのデプロイを自動的に行うことができます。