Azure Functions を GitHub Actions で更新する方法と2026年確認ポイント

Azure Functions を GitHub Actions でデプロイしている、またはこれから CI/CD 化する場合、今回まず確認すべきポイントは「YAML ワークフローの配置場所」「認証方式」「Flex Consumption plan でのデプロイ復旧手順」の3つです。GitHub Actions 連携そのものに一律の移行期限が示されたわけではありませんが、Linux Consumption plan や古いランタイムを使っている環境では、ホスティング移行とデプロイ方式の見直しを同時に進める必要があります。Microsoft Learn の該当ページは、Azure Functions のコード更新を GitHub Actions で自動ビルド・自動デプロイするための手順を説明しており、ワークフローは /.github/workflows/ 配下の YAML ファイルで管理します。(Microsoft Learn)

目次

Azure Functions の GitHub Actions 連携で何を確認すべきか

Azure の「Use GitHub Actions to make code updates in Azure Functions」は、GitHub リポジトリにある Azure Functions プロジェクトを、GitHub Actions のワークフローでビルドし、既存の Function App にデプロイするための公式ガイドです。ワークフローは言語にかかわらず、環境セットアップ、コードのビルド、Azure Functions へのパッケージデプロイという流れで動きます。(Microsoft Learn)

2026年7月2日の公式 GitHub 履歴では、Flex Consumption plan のデプロイ復旧ガイドへの導線追加が確認できます。Microsoft Learn 本文の最終更新表示は 2026年3月2日ですが、GitHub 上のドキュメント履歴では 2026年7月2日に functions-how-to-github-actions.md の Next steps が更新され、「Recover from a bad Flex Consumption plan deployment」へのリンクが追加されています。(GitHub)

確認項目実務上の意味管理者が見るべきポイント
ワークフローの配置/.github/workflows/ に YAML を置き、push などを契機にデプロイするリポジトリ、ブランチ、デプロイ先 Function App が正しいか
認証方式GitHub Actions が Azure に接続する方法を決める本番では OIDC またはユーザー割り当てマネージド ID を優先検討する
発行プロファイル手軽だが強い権限を持つ資格情報として扱う必要があるGitHub Secrets に保存し、Basic 認証の利用有無を管理する
Flex Consumption planデプロイ方式や復旧手順が他プランと異なるremote-build、sku、ロールバック手順を確認する
Linux Consumption plan廃止予定があるため中長期の影響が大きい2028年9月30日までの移行計画を作る

今回の更新ポイントは「デプロイ手順」だけでなく「復旧設計」まで見ること

従来の Azure Functions の GitHub Actions 記事は、ワークフローの作り方や発行プロファイルを使ったデプロイ手順が中心でした。今回注目すべき点は、Flex Consumption plan の利用が広がる中で、デプロイ失敗時にどう戻すかまで運用設計に含める必要があることです。

Flex Consumption plan では、コードは zip パッケージとして Blob Storage コンテナーに配置され、各デプロイで現在のパッケージが上書きされます。プラットフォーム側に以前のリビジョンを保持する組み込み履歴はなく、デプロイ スロットも現在サポートされていません。つまり、障害時に戻れるかどうかは、Git の履歴、CI/CD の実行履歴、アプリ設定の管理方法に大きく依存します。(Microsoft Learn)

特に本番環境では、GitHub Actions を「自動デプロイの仕組み」としてだけ見るのでは不十分です。以下まで含めて設計すると、障害時の復旧が現実的になります。

設計対象不十分な例推奨される考え方
コードmain ブランチに push したら即本番反映PR レビュー、ブランチ保護、環境別承認を入れる
依存関係ビルド時に常に最新パッケージを取得lock ファイルやバージョン固定で再現性を高める
アプリ設定Azure ポータルで手動変更JSON、Bicep、Terraform などで管理する
ロールバック障害後に手作業で zip を探す直前の成功ワークフロー再実行、git revert、hotfix の手順を決める
監視デプロイ完了だけを見るApplication Insights、ヘルスチェック、アラートまで組み込む

GitHub Actions で Azure Functions を更新する基本構成

