AzureWebApp@1 - Azure Web App v1 タスク

このタスクでは、Linux または Windows 用の Azure Web アプリをデプロイします。

構文

# Azure Web App v1
# Deploy an Azure Web App for Linux or Windows.
- task: AzureWebApp@1
  inputs:
    azureSubscription: # string. Required. Azure subscription. 
    appType: # 'webApp' | 'webAppLinux'. Required. App type. 
    appName: # string. Required. App name. 
    #deployToSlotOrASE: false # boolean. Optional. Use when appType != "". Deploy to Slot or App Service Environment. Default: false.
    #resourceGroupName: # string. Required when deployToSlotOrASE = true. Resource group. 
    #slotName: 'production' # string. Required when deployToSlotOrASE = true. Slot. Default: production.
    package: '$(System.DefaultWorkingDirectory)/**/*.zip' # string. Required. Package or folder. Default: $(System.DefaultWorkingDirectory)/**/*.zip.
    #customDeployFolder: # string. Optional. Use when package EndsWith .war. Custom Deploy Folder. 
    #runtimeStack: # string. Optional. Use when appType = webAppLinux. Runtime stack. 
    #startUpCommand: # string. Optional. Use when appType = webAppLinux. Startup command. 
  # Application and Configuration Settings
    #customWebConfig: # string. Optional. Use when appType != webAppLinux && package NotEndsWith .war. Generate web.config parameters for Python, Node.js, Go and Java apps. 
    #appSettings: # string. App settings. 
    #configurationStrings: # string. Configuration settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Deployment method. Default: auto.
# Azure Web App v1
# Deploy an Azure Web App for Linux or Windows.
- task: AzureWebApp@1
  inputs:
    azureSubscription: # string. Required. Azure subscription. 
    appType: # 'webApp' | 'webAppLinux'. Required. App type. 
    appName: # string. Required. App name. 
    #deployToSlotOrASE: false # boolean. Optional. Use when appType != "". Deploy to Slot or App Service Environment. Default: false.
    #resourceGroupName: # string. Required when deployToSlotOrASE = true. Resource group. 
    #slotName: 'production' # string. Required when deployToSlotOrASE = true. Slot. Default: production.
    package: '$(System.DefaultWorkingDirectory)/**/*.zip' # string. Required. Package or folder. Default: $(System.DefaultWorkingDirectory)/**/*.zip.
    #runtimeStack: # string. Optional. Use when appType = webAppLinux. Runtime stack. 
    #startUpCommand: # string. Optional. Use when appType = webAppLinux. Startup command. 
  # Application and Configuration Settings
    #customWebConfig: # string. Optional. Use when appType != webAppLinux && package NotEndsWith .war. Generate web.config parameters for Python, Node.js, Go and Java apps. 
    #appSettings: # string. App settings. 
    #configurationStrings: # string. Configuration settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Deployment method. Default: auto.

入力

azureSubscription - Azure サブスクリプション
string. 必須です。

デプロイの Azure Resource Manager サブスクリプション接続を指定します。


appType - アプリの種類
string. 必須です。 使用できる値: webApp (Windows 上の Web アプリ)、 webAppLinux (Linux 上の Web アプリ)。

Azure Web App の種類を指定します。


appName - アプリ名
string. 必須です。

既存のAzure App Serviceの名前を指定します。 選択したアプリの種類に基づくアプリ サービスのみが一覧表示されます。


deployToSlotOrASE - スロットまたはApp Service Environmentにデプロイする
boolean. 省略可能。 の場合は appType != ""を使用します。 既定値: false

既存のデプロイ スロットまたはAzure App Service環境にデプロイするオプションを選択します。
どちらのターゲットの場合も、タスクにはリソース グループ名が必要です。
デプロイ ターゲットがスロットの場合、既定値は運用スロットです。 その他の既存のスロット名も指定できます。
デプロイ ターゲットがAzure App Service環境の場合は、スロット名を "production" のままにして、リソース グループ名を指定します。


resourceGroupName - リソース グループ
string. deployToSlotOrASE = true の場合に必要です。

デプロイ ターゲットがデプロイ スロットまたはAzure App Service環境である場合は、リソース グループ名が必要です。
上記のAzure App Serviceを含む Azure リソース グループを指定します。


slotName - スロット
string. deployToSlotOrASE = true の場合に必要です。 既定値: production

運用スロットを除く既存のスロットを指定します。


package - パッケージまたはフォルダー
string. 必須です。 既定値: $(System.DefaultWorkingDirectory)/**/*.zip

