我正在尝试设置一些 Azure 管道来构建和部署一些 WebJobs。构建和部署似乎工作正常。直到我第二次运行它。我们有大约 20 个 WebJobs 在同一个 Azure Web App 上运行。它们为我们的应用程序执行后台任务。
场景:
我搜索了很多,但无法弄清楚这种行为。缓存了一些东西,一些清理步骤?我不明白为什么一个人会踩到另一个人。任何想法将不胜感激。
下面的 YML 文件对于两个管道都是相同的,唯一的区别是作业名称。
编辑:为了清楚起见..
WebJob1 部署时,文件会正确部署到 c:\home\site\wwwroot pp_data\Jobs\Triggered\WebJob1。
WebJob2 部署时,文件会正确部署到 c:\home\site\wwwroot pp_data\Jobs\Triggered\WebJob2。
..但是当WebJob2部署时,它也会删除WebJob1目录中的文件
trigger:
- DEV
pool:
name: Dev Pipeline Pool
variables:
- name: jobName
value: TestWebJob
- name: jobType
value: Triggered
- name: serviceConnectionToDeployTo1
value: devApp-sc
- name: appServiceName
value: devApp
resources:
repositories:
- repository: WebJobLib
type: git
name: WebJobLib
ref: master
steps:
- checkout: self
- checkout: WebJobLib
- task: DotNetCoreCLI@2
displayName: Run dotnet build
inputs:
command: build
projects: '**/*.csproj'
arguments: --configuration release
- task: DotNetCoreCLI@2
displayName: Run dotnet publish
inputs:
command: publish
publishWebProjects: false
projects: '**/*.csproj'
arguments: --output $(Build.SourcesDirectory)/publish_output/app_data/Jobs/$(jobType)/$(jobName)
zipAfterPublish: false
modifyOutputPath: false
- task: ArchiveFiles@2
displayName: Archive published output
inputs:
rootFolderOrFile: $(Build.SourcesDirectory)/publish_output
includeRootFolder: false
archiveType: zip
archiveFile: $(System.DefaultWorkingDirectory)/$(Build.BuildId).zip
replaceExistingArchive: true
verbose: true
- task: AzureWebApp@1
displayName: Azure Web App Deploy
inputs:
azureSubscription: $(serviceConnectionToDeployTo1)
appType: webApp
appName: $(appServiceName)
package: $(System.DefaultWorkingDirectory)/$(Build.BuildId).zip
deploymentMethod: auto
您需要在
webjobs
中单独构建您的 app folder
并在 artifact
中发布其 Azure Web App
,如下所示:-
我的构建管道:-
我已经用
2 Webjobs separately
命令构建了 DotNetCoreCl@2
:-
- task: DotNetCoreCLI@2
inputs:
command: 'publish'
publishWebProjects: false
projects: '**/Webjob1.csproj'
arguments: '--output $(Build.BinariesDirectory)/publish_output/App_Data/jobs/continuous/WebJob1'
zipAfterPublish: false
modifyOutputPath: false
- task: DotNetCoreCLI@2
inputs:
command: 'publish'
publishWebProjects: true
projects: '**/WebJobExample.WebJob.csproj'
arguments: '--output $(Build.BinariesDirectory)/publish_output/App_Data/jobs/continuous/WebJobExample'
zipAfterPublish: false
modifyOutputPath: false
完整的yaml管道:-
trigger:
- master
pool:
vmImage: 'windows-latest'
jobs:
- job: BuildAndDeployWebJobs
displayName: 'Build and Deploy Web Jobs'
steps:
- task: UseDotNet@2
inputs:
packageType: 'sdk'
version: '3.x'
installationPath: $(Agent.ToolsDirectory)/dotnet
- task: DotNetCoreCLI@2
inputs:
command: 'build'
projects: '**/*.csproj'
arguments: '--configuration Release'
- task: DotNetCoreCLI@2
inputs:
command: 'publish'
publishWebProjects: false
projects: '**/Webjob1.csproj'
arguments: '--output $(Build.BinariesDirectory)/publish_output/App_Data/jobs/continuous/WebJob1'
zipAfterPublish: false
modifyOutputPath: false
- task: DotNetCoreCLI@2
inputs:
command: 'publish'
publishWebProjects: true
projects: '**/WebJobExample.WebJob.csproj'
arguments: '--output $(Build.BinariesDirectory)/publish_output/App_Data/jobs/continuous/WebJobExample'
zipAfterPublish: false
modifyOutputPath: false
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(Build.BinariesDirectory)/publish_output'
includeRootFolder: false
archiveType: 'zip'
archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
replaceExistingArchive: true
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
- task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: 'AzureRM'
azureSubscription: 'subscription (xxxxxxxxxe97xxxxx2a7)'
appType: 'webApp'
WebAppName: 'valleywebapp92'
packageForLinux: '$(Agent.BuildDirectory)/**/*.zip'
JSONFiles: '**/appsettings.json'
输出:-