Azure Functions の GitHub Actions ワークフローは、基本的に次の流れで構成します。

  1. GitHub リポジトリに Functions のソースコードを置く
  2. /.github/workflows/ に YAML ファイルを作成する
  3. 言語ごとのビルド環境をセットアップする
  4. アプリをビルドする
  5. Azure/functions-action で Function App にデプロイする

公式ドキュメントでは、ワークフローを手動で作る方法のほか、Azure portal、Azure CLI、GitHub リポジトリ上のテンプレートから生成する方法が案内されています。(Microsoft Learn)

代表的な構成イメージは次のとおりです。

name: Deploy Azure Functions

on:
  push:
    branches:
      - main

env:
  AZURE_FUNCTIONAPP_NAME: your-function-app-name
  AZURE_FUNCTIONAPP_PACKAGE_PATH: '.'

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Build application
        run: |
          echo "ここに言語ごとのビルド処理を記述"

      - name: Deploy to Azure Functions
        uses: Azure/functions-action@v1
        with:
          app-name: ${{ env.AZURE_FUNCTIONAPP_NAME }}
          package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}

実際には、.NET、Java、Node.js、Python、PowerShell など、言語ごとにセットアップアクションやビルドコマンドが変わります。公式テンプレートをそのままコピーするだけでなく、自社のランタイムバージョン、パッケージパス、テスト実行、承認フローに合わせて調整してください。

影響範囲:開発者、Azure 管理者、セキュリティ担当の全員に関係する

この変更・確認ポイントは、単に Azure Functions の開発者だけに関係するものではありません。GitHub Actions から Azure にデプロイする以上、リポジトリ権限、Azure RBAC、Secrets、ホスティングプラン、監視運用まで影響します。

対象者影響範囲確認すべき内容
開発者ワークフロー YAML、ビルド、テストpackage のパス、言語バージョン、依存関係の固定
Azure 管理者Function App、ホスティングプラン、認証Flex Consumption、Consumption、Dedicated などの違い
セキュリティ担当GitHub Secrets、OIDC、発行プロファイル長期シークレットを減らし、最小権限にする
運用担当デプロイ監視、障害時復旧ロールバック手順、ヘルスチェック、アラート
グローバル運用担当複数リージョン、ソブリンクラウドazure/login の environment や audience の指定要否

GitHub Actions 公式リポジトリでは、Azure Functions action の認証方式として OIDC、サービスプリンシパル、発行プロファイルが説明されています。このうち OIDC は推奨方式として扱われ、ユーザー割り当てマネージド ID と RBAC を使って、GitHub 側に長期シークレットを持たせずに Azure へ認証できます。(GitHub)

認証方式は本番運用の最重要ポイント

Azure Functions を GitHub Actions からデプロイする場合、最も注意すべきなのは認証方式です。Microsoft Learn の手順では発行プロファイルを GitHub Secrets に保存する方法が案内されていますが、発行プロファイルは Azure リソースへアクセスできる重要な資格情報であり、安全に保管する必要があります。(Microsoft Learn)

一方で、Azure/functions-action 側の最新の考え方では、OIDC が推奨方式として説明されています。発行プロファイルは GitHub にユーザー名とパスワード相当の情報を保存し、HTTP Basic 認証で scm エンドポイントへアクセスするため、本番環境では優先度を下げるのが現実的です。(GitHub)

認証方式向いている場面注意点
OIDC本番、複数環境、セキュリティ重視の組織ユーザー割り当てマネージド ID、フェデレーション資格情報、RBAC 設計が必要
ユーザー割り当て IDAzure portal の Deployment Center から構成する場合GitHub リポジトリ、ブランチ、Azure 側権限の対応を明確にする
サービスプリンシパル既存の自動化資産がある場合クライアントシークレットのローテーション管理が必要
発行プロファイル検証環境、簡易セットアップGitHub Secrets への保存、Basic 認証の有効化、漏えい時の影響に注意
Basic 認証既存手順の維持SCM Basic Auth Publishing Credentials を有効にする必要があり、長期利用は慎重に判断する

既存の Function App に GitHub Actions を追加する場合、Azure portal の Deployment Center では、GitHub をソースとして選び、認証設定でユーザー割り当て ID または Basic 認証資格情報を選択できます。保存前に追加されるワークフローファイルをプレビューできるため、管理者はその場で YAML のデプロイ先、ブランチ、認証方式を確認してください。(Microsoft Learn)

