Azure App 服務部署工作

Azure DevOps Services |Azure DevOps Server 2020 |Azure DevOps Server 2019

使用此工作來部署至 Azure 上的 App Services 範圍。 工作適用于執行 Windows、Linux 或 Mac 的跨平臺代理程式,並使用數種不同的基礎部署技術

工作適用于以 ASP.NETASP.NET CorePHPJAVAPythonGoNode.js為基礎的 Web 應用程式。

工作可用來部署至各種Azure App服務,例如:

工作的必要條件

必須在目的電腦中設定下列必要條件, (s) ,才能讓工作正常運作。

  • App Service 實例。 工作是用來將 Web 應用程式專案或 Azure Function 專案部署到現有的Azure App 服務實例,該實例必須先存在,才能執行工作。 您可以從Azure 入口網站建立App Service實例,並在該處設定。 或者,Azure PowerShell工作可用來執行AzureRM PowerShell 腳本來布建和設定 Web 應用程式。

  • Azure 訂用帳戶。 若要部署至 Azure,Azure 訂用帳戶必須 連結到管線。 工作無法與 Azure 傳統服務連線搭配使用,而且不會在工作的設定中列出這些連線。

參數描述
ConnectionType
(連線類型)
(必要) 選取要用來部署 Web 應用程式的服務連線類型。
預設值:AzureRM
連線
ServiceName

(Azure 訂用帳戶)
(如果 ConnectionType = AzureRM) 選取部署的 Azure Resource Manager訂用帳戶,則為必要專案。
引數別名: azureSubscription
PublishProfilePath
(發行設定檔路徑)
(如果 ConnectionType = PublishProfile) 包含發佈資訊的檔案路徑,則為必要專案。
預設值:$(System.DefaultWorkingDirectory)/**/*.pubxml
PublishProfilePassword
(發行設定檔密碼)
(如果 ConnectionType = PublishProfile) 設定檔的密碼,則為必要專案。 請考慮將密碼儲存在秘密變數中,並在這裡使用該變數。 範例:$ (密碼)
WebAppKind
(App Service類型)
(如果 ConnectionType = AzureRM) 從 Web 應用程式選擇Windows、Linux 上的 Web 應用程式、適用于容器的 Web 應用程式、函式應用程式、Linux 上的函式應用程式、適用于容器的函式應用程式及行動應用程式,則需要 (
預設值:webApp
引數別名: appType
WebAppName
(App Service名稱)
(如果 ConnectionType = AzureRM) Enter 或選取現有Azure App 服務的名稱,則為必要專案。 只會列出以所選應用程式類型為基礎的 App Services。
DeployTo
SlotOrASEFlag

(部署至位置或App Service 環境)
(選擇性) 選取選項以部署至現有的部署位置或Azure App 服務環境。 針對這兩個目標,工作需要資源組名。
如果部署目標是位置,則根據預設,部署會部署到 生產 位置。 您可以提供任何其他現有的位置名稱。
如果部署目標是Azure App 服務環境,請將位置名稱保留為生產環境,並只指定資源組名。
預設值:false
引數別名: deployToSlotOrASE
ResourceGroupName
(資源群組)
(如果 DeployToSlotOrASEFlag = true) 部署目標為部署位置或App Service環境時,需要資源組名。 輸入或選取包含上面指定之Azure App 服務的 Azure 資源群組。
SlotName
(位置)
(必要,如果 DeployToSlotOrASEFlag = true) Enter 或選取 生產 位置以外的現有位置。
預設值:生產環境
DockerNamespace
(登錄或命名空間)
(WebAppKind = webAppContainer 時的必要專案
或 WebAppkind = functionAppContainer) 特定登錄或命名空間的全域唯一最上層功能變數名稱。 注意:完整映射名稱的格式為: {registry 或 namespace}/{repository}:{tag}。 例如, myregistry.azurecr.io/nginx:latest
DockerRepository
(映射)
(WebAppKind = webAppContainer 時的必要專案
或 WebAppkind = functionAppContainer) 儲存容器映射的存放庫名稱。 注意: 完整映射名稱的格式為: {registry 或 namespace}/{repository}:{tag}。 例如, myregistry.azurecr.io/nginx:latest
DockerImageTag
(標籤)
(選擇性) 標籤是選擇性的,但登錄用來將版本資訊套用至 Docker 映射的機制。 注意: 完整映射名稱的格式為: {registry 或 namespace}/{repository}:{tag}。 例如, myregistry.azurecr.io/nginx:latest
VirtualApplication
(虛擬應用程式)
(選擇性) 指定已在Azure 入口網站中設定的虛擬應用程式名稱。 部署至網站根目錄時,不需要此選項。 虛擬應用程式必須先 設定 ,才能部署 Web 專案。
Package
(套件或資料夾)
(如果 ConnectionType = PublishProfile 或 WebAppKind = webApp、apiApp、functionApp、mobileApp、webAppLinux 或 functionAppLinux) 套件的檔案路徑,或包含MSBuild所產生的App Service內容的資料夾,或壓縮的 zip 或 war 檔案,則為必要專案。
支援建置變數發行變數) 和萬用字元。 例如,$(System.DefaultWorkingDirectory)/**/*.zip$(System.DefaultWorkingDirectory)/**/*.war
預設值:$(System.DefaultWorkingDirectory)/**/*.zip
引數別名: packageForLinux
RuntimeStack
(Runtime Stack)
(選擇性) 選取架構和版本。 這適用于適用于 Linux 的 WebApp。
RuntimeStackFunction
(Runtime Stack)
(選擇性) 選取架構和版本。 這適用于 Linux 上的函式應用程式。
StartupCommand
(啟動命令)
(選擇性) 輸入啟動命令。
ScriptType
(部署腳本類型)
(選擇性) 藉由提供在部署成功之後在Azure App 服務上執行的腳本來自訂部署。 選擇內嵌部署腳本或腳本檔案的路徑和名稱。 深入了解
InlineScript
(內嵌腳本)
(如果 ScriptType == 內嵌腳本) 要執行的腳本,則為必要專案。 您可以在這裡提供部署命令,每一行一個命令列一個。 請參閱此範例
ScriptPath
(部署腳本路徑)
(ScriptType == 檔案路徑) 要執行的腳本路徑和名稱。
Web
ConfigParameters

