1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Flex 従量課金プラン使う際の GithubAction での Azure Functions デプロイの注意点

Last updated at Posted at 2024-10-29

初めての投稿になります。
最近登場したAzure Functions のFlex 従量課金プランですが、GithubActionがどうしてもうまくいかず、途方に暮れていたところ、解決したので備忘に書いておきます。

Flex 従量課金プランはいいぞ

Flex 従量課金プランは、従来より安定しており、メモリも1GBのみから2GBと4GBで増やせるようになっているほか常時使用可能なインスタンスと組み込みの仮想ネットワーク (VNet) 統合が含まれます。
基本的によくなっていますのでお勧めです。

GithubActionのymlファイルで、Flex 従量課金プランの場合のみ、必要な設定

      - name: 'Deploy to Azure Functions'
        uses: Azure/functions-action@v1
        id: deploy-to-function
        with:
          app-name: 'myapp'
          slot-name: 'production'
          package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
          publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_myapp }}
          sku: 'flexconsumption' # new parameter for Flex Consumption plan
          remote-build: 'true'   # enable build action from Kudu

Flex 従量課金プランの場合は新しいためまだ公式ドキュメントにも詳しい説明がありませんでしたが以下設定をしないと動かないようでした。

従来との違い

    scm-do-build-during-deployment: true
    enable-oryx-build: true

を設定する必要がなくなったようです。これらのオプションは、新しい

    sku: 'flexconsumption' # new parameter for Flex Consumption plan

パラメータによって自動的に処理されます。

     remote-build: 'true'   # enable build action from Kudu

を追加する必要があります。

以下、全体のサンプルです。

ymlファイル


name: Build and deploy Python app to Azure Web App -myapp

on:
  push:
    branches:
      - main//ブランチ名
  workflow_dispatch:

env:
  AZURE_FUNCTIONAPP_PACKAGE_PATH: './' # set this to the path to your web app project, defaults to the repository root
  PYTHON_VERSION: '3.11' # set this to the python version to use (supports 3.6, 3.7, 3.8)

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Set up Python version
        uses: actions/setup-python@v1
        with:
          python-version: ${{ env.PYTHON_VERSION }}

      - name: Create and start virtual environment
        run: |
          python -m venv venv
          source venv/bin/activate

      - name: Install dependencies
        run: pip install -r ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}/requirements.txt

      # Optional: Add step to run tests here (PyTest, Django test suites, etc.)
      - name: Zip artifact for deployment
        run: zip release.zip ./* -r

      - name: Upload artifact for deployment jobs
        uses: actions/upload-artifact@v3
        with:
          name: python-app
          path: |
            release.zip
            !venv/

  deploy:
    runs-on: ubuntu-latest
    needs: build
    environment:
      name: 'production'
      url: ${{ steps.deploy-to-function.outputs.webapp-url }}

    steps:
      - name: Download artifact from build job
        uses: actions/download-artifact@v3
        with:
          name: python-app

      - name: Unzip artifact for deployment
        run:  unzip release.zip

      - name: 'Deploy to Azure Functions'
        uses: Azure/functions-action@v1
        id: deploy-to-function
        with:
          app-name: 'myapp'
          slot-name: 'production'
          package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
          publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_myapp }}
          sku: 'flexconsumption' # new parameter for Flex Consumption plan
          remote-build: 'true'   # enable build action from Kudu

それでもエラーが出る人はここもみてください

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?