Azure Functions の継続的なデプロイ

Azure Functions を利用すると、App Service の継続的インテグレーションを使用して、関数アプリを簡単にデプロイできます。 Functions は、BitBucket、Dropbox、GitHub、および Visual Studio Team Services (VSTS) と統合されています。 これにより、関数コードの更新がこれらの統合されたサービスのいずれかを使用して行われるワークフローで、Azure へのデプロイをトリガーできるようになります。 Azure Functions に慣れていない場合は、「 Azure Functions の概要」から始めてください。

複数の頻繁に発生する投稿を統合する場合、継続的なデプロイはプロジェクトに最適なオプションとなります。 また、関数コードのソース管理を維持することもできます。 現在、次のデプロイ ソースがサポートされています。

デプロイは関数アプリごとに構成されます。 継続的なデプロイが有効になると、 ポータル内の関数コードへのアクセスは、 読み取り専用に設定されます。

継続的なデプロイの要件

継続的なデプロイを設定する前に、デプロイ ソースを構成し、そのデプロイ ソースに関数コードを追加する必要があります。 特定の関数アプリのデプロイで、各関数は名前付きサブディレクトリに存在します。その場合のディレクトリ名は、関数の名前です。

特定関数アプリのすべての関数のコードは、ホスト構成ファイルおよび 1 つまたは複数のサブフォルダーを含むルート フォルダーに格納され、次の例に示すように、各フォルダーには関数ごとのコードが含まれます。

wwwroot
 | - host.json
 | - mynodefunction
 | | - function.json
 | | - index.js
 | | - node_modules
 | | | - ... packages ...
 | | - package.json
 | - mycsharpfunction
 | | - function.json
 | | - run.csx

host.json ファイルにはランタイム固有の構成が含まれ、関数アプリのルート フォルダーに格納されています。 利用可能な設定に関する詳細については、WebJobs.Script リポジトリ wiki の host.json を参照してください。

各関数には、1 つまたは複数のコード ファイル、function.json 構成、およびその他の依存関係を含むフォルダーが割り当てられています。

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

既存の関数アプリの継続的なデプロイを構成するには、次の手順に従います。 この手順は、GitHub リポジトリとの統合を示しますが、Visual Studio Team Services またはその他のデプロイ サービスに対しても同様の手順が適用されます。

  1. Azure Portal の関数アプリで、[プラットフォーム機能][展開オプション] をクリックします。

    継続的なデプロイの設定

  2. 次に、[デプロイ] ブレードで [セットアップ] をクリックします。

    継続的なデプロイの設定

  3. [展開元] ブレードで、[ソースの選択] をクリックし、選択したデプロイ ソースの情報を入力して、[OK] をクリックします。

    デプロイ ソースの選択

継続的なデプロイを構成した後は、デプロイ ソース内のすべてのファイル変更が関数アプリにコピーされ、完全なサイトのデプロイがトリガーされます。 ソース内のファイルが更新されると、サイトは再デプロイされます。

デプロイ オプション

一般的なデプロイ シナリオを次に示します。

ステージング環境のデプロイの作成

関数アプリはデプロイ スロットをまだサポートしていません。 ただし、継続的インテグレーションを使用して、個別のステージング環境と運用環境のデプロイを管理できます。

ステージング環境のデプロイを構成し、使用するプロセスは、一般的には次のようになります。

  1. サブスクリプションで運用環境コードおよびステージング環境用の 2 つの関数アプリを作成します。

  2. 既にお持ちでない場合は、デプロイ ソースを作成します。 この例では、GitHub を使用します。

  3. 運用環境の関数アプリでは、前述の「継続的なデプロイの設定」の手順を完了し、GitHub リポジトリのマスター分岐にデプロイ分岐を設定します。

    デプロイ分岐の選択

  4. ステージング環境の関数アプリでこの手順を繰り返しますが、代わりに GitHub リポジトリ内のステージング環境の分岐を選択します。 デプロイ ソースが分岐をサポートしていない場合は、別のフォルダーを使用します。

  5. ステージング環境の分岐またはフォルダーでコードに更新プログラムを追加し、ステージング環境のデプロイでそれらの変更が反映されていることを確認します。

  6. テストした後、マージはステージング環境の分岐からマスター分岐に変更されます。 このマージにより、運用環境の関数アプリへのデプロイがトリガーされます。 デプロイ ソースが分岐をサポートしていない場合は、ステージング環境のフォルダーから運用環境のフォルダー内のファイルを上書きします。

継続的なデプロイへの既存の関数の移動

ポータル内で作成および保持した既存の関数がある場合は、FTP またはローカルの Git リポジトリを使用して、既存の関数コードをダウンロードする必要があります。その後、上記で説明したように継続的なデプロイを設定することができます。 これは関数アプリの App Service の設定で行うことができます。 ファイルをダウンロードした後は、選択した継続的なデプロイ ソースにアップロードできます。

注意

継続的インテグレーションを構成した後は、Functions のポータルでソース ファイルを編集することはできなくなります。

方法: デプロイ資格情報の構成

FTP またはローカル Git リポジトリで関数アプリからファイルをダウンロードする前に、サイトにアクセスするための資格情報を構成する必要があります。 資格情報は関数アプリ レベルで設定されます。 以下の手順に従って、Azure Portal でデプロイ資格情報を設定します。

  1. Azure Portal の関数アプリで、[プラットフォーム機能][デプロイ資格情報] をクリックします。

    ローカル デプロイ資格情報の設定

  2. ユーザー名とパスワードを入力し、 [保存]をクリックします。 これでこれらの資格情報を使用して、FTP または組み込みの Git リポジトリから関数アプリにアクセスできます。

方法: FTP を使用したファイルのダウンロード

  1. Azure Portal の関数アプリで、[プラットフォーム機能][プロパティ] をクリックし、FTP/デプロイ ユーザーFTP ホスト名、および FTPS ホスト名の値をコピーします。

    [FTP/デプロイ ユーザー] には、FTP サーバーに適切なコンテキストを提供するために、ポータルに表示されているとおり、アプリ名を含めて入力してください。

    デプロイ情報の取得

  2. FTP クライアントから、収集した接続情報を使用してアプリに接続し、関数のソース ファイルをダウンロードします。

方法: ローカルの Git リポジトリを使用したファイルのダウンロード

  1. Azure Portal の関数アプリで、[プラットフォーム機能][展開オプション] をクリックします。

    継続的なデプロイの設定

  2. 次に、[デプロイ] ブレードで [セットアップ] をクリックします。

    継続的なデプロイの設定

  3. [展開元] ブレードで [ローカル Git リポジトリ][OK] の順にクリックします。

  4. [プラットフォーム機能] で、[プロパティ] をクリックし、Git URL の値をメモします。

    継続的なデプロイの設定

  5. Git 対応のコマンド プロンプトまたはお気に入りの Git ツールを使用して、ローカル コンピューターにリポジトリを複製します。 Git clone コマンドは、次のようになります。

     git clone https://username@my-function-app.scm.azurewebsites.net:443/my-function-app.git
    
  6. 次の例のように、関数アプリからローカル コンピューター上のクローンにファイルをフェッチします。

     git pull origin master
    

    要求された場合は、構成されたデプロイ資格情報を入力します。