Azure DevOps を使用した継続的デリバリー

Azure Pipelines を使用して、関数を Azure Functions アプリに自動的にデプロイできます。

パイプラインを定義するには、次の 2 つのオプションがあります。

  • YAML ファイル:YAML ファイルは、パイプラインを記述します。 このファイルには、ビルド ステップ セクションとリリース セクションが含まれている場合があります。 YAML ファイルは、アプリと同じリポジトリにある必要があります。
  • テンプレート:テンプレートは、アプリをビルドまたはデプロイする既製のタスクです。

YAML ベースのパイプライン

YAML ベースのパイプラインを作成するには、まずアプリをビルドしてから、アプリをデプロイします。

アプリの構築

Azure Pipelines でアプリをビルドする方法は、アプリのプログラミング言語によって異なります。 言語ごとにデプロイ成果物を作成するための固有のビルド ステップがあります。 デプロイ成果物は、Azure でFunction App をデプロイするために使用されます。

次のサンプルを使用して、.NET アプリをビルドする YAML ファイルを作成できます。

pool:
      vmImage: 'VS2017-Win2016'
steps:
- script: |
    dotnet restore
    dotnet build --configuration Release
- task: DotNetCoreCLI@2
  inputs:
    command: publish
    arguments: '--configuration Release --output publish_output'
    projects: '*.csproj'
    publishWebProjects: false
    modifyOutputPath: false
    zipAfterPublish: false
- task: ArchiveFiles@2
  displayName: "Archive files"
  inputs:
    rootFolderOrFile: "$(System.DefaultWorkingDirectory)/publish_output"
    includeRootFolder: false
    archiveFile: "$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip"
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip'
    artifactName: 'drop'

アプリをデプロイする

ホストしている OS によっては、YAML ファイルに次の YAML サンプルのいずれかを含める必要があります。

Windows Function App をデプロイするには、次のスニペットを使用します。

steps:
- task: AzureFunctionApp@1
  inputs:
    azureSubscription: '<Azure service connection>'
    appType: functionApp
    appName: '<Name of function app>'
    #Uncomment the next lines to deploy to a deployment slot
    #deployToSlotOrASE: true
    #resourceGroupName: '<Resource Group Name>'
    #slotName: '<Slot name>'

テンプレート ベースのパイプライン

Azure DevOps ではテンプレートは、アプリをビルドまたはデプロイするタスクの定義済みのグループです。

アプリの構築

Azure Pipelines でアプリをビルドする方法は、アプリのプログラミング言語によって異なります。 言語ごとにデプロイ成果物を作成するための固有のビルド ステップがあります。 デプロイ成果物は、Azure でFunction App を更新するために使用されます。

新しいビルド パイプラインを作成するときに、組み込みのビルド テンプレートを使用するには、 [従来のエディターを使用する] を選択して、デザイナー テンプレートを使用してパイプラインを作成します。

Azure Pipelines の従来のエディターを選択する

コードのソースを構成したら、Azure Functions のビルド テンプレートを検索します。 お使いのアプリの言語に一致するテンプレートを選択します。

Azure Functions のビルド テンプレートを選択する

場合によっては、ビルド成果物に特定のフォルダー構造があります。 [Prepend root folder name to archive paths](アーカイブ パスの前にルート フォルダー名を付加する) チェック ボックスをオンにする必要がある場合があります。

ルート フォルダー名の前に付加するオプション

JavaScript アプリ

お使いの JavaScript アプリに Windows ネイティブ モジュールへの依存関係がある場合は、エージェント プールのバージョンを Hosted VS2017 に更新する必要があります。

エージェント プールのバージョンを更新する

アプリをデプロイする

新しいリリース パイプラインを作成するときに、Azure Functions のリリース テンプレートを検索します。

Azure Functions のリリース テンプレートを検索する

リリース テンプレートでは、デプロイ スロットへのデプロイはサポートされていません。

Azure CLI を使用してビルド パイプラインを作成する

Azure でビルド パイプラインを作成するには、az functionapp devops-pipeline create コマンドを使用します。 ビルド パイプラインは、リポジトリに加えられたコード変更をビルドしてリリースするために作成されます。 このコマンドにより、ビルドとリリース パイプラインを定義し、それをリポジトリにコミットする新しい YAML ファイルが生成されます。 このコマンドの前提条件は、コードの場所によって異なります。

  • コードが GitHub にある場合:

    • サブスクリプションへの 書き込み アクセス許可が必要です。

    • Azure DevOps のプロジェクト管理者である必要があります。

    • 十分なアクセス許可を持つ GitHub 個人用アクセス トークン (PAT) を作成するためのアクセス許可が必要です。 詳細については、GitHub PAT アクセス許可の要件に関するセクションを参照してください。

    • 自動生成された YAML ファイルをコミットできるように、GitHub リポジトリのメイン ブランチにコミットするためのアクセス許可が必要です。

  • コードが Azure Repos にある場合:

    • サブスクリプションへの 書き込み アクセス許可が必要です。

    • Azure DevOps のプロジェクト管理者である必要があります。

次のステップ