Azure portal、CLI、手動テンプレートの使い分け

GitHub Actions ワークフローは、主に3つの方法で作成できます。どれが正解というより、組織の管理レベルに合わせて選ぶのが重要です。

作成方法向いているケースメリット注意点
Azure portal初回構成、既存 Function App への追加GUI でリポジトリ、ブランチ、認証を選べる生成された YAML を必ずレビューする
Azure CLI標準化、自動化、複数環境への展開コマンド化しやすいGitHub 認証や権限の準備が必要
GitHub テンプレート開発チーム主導の導入リポジトリ側で完結しやすいAzure 側の認証・権限設計を別途確認する
手動 YAML高度な CI/CD、承認フロー、テスト統合柔軟性が高いテンプレートとの差分管理が必要

Azure CLI では、次のようなコマンドでワークフロー構成を追加できます。公式手順では、このコマンドにより適切なテンプレートから YAML が生成され、/.github/workflows/ に保存され、発行プロファイルも GitHub Secrets に追加されます。(Microsoft Learn)

az functionapp deployment github-actions add \
  --repo "githubUser/githubRepo" \
  -g MyResourceGroup \
  -n MyFunctionapp \
  --login-with-github

ただし、本番環境では「コマンドが成功したか」だけで完了にしないでください。生成された YAML を確認し、次の項目をレビューします。

  • AZURE_FUNCTIONAPP_NAME が本番・検証・開発のどれを指しているか
  • AZURE_FUNCTIONAPP_PACKAGE_PATH がリポジトリ内の正しいプロジェクトを指しているか
  • main への push だけで本番反映されないか
  • テストや静的解析がデプロイ前に実行されているか
  • GitHub Environment の承認や保護ルールを使うべきか
  • 認証が OIDC、ユーザー割り当て ID、発行プロファイルのどれか

ホスティングプラン別にデプロイ方式が変わる

Azure Functions は、ホスティングプランによってデプロイの挙動が変わります。GitHub Actions の YAML をコピーしても、プランに合っていなければ、デプロイ失敗や実行時エラーの原因になります。

公式ドキュメントでは、Flex Consumption plan は One deploy、Windows の Consumption plan は Zip deploy、Linux の Consumption plan は外部パッケージ URL を使うなど、プランごとの違いが示されています。また、Linux Consumption plan でアプリを実行する機能は廃止予定であることも明記されています。(Microsoft Learn)

ホスティングプラン主なデプロイ方式GitHub Actions での注意点
Flex ConsumptionOne deployremote-build、sku、復旧手順を確認する
Consumption WindowsZip deployWindows 前提のテンプレート、ランタイム対応を確認する
Consumption Linux外部パッケージ URL廃止予定を踏まえ、Flex Consumption への移行を検討する
Elastic PremiumZip deployスロットやネットワーク要件を含めて設計する
Dedicated App ServiceZip deployApp Service 側の構成、スロット、権限を確認する

Flex Consumption plan では、発行プロファイルで認証する場合に sku: flexconsumption が必要です。さらに、remote-build: true を使う場合、Flex Consumption では Oryx build がリモートビルド中に常に実行されるため、scm-do-build-during-deployment や enable-oryx-build は設定しないよう案内されています。(Microsoft Learn)

Linux Consumption plan 利用中なら移行期限を必ず確認する

GitHub Actions 連携そのものに対して、今回の公式情報で一律の移行期限が示されたわけではありません。ただし、Azure Functions のホスティングプランには重要な期限があります。

Microsoft Learn では、Linux の Consumption plan で実行されている Azure Functions v3 ランタイムのアプリは、2026年9月30日以降停止すると説明されています。また、Linux Consumption plan で Function App をホストするオプションは 2028年9月30日に廃止予定であり、対象アプリは Flex Consumption plan への移行が推奨されています。(Microsoft Learn)