MSBuild によって生成されたApp Serviceコンテンツ、圧縮 zip ファイル、または war ファイルを含むパッケージまたはフォルダーへのファイル パス。 変数 ( ビルド | リリース) とワイルドカードがサポートされています。 たとえば、$(System.DefaultWorkingDirectory)/**/*.zip または $(System.DefaultWorkingDirectory)/**/*.war です。


customDeployFolder - カスタム配置フォルダー
string. 省略可能。 の場合は package EndsWith .warを使用します。

展開するカスタム フォルダー名を指定します。
フィールドが空の場合、パッケージは に <appname>.azurewebsites.net/<warpackagename>展開されます。
ROOT を入力すると、パッケージは に <appname>.azurewebsited.netデプロイされます。
他のすべてのインスタンスでは、 に <appname>.azurewebsited.net/<customWarName>デプロイされます。


runtimeStack - ランタイム スタック
string. 省略可能。 の場合は appType = webAppLinuxを使用します。

Linux 上の Web アプリには、アプリケーションを発行するための 2 つの異なるオプションが用意されています。カスタム イメージデプロイ (Web App for Containers) と組み込みのプラットフォーム イメージを使用したアプリのデプロイ (Linux 上の Web アプリ)。 このパラメーターは、タスクで Linux Web アプリ がアプリの種類として選択されている場合にのみ使用できます。


startUpCommand - スタートアップ コマンド
string. 省略可能。 の場合は appType = webAppLinuxを使用します。

起動コマンドを指定します。
例:
dotnet run
dotnet filename.dll.


customWebConfig - Python、Node.js、Go、Java アプリの web.config パラメーターを生成する
string. 省略可能。 の場合は appType != webAppLinux && package NotEndsWith .warを使用します。

標準 web.config が生成され、アプリケーションに存在しない場合はAzure App Serviceにデプロイされます。 web.config の値はアプリケーション フレームワークによって異なり、編集できます。 たとえば、node.js アプリケーションの場合、web.config にはスタートアップ ファイルとiis_nodeモジュール値が含まれます。 この編集機能は、 生成された web.configに対してのみ使用されます。


appSettings - アプリの設定
string.

構文-key valueを使用して Web アプリ アプリケーションの設定を指定します (例:-RequestTimeout 5000-Port 5000-WEBSITE_TIME_ZONE )。 スペースを含む値を二重引用符で囲みます (例: "Eastern Standard Time")。


configurationStrings - 構成設定
string.

構文 -key value を使用して Web アプリの構成設定を指定します (例: -phpVersion 5.6-linuxFxVersion: node|6.11)。 スペースを含む値を二重引用符で囲みます。


deploymentMethod - デプロイ方法
string. appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar の場合に必要です。 使用できる値: auto (自動検出)、 zipDeploy (Zip 配置)、 runFromPackage (パッケージから実行)。 既定値: auto

アプリの デプロイ方法 を選択します。 許容される値は 、autozipDeployrunFromPackage です


タスク制御オプション

すべてのタスクには、タスク入力に加えて制御オプションがあります。 詳細については、「 コントロール オプションと一般的なタスク プロパティ」を参照してください。

出力変数

このタスクでは、ダウンストリームのステップ、ジョブ、およびステージで使用できる次の 出力変数を定義します。

AppServiceApplicationUrl
選択したAzure App Serviceのアプリケーション URL。

注釈

このタスクを使用して、Web アプリケーションをAzure App Serviceにデプロイします。

デプロイ方法

このタスクでは、いくつかのデプロイ方法を使用できます。 Auto は既定のオプションです。

デザイナー タスクでパッケージ ベースの展開オプションを変更するには、[ 追加の展開オプション] を 展開し、[ 配置方法の選択] を有効にします。

タスクは、Azure App Serviceと Azure Pipelines エージェントの種類に基づいて、適切なデプロイ テクノロジを選択します。 このタスクで使用されるさまざまなデプロイ テクノロジは次のとおりです。

  • Kudu REST API
  • ZIP デプロイ
  • RunFromPackage

既定では、タスクは、入力パッケージ、アプリ サービスの種類、およびエージェント OS を指定して、適切なデプロイ テクノロジの選択を試みます。

  • App Service の種類が Linux App 上の Web アプリの場合は、 Zip Deploy を使用します
  • War ファイルが指定されている場合は、 War Deploy を使用します
  • Jar ファイルが指定されている場合は、パッケージから実行を使用します
  • その他の場合は、 Zip から実行 (Zip デプロイ経由) を使用します

Windows 以外のエージェント (任意のアプリ サービスの種類) では、タスクは Kudu REST API を 使用して Web アプリをデプロイします。

Kudu REST API

