[Azure Functions] GitHub Actions を使って関数をデプロイする


はじめに

先日、Azure Functions 関数を Azure DevOps の Pipelines を使ってデプロイする方法を記事にしました。

今回は、Azure Pipelines の代わりに GitHub Actions を使って同様にデプロイする方法を紹介したいと思います。

前提

  • GitHub リポジトリ
    初めてリポジトリを作成する方は、以下のドキュメントをもとにご作成ください。
    https://docs.github.com/ja/github/getting-started-with-github/create-a-repo

  • Azure Functions
    「はじめに」で記した前回記事と同じ構成で作成しておきます。

    • ランタイムスタック : Node.js (14 LTS)
    • オペレーティングシステム : Windows
    • プラン : 消費量 (サーバーレス)
  • Visual Studio Code
    ローカル開発環境での関数作成および git コミットまでについても前回記事同様です。
    コミットしたら上記で作成した GitHub リポジトリに push しておきます。

※ 前回記事:https://qiita.com/tomohat/items/02c0e189750192e435c5

GitHub Actions の作成

発行プロファイルの設定

GitHub Actions から Azure Functions へデプロイする際に使用する認証情報として、発行プロファイルが推奨されています。
まずはこちらの設定から始めます。

Azure Functions の概要画面に遷移し、発行プロファイルの取得を押すとファイルがダウンロードできます。

続いて、GitHub リポジトリに移動し、リポジトリ設定の Secrets > New repository secret を選択します。

Secret 設定画面で、Name を AZURE_FUNCTIONAPP_PUBLISH_PROFILE とし、Value には先ほどダウンロードした発行プロファイルの中身を全て貼り付けます。
発行プロファイルは Visual Studio Code で開くと中身を確認できます。

これで発行プロファイルの設定は完了です。

ワークフローの作成

ここから、Azure Functions にデプロイするためのワークフロー作成していきます。
まずは、Actions タブの set up a workflow yourself リンクを押下します。

すると、YAML ファイル編集画面が表示されると思うので、公式ドキュメントを参考にした以下のコードで上書きます。
https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-how-to-github-actions?tabs=javascript#deploy-the-function-app

name: Deploy Node.js project to function app

on:
  push:
    branches: [ main ]
  workflow_dispatch:

jobs:
  build-and-deploy:
    runs-on: windows-latest
    env:
      AZURE_FUNCTIONAPP_PACKAGE_PATH: '.' 
      AZURE_FUNCTIONAPP_NAME: '(作成した Function App の名前)'
      NODE_VERSION: '14.x'                     
    steps:
      - name: 'Checkout GitHub Action'
        uses: actions/checkout@main

      - name: Setup Node ${{ env.NODE_VERSION }} Environment
        uses: actions/setup-node@v1
        with:
          node-version: ${{ env.NODE_VERSION }}

      - name: Resolve Project Dependencies Using Npm
        shell: pwsh
        run: |
          pushd './${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}'
          npm install
          npm run build --if-present
          npm run test --if-present
          popd
      - name: Run Azure Functions Action
        uses: Azure/functions-action@v1
        id: fa
        with:
          app-name: ${{ env.AZURE_FUNCTIONAPP_NAME }}
          package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
          publish-profile: ${{ secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE }}

上書きしたら Start commit ボタンを押下します。
GitHub 上で main ブランチをコミットすることでワークフローが走り出し、最初のビルドとデプロイが実行されます。
デプロイが完了したら、Azure Functions に移動して、実際にデプロイされているか確認してみましょう。

参考文献