(為 Python、Node.js、Go 和 JAVA 應用程式產生web.config參數)
(選擇性) 如果應用程式沒有標準web.config,則會產生並部署到Azure App 服務。 web.config中的值可以編輯,而且會根據應用程式架構而有所不同。 例如,Node.js應用程式,web.config會有啟動檔案和iis_node模組值。 這項編輯功能僅適用于產生的web.config檔案。 深入了解
AppSettings
(應用程式設定)
(選擇性) 使用語法-key 值編輯 Web 應用程式應用程式設定。 包含空格的值必須以雙引號括住。 範例:-Port 5000 -RequestTimeout 5000-WEBSITE_TIME_ZONE「東部標準時間」。 若要提供兩個或多個索引鍵值,索引鍵值必須以空格分隔。 範例: -key1 「Value1」 -key2 「Value2」
ConfigurationSettings
(組態設定)
(選擇性) 使用語法 -key 值編輯 Web 應用程式組態設定。 包含空格的值必須以雙引號括住。 範例: -phpVersion 5.6 -linuxFxVersion:node|6.11
UseWebDeploy
(選取部署方法)
(選擇性) 如果未核取,工作會根據應用程式類型、套件格式和其他參數自動偵測最佳部署方法。 選取選項以檢視支援的部署方法,然後選擇一個用於部署應用程式的選項。
引數別名: enableCustomDeployment
DeploymentType
(部署方法)
(如果 UseWebDeploy == true) 選擇應用程式的部署方法,則為必要專案。
預設值:webDeploy
TakeAppOfflineFlag
(讓應用程式離線)
(選擇性) 選取此選項,在同步處理作業開始之前將app_offline.htm檔案放在根目錄中,讓Azure App 服務離線。 在同步處理成功完成之後,將會移除檔案。
預設值:true
SetParametersFile
(SetParameters 檔案)
(要使用的SetParameters.xml檔案選擇性 ) 位置。
RemoveAdditional
FilesFlag

(移除目的地) 的其他檔案
(選擇性) 選取選項,以刪除App Service套件或資料夾中沒有相符檔案之Azure App 服務上的檔案。
注意:這也會移除與此Azure App 服務上安裝之任何延伸模組相關的所有檔案。 若要避免這種情況,請設定 [ 從App_Data資料夾排除檔案 ] 核取方塊。
預設值:false
ExcludeFiles
FromAppDataFlag

