我想做什么?
构建一个 YAML 文件,该文件将服务构建并部署为 appservice 的 webjobs 位置中 webjobs 位置内的 webjob。
我有一个 YAML 代码,用于构建工作人员服务的控制台应用程序并将其部署为应用程序服务中的 Azure Webjob。
构建成功,部署也成功,但是webjob没有放置在正确的位置。
我希望将其部署在站点->作业->连续->网络作业名称中,但它被部署到站点->wwwroot->网络作业名称中
trigger:
branches:
include:
- main
paths
include:
- MyTestJobJob/MyTestJobService.cs
pool:
vmImage: 'windows-latest'
variables:
buildConfiguration: 'Release'
devWebAppName: 'MyTestJobJobDev'
resourceGroupName: 'MyRG'
webJobName: 'MyTestJobJob'
stages:
- stage: Build
jobs:
- job: Build
steps:
- task: UseDotNet@2
inputs:
packageType: 'sdk'
version: '8.x'
installationPath: $(Agent.ToolsDirectory)/dotnet
- task: DotNetCoreCLI@2
inputs:
command: 'restore'
projects: '**/*.csproj'
- task: DotNetCoreCLI@2
inputs:
command: 'build'
projects: '**/*.csproj'
arguments: '--configuration $(buildConfiguration)'
- task: DotNetCoreCLI@2
inputs:
command: 'publish'
projects: 'MyTestJobJob/MyTestJobJob.csproj'
arguments: '--configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/publish_output/App_Data/jobs/continuous/$(webJobName)'
publishWebProjects: false
modifyOutputPath: false
zipAfterPublish: false
- task: DotNetCoreCLI@2
inputs:
command: 'publish'
projects: 'MyTestJobJob/MyTestJobJob.csproj'
arguments: '--configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/publish_output'
publishWebProjects: false
modifyOutputPath: false
zipAfterPublish: false
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(Build.ArtifactStagingDirectory)'
includeRootFolder: false
archiveType: 'zip'
archiveFile: '$(Build.ArtifactStagingDirectory)/MyTestJobJob.zip'
replaceExistingArchive: true
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/MyTestJobJob.zip'
ArtifactName: 'drop'
publishLocation: 'Container'
- stage: DeployToDev
dependsOn: Build
jobs:
- deployment: DeployToDev
environment: 'Dev'
strategy:
runOnce:
deploy:
steps:
- download: current
artifact: drop
- task: AzureWebApp@1
inputs:
azureSubscription: 'MyAZSubscription' # Pushes changes to the webjob
appName: '$(devWebAppName)'
package: '$(Pipeline.Workspace)/drop/MyTestJobJob.zip'
resourceGroupName: '$(resourceGroupName)'
webJobName: '$(webJobName)'
webJobType: 'Continuous'
publishWebProjects: false
我认为这一行需要进行更改,但我不确定需要更改什么才能推送到正确的 azure webjob 位置
arguments: '--configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/publish_output/App_Data/jobs/continuous/$(webJobName)'
如果我在 appservice 的 azure webjobs 中手动添加一个新的 webjob 并附加工件 zip 文件,则该 webjob 会运行我正在尝试自动化的操作。
要将 WebJob 部署到目标位置,您需要确保工件中的 zip 文件(MyTestJobJob.zip)具有正确的文件夹结构,
App_Data/jobs/continuous
表示 continuous
类型。 部署后,应用服务中的结构为\site\wwwroot\app_data\Jobs\Continuous\webjobname
。
我这边的神器样本供大家参考:
您有两个带有
DotNetCoreCLI@2
命令的 publish
任务,请尝试删除第二个以确保文件夹结构正确。
另外,对于
AzureWebApp@1
部署任务,它没有参数webJobName
、webJobType
、publishWebProjects
,但需要appType
。
- task: AzureWebApp@1
inputs:
azureSubscription: 'MyAZSubscription'
appType: 'webApp'
appName: '$(devWebAppName)'
package: '$(Pipeline.Workspace)/drop/MyTestJobJob.zip'
deploymentMethod: 'auto'
请查看我类似票证中的另一个答案以供参考。