构建工件包含用于 Web 作业并包含在发布管道中的单独文件夹。 当尝试使用管道在同一应用程序服务上部署时,实际上将所有现有的内容替换为最后部署的 Web 作业。 两项作业部署的任务均成功。
非常感谢任何帮助。
在“Azure App Service 部署”任务中,在“其他部署选项”下,选择“Web 部署”作为“部署方法”。
我已经设法找到一种使用 AzureCLI 任务而不是使用应用服务部署来部署多个 Webjob 的方法。设置起来比较麻烦,但是没有一个应用服务部署任务对我有用。我尝试使用“Web 部署”,它要么根本没有部署,要么会删除所有现有的网络作业。
这是我制作的快速清理样本,因此可能需要一些更正:
- ${{each artifact in parameters.artifactsToDeploy}}:
- task: AzureCLI@2
displayName: 'deploy webjob'
inputs:
azureSubscription: YOURAZURESUB
scriptType: 'ps'
scriptLocation: 'inlineScript'
inlineScript: |
# Variables
$WEBAPP_NAME = WEBAPPNAME
$RESOURCE_GROUP = RESOURCEGROUP
$WEBJOB_NAME = WEBJOBNAME
$WEBJOB_TYPE = WEBJOBTYPE
$ZIP_PATH = ARTIFACTZIPPATH
# Get the publishing credentials
$publishingProfile = az webapp deployment list-publishing-profiles --name $WEBAPP_NAME --resource-group $RESOURCE_GROUP --query "[?publishMethod=='MSDeploy']" --output json | ConvertFrom-Json
$PUBLISH_URL = $publishingProfile.publishUrl
$USERNAME = $publishingProfile.userName
$PASSWORD = $publishingProfile.userPWD
# Encode username and password for basic auth
$AUTH = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$($USERNAME):$($PASSWORD)"))
$TARGET_URL = "https://$WEBAPP_NAME.scm.azurewebsites.net/api/zip/site/wwwroot/App_Data/jobs/$WEBJOB_TYPE/$WEBJOB_NAME/"
Write-Host "Deploying $WEBJOB_NAME to $TARGET_URL"
Invoke-RestMethod -Uri $TARGET_URL -Method Put -InFile $ZIP_PATH -Headers @{ Authorization = "Basic $AUTH" }