(從App_Data資料夾排除檔案)
(選擇性) 選取選項以防止App_Data資料夾中的檔案部署至Azure App 服務或刪除。
預設值:true
AdditionalArguments
(其他引數)
(選擇性) 遵循 語法 -key:value的其他 Web Deploy 引數。 部署Azure App 服務時,將會套用這些專案。 範例: -disableLink:AppPoolExtension -disableLink:ContentExtension。其他範例
預設值: -retryAttempts:6 -retryInterval:10000
RenameFilesFlag
(重新命名鎖定的檔案)
(選擇性) 選取此選項可在Azure App 服務應用程式設定中啟用 MSDeploy 旗標MSDEPLOY_RENAME_LOCKED_FILES=1。 設定時,它可讓 MSDeploy 重新命名在應用程式部署期間鎖定的檔案。
預設值:true
XmlTransformation
(XML 轉換)
(選擇性) 將針對 .Release.config .{ 執行組態轉換EnvironmentName}.config*.config檔案。 組態轉換會在變數替代之前執行。 只有 Windows 平臺才支援 XML 轉換。 深入了解
預設值:false
引數別名: enableXmlTransform
XmlVariable
Substitution

(XML 變數替代)
(建置或發行管線中定義的選擇性) 變數會與appSettings、applicationSettingsconnectionStrings區段中的索引名稱專案進行比對,並parameters.xml檔案。 變數替代會在組態轉換之後執行。
注意: 如果在發行管線和階段中定義相同的變數,階段變數將會取代發行管線變數。 深入了解
預設值:false
引數別名: enableXmlVariableSubstitution
JSONFiles
(JSON 變數替代)
(選擇性) 提供分行符號分隔的 JSON 檔案清單,以取代變數值。 檔案名必須相對於根資料夾。 若要取代巢狀或階層式的 JSON 變數,請使用 JSONPath 運算式加以指定。 例如,若要取代下列範例中的 ConnectionString 值,請在組建或發行管線中定義名為 Data.DefaultConnection.ConnectionString 的變數, (或發行管線階段) 。

{
  「Data」: {
    「DefaultConnection」: {
      「ConnectionString」: 「Server= (localdb) \SQLEXPRESS;Database=MyDB;Trusted_Connection=True」
    }
  }
}

變數替代會在組態轉換之後執行。 注意:建置和發行管線變數會從替代中排除。 深入了解

此 YAML 範例會部署至 Azure Web 應用程式容器, (Linux) 。

pool:
  vmImage: ubuntu-latest

variables:
  azureSubscriptionEndpoint: Contoso
  DockerNamespace: contoso.azurecr.io
  DockerRepository: aspnetcore
  WebAppName: containersdemoapp

steps:

- task: AzureRMWebAppDeployment@4
  displayName: Azure App Service Deploy
  inputs:
    appType: webAppContainer
    ConnectedServiceName: $(azureSubscriptionEndpoint)
    WebAppName: $(WebAppName)
    DockerNamespace: $(DockerNamespace)
    DockerRepository: $(DockerRepository)
    DockerImageTag: $(Build.BuildId)