Kudu REST API は 、ターゲットが Windows 上の Web アプリ、Linux 上の Web アプリ (組み込みソース)、または関数アプリである場合に、Windows または Linux オートメーション エージェントで動作します。 このタスクでは、ファイルを Azure App Service にコピーするために Kudu を使用します。

ZIP デプロイ

選択したパッケージまたはフォルダーの .zip 展開パッケージを作成します。 その後、ファイルの内容は、Azure App Serviceの関数アプリの wwwroot フォルダーにデプロイされます。 このオプションでは、wwwroot フォルダー内のすべての既存のコンテンツが上書きされます。 詳細については、「Azure Functions の zip デプロイ」を参照してください。

RunFromPackage

Zip Deploy と同じ展開パッケージを作成します。 ただし、wwwroot フォルダーにファイルをデプロイする代わりに、パッケージ全体が Azure Functions ランタイムによってマウントされます。 このオプションを使用すると、wwwroot フォルダー内のファイルは読み取り専用になります。 詳細については、「Run your Azure Functions from a package file」(パッケージ ファイルから Azure Functions を実行する) を参照してください。

エラー: Azure のアクセス トークンをフェッチできませんでした。 使用されているサービス プリンシパルが有効であり、有効期限が切れていないか確認します。

このタスクでは、サービス接続のサービス プリンシパルを使用して Azure で認証します。 サービス プリンシパルの有効期限が切れているか、App Service に対するアクセス許可がない場合、このエラーのためにタスクが失敗します。 使用されているサービス プリンシパルが有効であることと、アプリの登録に存在することを確認してください。 詳細については、ロールベースのアクセス制御を使った Azure サブスクリプション リソースへのアクセスの管理に関する記事を参照してください。 このブログ記事には、サービス プリンシパル認証の使用に関する詳細も掲載されています。

SSL エラー

App Service で証明書を使用する場合、証明書は信頼できる証明機関が署名したものである必要があります。 Web アプリで証明書検証エラーが返された場合は、自己署名証明書を使用している可能性があります。 VSTS_ARM_REST_IGNORE_SSL_ERRORS という名前の変数をビルドまたはリリース パイプラインの値 true に設定して、エラーを解決します。

リリースが長い時間ハングし、失敗する

この問題は、App Service プランの容量不足によるものである可能性があります。 この問題を解決するには、App Service インスタンスをスケールアップして、使用できる CPU、RAM、およびディスク領域を増やすか、別の App Service プランを試してください。

5xx エラー コード

5xx エラーが表示される場合は、Azure サービスの状態を確認します

Azure 関数が突然動作を停止しました

前回のデプロイから 1 年以上経過した場合、Azure Functionsが突然動作しなくなる可能性があります。 "deploymentMethod" で "RunFromPackage" を使用して展開する場合、有効期限が 1 年の SAS が生成され、アプリケーション構成で "WEBSITE_RUN_FROM_PACKAGE" の値として設定されます。 Azure Functionsは、この SAS を使用して関数の実行のためにパッケージ ファイルを参照するため、SAS の有効期限が切れている場合、関数は実行されません。 この問題を解決するには、もう一度デプロイして、有効期限が 1 年の SAS を生成します。

エラー: 指定されたパターンのパッケージが見つかりません

タスクに示されているパッケージが、ビルドまたは前のステージで成果物として発行され、現在のジョブでダウンロードされているかどうかを確認します。

エラー: zip デプロイ オプションによる公開は、msBuild パッケージの種類ではサポートされていません

MSBuild タスクを使って (既定の引数で) 作成された Web パッケージには、Web 配置でのみ正しくデプロイできる入れ子になったフォルダー構造があります。 これらのパッケージをデプロイするために publish-to-zip デプロイ オプションを使うことはできません。 パッケージ構造を変換するには、次の手順を実行してください。

  1. [ソリューションのビルド] タスクで、MSBuild 引数/p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl="$(System.DefaultWorkingDirectory)\\WebAppContent" に変更します。

    [ソリューションのビルド] の値を示すスクリーンショット。

  2. [アーカイブ] タスクを追加し、次のように値を変更します。

    1. [アーカイブするルート フォルダーまたはファイル]$(System.DefaultWorkingDirectory)\\WebAppContent に変更します。

    2. [アーカイブ パスの先頭にルート フォルダー名を追加] チェック ボックスを解除します。

      [アーカイブ] の値を示すスクリーンショット。

FAQ

タスクと AzureRmWebAppDeployment タスクの違いはAzureWebApp何ですか?

Azure Web App タスク (AzureWebApp) は、Azure Web アプリにデプロイする最も簡単な方法です。 既定では、デプロイは Azure Web アプリのルート アプリケーションに対して行われます。