対象期限対応
Linux Consumption plan 上の v3 ランタイム2026年9月30日以降停止v4 ランタイムへ移行
Linux Consumption plan のホスティング2028年9月30日廃止予定Flex Consumption plan への移行を計画
Windows Consumption plan現時点で同じ影響は明記されていない継続監視しつつ、将来移行を検討
GitHub Actions 連携一律の移行期限は明記なし認証、YAML、復旧設計を見直す

ここで重要なのは、ホスティング移行と CI/CD 移行を別々に進めないことです。Flex Consumption plan へ移行するなら、GitHub Actions のパラメーター、ロールバック手順、アプリ設定の管理方式も同時に変更対象になります。

Flex Consumption plan ではロールバック手順を事前に決める

Flex Consumption plan で悪いデプロイが入った場合、公式ガイドでは主に3つの復旧方法が示されています。

復旧方法使う場面特徴
以前の成功ワークフローを再実行正常な過去バージョンがある最も速いが、依存関係や Secrets は再実行時点の状態に影響される
git revert して push壊したコミットを戻したいGit 履歴を前に進めながら修正できる
hotfix commit を push原因が分かっている修正内容をレビュー・テストできるが時間がかかる

公式ガイドでは、過去の成功 run を再実行すると、その run をトリガーした元の commit SHA がチェックアウトされ、コードと設定ファイルが再ビルド・再デプロイされると説明されています。ただし、元のバイナリアーティファクトをそのまま再利用するわけではないため、依存パッケージが取得可能であること、lock ファイルで再現性を確保していることが重要です。(Microsoft Learn)

また、再実行では GitHub Secrets やパイプライン変数は再実行時点の値で解決されます。つまり、シークレットをローテーションした後に古い run を再実行すると、当時のシークレットではなく現在の値が使われます。この挙動は、障害時の切り戻し手順に必ず書いておくべきです。(Microsoft Learn)

アプリ設定をコードと一緒に管理しないと、完全な復旧は難しい

Azure Functions の障害復旧でよくある失敗は、コードだけ GitHub で管理し、アプリ設定は Azure portal で手動管理しているケースです。この状態では、GitHub Actions の過去 run を再実行しても、コードは戻せますが、設定の差分までは安全に戻せません。

Flex Consumption の復旧ガイドでは、完全なロールバックを行うにはアプリ設定をソース管理し、デプロイの一部として適用する必要があると説明されています。設定管理の方法として、ワークフロー内で JSON を使って app settings を適用する方法と、Bicep で siteConfig.appSettings を宣言する方法が示されています。(Microsoft Learn)

管理方法向いている環境メリット注意点
JSON + Azure CLI小規模、導入初期始めやすい未宣言設定の削除や漏れに注意
Bicep本番、複数環境、IaC 運用drift 検出やレビューに向くBicep の設計・運用スキルが必要
手動設定一時検証のみすぐ変更できる再現性が低く、本番復旧に不向き

本番環境では、FUNCTIONS_WORKER_RUNTIME、AzureWebJobsStorage、Application Insights、接続文字列、機能フラグなどを一覧化し、どれをコード管理し、どれを Key Vault 参照にするかを決めてください。特に接続情報は、可能な範囲でマネージド ID ベースの接続を使い、どうしてもシークレットが必要な場合は Key Vault 参照を使う構成が現実的です。(Microsoft Learn)

よくある設定ミスと回避策

GitHub Actions による Azure Functions デプロイでは、YAML の小さなミスが本番障害につながることがあります。以下は特に確認すべきポイントです。

ミス起きる問題回避策
package: . のままモノレポに適用不要なファイルまでデプロイされるFunction App のプロジェクトパスを明示する
発行プロファイルをローテーション後、GitHub Secret を更新しないデプロイ時に認証エラーが発生するローテーション手順に Secret 更新を含める
Flex Consumption で remote-build と Kudu/Oryx 関連設定を混在ビルド方式が不整合になるFlex 向けパラメーターを公式仕様に合わせる
Python Functions を Windows 前提で構成テンプレート選定を誤るPython は Linux テンプレートを選ぶ
slot-name を Flex Consumption で使うサポート外構成になるFlex では別アプリやローリング更新戦略を検討する
アプリ設定を portal 手動管理ロールバックしても設定が戻らないJSON、Bicep、IaC に寄せる
テストなしで main push 即デプロイ障害がそのまま本番へ反映PR、テスト、承認、環境保護を入れる