以下是另一個將 Web 應用程式部署到跨部署位置Windows App Service的範例。

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
 - stage: DeployDevStage
    displayName: 'Deploy App to Dev Slot'
    jobs:
      - job:  DeployApp
        displayName: 'Deploy App'
        steps:
        - task: DownloadPipelineArtifact@2
          inputs:
            buildType: 'current'
            artifactName: 'drop'
            targetPath: '$(System.DefaultWorkingDirectory)'
        - task: AzureRmWebAppDeployment@4
          inputs:
            ConnectionType: 'AzureRM'
            azureSubscription: 'Fabrikam Azure Subscription - PartsUnlimited'
            appType: 'webApp'
            WebAppName: 'partsunlimited'
            deployToSlotOrASE: true
            ResourceGroupName: 'rgPartsUnlimited'
            SlotName: 'Dev'
            packageForLinux: '$(System.DefaultWorkingDirectory)/**/*.zip'

  - stage: DeployStagingStage
    displayName: 'Deploy App to Staging Slot'
    dependsOn: DeployDevStage
    jobs:
      - job:  DeployApp
        displayName: 'Deploy App'
        steps:
        - task: DownloadPipelineArtifact@2
          inputs:
            buildType: 'current'
            artifactName: 'drop'
            targetPath: '$(System.DefaultWorkingDirectory)'
        - task: AzureRmWebAppDeployment@4
          inputs:
            appType: webApp
            ConnectionType: AzureRM            
            ConnectedServiceName: 'Fabrikam Azure Subscription - PartsUnlimited'
            ResourceGroupName: 'rgPartsUnlimited'
            WebAppName: 'partsunlimited'
            Package: '$(System.DefaultWorkingDirectory)/**/*.zip'
            deployToSlotOrASE: true
            SlotName: 'staging'

  • 若要部署至特定應用程式類型, 設定 appType 為下列任一可接受的值: webApp (Web App on Windows) 、 webAppLinux linux (Web App on Linux) 、 webAppContainer (Web App for Containers - Linux) 、 functionApp (Windows) 上的函式應用程式 (、 functionAppLinux linux) 上的函式應用程式、 (functionAppContainer 適用于容器的函式應用程式 - Linux) 、 apiApp (API 應用程式) , mobileApp (Mobile App) 。 如果未提及, webApp 則會被視為預設值。

  • 若要啟用任何進階部署選項,請新增 參數 enableCustomDeployment: true ,並視需要包含下列參數。

        # deploymentMethod: 'runFromPackage' # supports zipDeploy as well
        # appOffline: boolean    # Not applicable for 'runFromPackage'
        # setParametersFile: string
        # removeAdditionalFilesFlag: boolean
        # additionalArguments: string
    

輸出變數

  • Web 應用程式託管 URL:針對填入Azure App 服務託管 URL 的變數,提供名稱,例如 FabrikamWebAppURL 。 變數可以當做$ (variableName使用。AppServiceApplicationUrl) ,例如 $(FabrikamWebAppURL.AppServiceApplicationUrl) ,參考後續工作中Azure App 服務裝載的 URL。

使用注意事項

  • 工作僅適用于Azure Resource Manager API
  • 若要忽略 SSL 錯誤,請在發行管線中使用值 true 定義名為 VSTS_ARM_REST_IGNORE_SSL_ERRORS 的變數。
  • 針對以 Web 應用程式為目標的 .NET 應用程式Windows,請確定已啟用[重新命名鎖定的檔案] 和 [讓應用程式離線設定] 發生錯誤 ERROR_FILE_IN_USE ,以避免部署失敗。 針對零停機部署,請使用位置交換選項。
  • 部署至已設定應用程式Insights的App Service,而且您已在目的地啟用 [移除其他檔案],請確定您也啟用[從App_Data資料夾中排除檔案],以維持 Application insights 延伸模組的安全狀態。 這是必要的,因為應用程式Insights連續 Web 作業會安裝到 App_Data 資料夾中。

部署後腳本範例

工作提供選項來自訂部署,方法是提供在應用程式成品成功複製到App Service之後,在Azure App 服務上執行的腳本。 您可以選擇在成品資料夾中提供內嵌部署腳本或腳本檔案的路徑和名稱。

當您想要直接在App Service上還原應用程式相依性時,這非常有用。 還原 Node、PHP 和 Python 應用程式的套件有助於避免當應用程式相依性導致將大型成品從代理程式複製到Azure App 服務時發生逾時。

部署腳本的範例如下:

@echo off
if NOT exist requirements.txt (
 echo No Requirements.txt found.
 EXIT /b 0
)
if NOT exist "$(PYTHON_EXT)/python.exe" (
 echo Python extension not available >&2
 EXIT /b 1
)
echo Installing dependencies
call "$(PYTHON_EXT)/python.exe" -m pip install -U setuptools
if %errorlevel% NEQ 0 (
 echo Failed to install setuptools >&2
 EXIT /b 1
)
call "$(PYTHON_EXT)/python.exe" -m pip install -r requirements.txt
if %errorlevel% NEQ 0 (
 echo Failed to install dependencies>&2
 EXIT /b 1
)

部署方法

此工作提供數種部署方法。 Web Deploy (msdeploy.exe) 是預設值。 若要變更部署選項,請展開 [其他部署選項 ],然後啟用 [ 選取部署方法 ] 以從其他套件型部署選項中選擇。