Azure App Serviceデプロイ タスク (AzureRmWebAppDeployment) では、次のようなより多くのカスタム シナリオを処理できます。

注意

また、Azure Pipelines で使用する個別のファイル変換タスクでは、ファイル変換と変数の置換もサポートされています。 ファイル変換タスクを使用することで、任意の構成とパラメーターの各ファイルにファイル変換と変数の置換を適用できます。

Windows への Web アプリのデプロイには成功するが、アプリが機能しない

アプリに web.config が存在しないことが原因である可能性があります。 ソースに web.config ファイルを追加するか、 アプリケーションと構成の設定を使用してファイルを自動生成できます。

  • タスクをクリックし、[Python、 Node.js、Go、Java アプリの web.config パラメーターを生成する] に移動します。

    [web.config パラメーターの生成] ダイアログのスクリーンショット。

  • [その他] ボタンをクリック ... して、パラメーターを編集します。

    ドロップダウン ダイアログのスクリーンショット。

  • ドロップダウンからアプリケーションの種類を選択します。

  • [OK] をクリックします。 これにより、web.config の生成に必要な web.config パラメーターが設定されます。

App Service Environment (ASE) への Web アプリのデプロイが機能しない

  • Azure DevOps ビルド エージェントが ASE の内部 Load Balancer (ILB) と同じ VNET (サブネットが異なる場合がある) 上にあることを確認します。 こうすると、エージェントは Azure DevOps からコードをプルし、ASE にデプロイできるようになります。
  • Azure DevOps を使用している場合、エージェントはインターネットからアクセスできる必要はありませんが、Azure DevOps Service に接続するには送信アクセスのみが必要です。
  • Virtual Network でデプロイされた TFS または Azure DevOps Server を使用している場合は、エージェントを完全に分離することができます。
  • ビルド エージェントは、デプロイする必要がある Web アプリの DNS 構成で構成する必要があります。 Virtual Network内のプライベート リソースには Azure DNS にエントリがないため、これはエージェント コンピューター上のホストのファイルに追加する必要があります。
  • ASE 構成に自己署名証明書を使用する場合は、 -allowUntrusted MSDeploy のデプロイ タスクで オプションを設定する必要があります。 変数 VSTS_ARM_REST_IGNORE_SSL_ERRORS を に true設定することもお勧めします。 ASE 構成に証明機関からの証明書を使用する場合は、このようにする必要はありません。

サービス接続を構成するにはどうすればよいですか?

このタスクには、Azure Resource Manager サービス接続が必要です。

Application Insights を使用して Web ジョブのデプロイを構成するにはどうすればよいですか?

App Service にデプロイする際に、Application Insights が構成されていて、Remove additional files at destination を有効にしている場合は、Exclude files from the App_Data folder も有効にする必要があります。 このオプションを有効にすると、Application Insights 拡張機能が安全な状態に維持されます。 Application Insights の継続中の Web ジョブが App_Data フォルダーにインストールされているため、この手順が必要です。

App Service にデプロイする際にエージェントがプロキシの背後にある場合は、どのように構成する必要がありますか?

セルフホステッド エージェントに Web プロキシが必要な場合は、構成の際にエージェントにプロキシについて知らせることができます。 そうすれば、エージェントはそのプロキシを介して Azure Pipelines や Azure DevOps Server に接続することができます。 Web プロキシの背後でセルフホステッド エージェントを実行する方法についての詳細情報をご確認ください

Windows で実行されている Azure Web App Serviceに Web アプリケーションをデプロイする YAML スニペットの例を次に示します。

variables:
  azureSubscription: Contoso
  # To ignore SSL error uncomment the below variable
  # VSTS_ARM_REST_IGNORE_SSL_ERRORS: true

steps:

- task: AzureWebApp@1
  displayName: Azure Web App Deploy
  inputs:
    azureSubscription: $(azureSubscription)
    appName: samplewebapp
    package: $(System.DefaultWorkingDirectory)/**/*.zip

Linux に Web アプリをデプロイするには、 パラメーターを appType 追加し、 に設定します appType: webAppLinux

デプロイ方法を Zip Deploy として指定するには、 パラメーター を追加します deploymentMethod: zipDeploy。 このパラメーターでサポートされている、その他の値は runFromPackage です。

指定しない場合、 auto は既定値です。

要件

要件 説明
パイプラインの種類 YAML、クラシック ビルド、クラシック リリース
実行日 エージェント、DeploymentGroup
確認要求 なし
Capabilities このタスクは、ジョブ内の後続のタスクに対する要求を満たしていません。
コマンドの制限 Any
設定可能な変数 Any
エージェントのバージョン 2.104.1 以降
タスクのカテゴリ 配置