Azure/functions-action のパラメーター説明では、publish-profile をローテーションした場合、GitHub Secret も更新しないと /api/settings へのアクセスで 401 エラーが発生すると説明されています。respect-funcignore は既定で false のため、.funcignore を使って除外したいファイルがある場合は明示的に true を指定することも検討してください。(GitHub)

グローバル環境での確認ポイント

グローバル展開している企業では、単一リージョン・単一サブスクリプションだけを前提にしないことが重要です。Azure Functions と GitHub Actions の連携では、環境ごとに認証、ネットワーク、リージョン、監査要件が異なります。

特にソブリンクラウドや Azure Stack Hub で OIDC またはサービスプリンシパル認証を使う場合、azure/login の environment や audience パラメーターを含める必要がある場合があります。(GitHub)

観点確認内容
リージョンFlex Consumption plan の対応リージョン、既存アプリの配置
クラウド種別Public Azure、Azure Government、Azure China、Azure Stack Hub
認証OIDC の federation 設定、RBAC スコープ、ユーザー割り当て ID
ネットワークVNet 統合、Private Endpoint、GitHub-hosted runner からの到達性
監査GitHub Actions の実行履歴、Azure Activity Log、Application Insights
権限分離開発、検証、本番で GitHub Environment と Azure リソースを分ける

大規模環境では、1つの YAML を全環境で共有するより、共通テンプレートと環境別パラメーターを分けるほうが安全です。たとえば、dev は自動デプロイ、staging はテスト後に自動、production は GitHub Environment の承認後に実行、といった段階的な設計にします。

管理者が今すぐ確認すべきチェックリスト

まずは、既存の Azure Functions と GitHub Actions の棚卸しから始めてください。特に Linux Consumption plan、発行プロファイル認証、本番直結の push トリガーがある環境は優先度が高いです。

優先度確認項目判断基準
高Linux Consumption plan の利用有無2028年9月30日の廃止予定に向けて移行計画があるか
高v3 ランタイムの利用有無Linux Consumption では 2026年9月30日以降停止の影響を受けないか
高認証方式本番で発行プロファイルや Basic 認証に依存していないか
高GitHub Secrets発行プロファイル、サービスプリンシパル秘密情報が適切に管理・ローテーションされているか
中YAML のデプロイ先本番 Function App 名、ブランチ、パッケージパスが正しいか
中Flex Consumption パラメーターsku、remote-build、不要な Kudu/Oryx 設定を確認したか
中アプリ設定portal 手動変更ではなく、コードまたは IaC で管理しているか
中ロールバック手順過去 run の再実行、git revert、hotfix の手順が文書化されているか
低テンプレート差分公式テンプレートの更新を定期的に確認しているか

実務での推奨対応

これから新しく Azure Functions の CI/CD を作るなら、OIDC 認証、環境別ブランチまたは GitHub Environment、デプロイ前テスト、アプリ設定のコード管理を前提に設計するのが安全です。検証環境であれば発行プロファイルから始めることもできますが、その場合でも本番導入前に OIDC へ切り替える計画を立てておくべきです。

既に GitHub Actions でデプロイしている場合は、次の順序で見直すと効率的です。

  1. すべての Function App のホスティングプラン、OS、ランタイムを一覧化する
  2. Linux Consumption plan と v3 ランタイムを優先的に抽出する
  3. GitHub Actions の YAML、Secrets、認証方式を確認する
  4. 本番デプロイに PR、テスト、承認が入っているか確認する
  5. Flex Consumption plan では復旧ガイドに沿ってロールバック手順を作る
  6. アプリ設定を JSON、Bicep、Terraform などで管理する方針を決める
  7. 直近の成功 run を使った復旧訓練を行う

Azure Functions の GitHub Actions 連携は、単に「push したら自動でデプロイできる」仕組みではありません。認証を安全にし、ホスティングプランごとの違いを理解し、失敗時に戻れる CI/CD として設計して初めて、本番運用で安心して使えます。今回の確認では、YAML の有無だけでなく、OIDC への移行余地、Flex Consumption plan の復旧手順、Linux Consumption plan の期限対応までまとめて点検してください。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次