Azure Functions の継続的なデプロイ

Azure Functions を使用し、ソース管理の統合を使用してコードを継続的にデプロイできます。 ソース管理の統合を使用すると、コードの更新によって Azure へのデプロイがトリガーされるワークフローが可能になります。 Azure Functions を初めて使う場合は、まず「Azure Functions の概要」を参照してください。

複数の頻繁に発生する投稿を統合する場合、継続的なデプロイはプロジェクトに最適なオプションとなります。 継続的なデプロイを使用すると、コードに対して真実の 1 つの情報源が維持されるため、チームは簡単に共同作業できます。 次のソース コードの場所から、Azure Functions での継続的なデプロイを構成できます。

Azure の関数のデプロイの単位は関数アプリです。 関数アプリ内のすべての関数は同時にデプロイされます。 信頼できるソースが他の場所に設定されているため、継続的なデプロイが有効になった後、Azure portal での関数コードへのアクセスは読み取り専用として構成されます。

継続的なデプロイの要件

継続的なデプロイを成功させるには、ディレクトリ構造が、Azure Functions が期待する基本フォルダー構造との互換性を備えている必要があります。

特定の関数アプリ内のすべての関数のコードは、ホスト構成ファイルを含むルート プロジェクト フォルダーにあります。 host.json ファイルにはランタイム固有の構成が含まれています。このファイルは関数アプリのルート フォルダーにあります。 bin フォルダーには、関数アプリに必要なパッケージやその他のライブラリ ファイルが含まれています。 関数アプリが必要とする特定のフォルダー構造は、言語によって異なります。

Functions ランタイムのバージョン 2.x およびそれ以上では、関数アプリ内のすべての関数が同じ言語スタックを共有する必要があります。

注意

継続的なデプロイは、従量課金プランで実行されている Linux アプリではまだサポートされていません。

Azure App Service での GIT による継続的なデプロイ

既存の関数アプリの継続的なデプロイを構成するには、次の手順を実行します。 この手順は GitHub リポジトリとの統合を示しますが、Azure Repos またはその他のソース コード リポジトリに対しても同様の手順が適用されます。

  1. Azure portal の関数アプリで、 [管理者用センター] を選択し、 [GitHub] を選択してから、 [承認] を選択します。 GitHub が既に承認済みの場合は、 [続行] を選択し、次のステップをスキップします。

    Azure App Service Deployment Center

  2. GitHub で、 [Authorize AzureAppService]\(AzureAppService を承認する\) を選択します。

    Authorize Azure App Service

    GitHub パスワードを入力し、 [続行] を選択します。

  3. 次のビルド プロバイダーのいずれかを選択します。

    • App Service のビルド サービス:ビルドが不要な場合、または汎用ビルドが必要な場合に最適です。
    • Azure Pipelines (プレビュー) :ビルドをより細かく制御する必要がある場合に最適です。 このプロバイダーは現在プレビュー段階です。

    [続行] をクリックします。

  4. 指定したソース管理オプションに固有の情報を構成します。 GitHub では、 [Organization]\(組織\)[Repository]\(リポジトリ\) 、および [Branch]\(ブランチ\) の値を入力または選択する必要があります。 値は、お客様のコードの場所によって決まります。 その後、 [続行] を選択します。

    Configure GitHub

  5. すべての詳細を確認し、 [完了] を選択してデプロイ構成を完了します。

プロセスが完了すると、指定されたソースからのすべてのコードがアプリにデプロイされます。 その時点で、デプロイ ソースの変更により、Azure 内の関数アプリにそれらの変更をデプロイする処理がトリガーされます。

注意

継続的インテグレーションを構成した後は、Functions のポータルでソース ファイルを編集することはできなくなります。 最初にローカル コンピューターからコードを発行した場合は、関数アプリの WEBSITE_RUN_FROM_PACKAGE 設定を値 0 に変更することが必要になる場合があります。

次のステップ