根據Azure App 服務和代理程式的類型,工作會選擇適當的部署技術。 工作所使用的不同部署技術如下:

根據預設,工作會根據輸入套件類型、App Service類型和代理程式作業系統,嘗試選取適當的部署技術。

自動偵測邏輯

針對以 Windows 為基礎的代理程式。

App Service類型套件類型部署方法
Linux 上的 WebApp 或 Linux 上的函式應用程式資料夾/Zip/jar
戰爭
ZIP 部署
War Deploy
適用于容器的 WebApp (Linux) 或適用于容器的函式應用程式 (Linux) 更新應用程式設定NA
Windows上的 WebApp、Windows上的函式應用程式、API 應用程式或行動應用程式戰爭
Jar
MsBuild 套件類型或部署到虛擬應用程式


資料夾/Zip
War Deploy
ZIP 部署
Web Deploy

如果 postDeploymentScript == true,則為 Zip Deploy
else,從封裝執行

在任何App Service類型) 的非Windows代理程式 (上,工作依賴Kudu REST API來部署應用程式。

Web Deploy

Web Deploy (msdeploy.exe) 可用來使用 Windows 代理程式將 Web 應用程式部署至Azure App 服務Windows或函式應用程式。 Web Deploy 功能豐富,並提供下列選項:

  • 重新命名鎖定的檔案:在 Azure App 服務 設定中啟用 msdeploy 旗標MSDEPLOY_RENAME_LOCKED_FILES=1,重新命名網頁伺服器仍在使用中的任何檔案。 如果設定此選項,可讓 msdeploy 重新命名應用程式部署期間鎖定的檔案。

  • 移除目的地的其他檔案:刪除Azure App 服務中未部署App Service成品套件或資料夾中相符檔案的檔案。

  • 從App_Data資料夾中排除檔案:防止App_Data資料夾中的檔案 (在部署) 部署至Azure App 服務

  • 其他 Web Deploy 引數:部署Azure App 服務時套用的引數。 範例: -disableLink:AppPoolExtension -disableLink:ContentExtension. 如需 Web 部署作業設定的更多範例,請參閱Web 部署作業設定

使用Microsoft Web Platform Installer在代理程式上安裝 Web Deploy。 必須安裝 Web Deploy 3.5,而不需隨附SQL支援。 安裝 Web Deploy 時,不需要選擇任何自訂設定。 Web Deploy 安裝在 C:\Program Files (x86) \IIS\Microsoft Web Deploy V3。

Kudu REST API

當目標為 Windows 上的 Web 應用程式、Linux 上的 Web 應用程式 (內建來源) 或函式應用程式時,Kudu REST API可同時在 Windows 和 Linux 自動化代理程式上運作。 工作會使用 Kudu 將檔案複製到Azure App服務。

Container Registry

當目標為適用于容器的 Web 應用程式時,適用于Windows和 Linux 自動化代理程式。 工作會藉由設定適當的容器登錄、存放庫、映射名稱和標記資訊來更新應用程式。 您也可以使用 工作來傳遞容器映射的啟動命令。

ZIP 部署

預期.zip部署套件,並將檔案內容部署到 Azure 中App Service或函式應用程式的wwwroot資料夾。 此選項會覆寫 wwwroot 資料夾中的所有現有內容。 如需詳細資訊,請參閱適用于 Azure Functions 的 Zip 部署

從套件執行

預期與 Zip Deploy 相同的部署套件。 不過,除了將檔案部署到 wwwroot 資料夾,而是由 Functions 執行時間掛接整個套件, 而 wwwroot 資料夾中的檔案會變成隻讀的。 如需詳細資訊,請參閱從套件檔案執行 Azure Functions

War Deploy

預期 .war 部署套件,並將檔案內容部署到 Azure 中App Service的wwwroot資料夾或webapps資料夾。

疑難排解

錯誤:無法擷取 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 服務的狀態

錯誤:找不到具指定模式的套件

請確認工作中所提及的套件已在組建或上一個階段中發行為成品,並已在目前的作業中下載。

錯誤:msBuild 套件類型不支援使用 zip 部署發佈選項

透過MSBuild工作建立的 Web 套件 (預設引數) 具有巢狀資料夾結構,只能由 Web Deploy 正確部署。 發佈至 zip 部署選項無法用來部署這些套件。 若要轉換封裝結構,請執行下列步驟:

  1. 在 [建置方案] 工作中,將[MSBuild引數] 變更為 /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl="$(System.DefaultWorkingDirectory)\\WebAppContent"

    Screenshot that shows the Build solution values.

  2. 新增封存工作並變更值,如下所示:

    1. 根資料夾或檔案變更為 封存$(System.DefaultWorkingDirectory)\\WebAppContent

    2. 清除 [ 封存路徑之前加上的根資料夾名稱 ] 核取方塊:

      Screenshot that shows the Archive values.

Windows 上的 Web 應用程式部署成功,但是應用程式無法運作

這可能是因為應用程式中沒有web.config。 您可以將web.config檔案新增至來源,或使用工作的 [檔案轉換] 和 [變數替代選項] 自動產生檔案。

  • 按一下工作,然後移至 [為 Python 產生web.config參數]、[Node.js]、[Go] 和 [JAVA 應用程式]。

    Generate web.config parameters Dialog

  • 按一下 [為 Python 產生web.config參數] 按鈕,Node.js、Go 和 JAVA 應用程式以編輯參數。

    Drop Down Dialog

  • 從下拉式清單中選取您的應用程式類型。

  • 按一下 [確定]。 這會填入產生web.config所需的web.config參數。

注意

本節已被取代,且已取代為 檔案轉換 工作。

ERROR_FILE_IN_USE

在 Windows 上將 .NET 應用程式部署至 Web 應用程式時,部署可能會失敗,並出現錯誤碼ERROR_FILE_IN_USE。 若要解決此錯誤,請確定已在工作中啟用 [重新命名鎖定的檔案 ] 和 [ 讓應用程式離線 ] 選項。 針對零停機部署,請使用位置交換。

您也可以使用「從套件部署執行」來避免資源鎖定。

Web Deploy 錯誤

如果您是使用 web deploy 來部署您的應用程式,在某些錯誤案例中,Web Deploy 會在記錄中顯示錯誤碼。 若要針對 Web 部署錯誤進行疑難排解,請參閱 這一點

App Service 環境 (ASE) 上的 Web 應用程式部署無法運作

  • 確定Azure DevOps組建代理程式位於相同的 VNET (子網上,) 與 ASE 的內部Load Balancer (ILB) 不同。 這可讓代理程式從Azure DevOps提取程式碼,並部署到 ASE。
  • 如果您使用 Azure DevOps,代理程式必須可從網際網路存取,但只需要輸出存取才能連線到Azure DevOps服務。
  • 如果您使用部署在虛擬網路中的 TFS/Azure DevOps Server,則可以完全隔離代理程式。
  • 組建代理程式必須設定為其部署所需的 Web 應用程式的 DNS 組態。 由於虛擬網路中的私人資源在 Azure DNS 中沒有專案,因此這必須新增至代理程式電腦上的主機檔案。
  • 如果自我簽署憑證用於 ASE 設定,則也必須在部署工作中設定 「-allowUntrusted」 選項,MSDeploy.It 也建議將變數設定 VSTS_ARM_REST_IGNORE_SSL_ERRORS為 true。 如果憑證授權單位單位的憑證用於 ASE 設定,就不應該這樣做。

常見問題集

如何設定我的服務連線?

此工作需要Azure Resource Manager服務連線

如何使用應用程式Insights設定 Web 作業部署?

當您部署至App Service時,如果您已設定應用程式Insights且已啟用 Remove additional files at destination ,則也需要啟用 Exclude files from the App_Data folder 。 啟用此選項可讓應用程式Insights延伸模組處於安全狀態。 這是必要步驟,因為應用程式Insights連續 WebJob 會安裝到 App_Data 資料夾中。

當我部署至 App Service 時,應該如何設定代理程式位於 Proxy 後方?

如果您的自我裝載代理程式需要 Web Proxy,您可以在設定期間通知代理程式有關 Proxy。 這樣做可讓您的代理程式透過 Proxy 連線到Azure Pipelines或Azure DevOps Server。 深入瞭解在 Web Proxy 後方執行自我裝載代理程式

開放原始碼

這項工作開放原始碼GitHub。 歡迎意見反應和貢獻。