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.

入力

Azure サブスクリプション を する
string. 必須。

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


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

Azure Web アプリの種類を指定します。


appName - アプリ名の
string. 必須。

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


スロットまたは App Service Environment にデプロイする
boolean. 随意。 appType != ""するときに使用します。 既定値: false.

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


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

デプロイ ターゲットがデプロイ スロットまたは Azure App Service Environment である場合は、リソース グループ名が必要です。
上記で示した 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などです。


カスタム配置フォルダー を する
string. 随意。 package EndsWith .warするときに使用します。

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


ランタイム スタック の
string. 随意。 appType = webAppLinuxするときに使用します。

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


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 アプリ アプリケーションの設定を指定します (例: -Port 5000-RequestTimeout 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.

アプリの 展開方法 を選択します。 使用可能な値は、自動、zipDeploy、および runFromPackageです。


タスク コントロールのオプション

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

出力変数

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

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

備考

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

デプロイ方法

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

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

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

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

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

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

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

Kudu REST API

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

Zip デプロイ

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

RunFromPackage

Zip 配置と同じ展開パッケージを作成します。 ただし、wwwroot フォルダーにファイルをデプロイする代わりに、パッケージ全体が Azure Functions ランタイムによってマウントされます。 このオプションを使用すると、wwwroot フォルダー内のファイルは読み取り専用になります。 詳細については、「パッケージ ファイルから 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 を生成します。

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

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

エラー: msBuild パッケージの種類では、zip 配置オプションを使用した発行はサポートされていません

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

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

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

サービス接続を構成する方法

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

Application Insights を使用して Web ジョブのデプロイを構成する方法

App Service にデプロイするときに、Application Insights を構成 し、を有効にしている場合は、も有効にする必要があります。 このオプションを有効にすると、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

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

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

指定しない場合、auto が既定値になります。

必要条件

要件 形容
パイプラインの種類 YAML、クラシック ビルド、クラシック リリース
実行日 エージェント、DeploymentGroup
の需要 何一つ
機能の このタスクは、ジョブ内の後続のタスクに対する要求を満たしていません。
コマンドの制限 任意
設定可能な変数 任意
エージェントのバージョン 2.209.0 以上
タスク カテゴリ 展開
要件 形容
パイプラインの種類 YAML、クラシック ビルド、クラシック リリース
実行日 エージェント、DeploymentGroup
の需要 何一つ
機能の このタスクは、ジョブ内の後続のタスクに対する要求を満たしていません。
コマンドの制限 任意
設定可能な変数 任意
エージェントのバージョン 2.104.1 以上
タスク カテゴリ 展開