我正在将 2 个 Web 作业发布到各自的路径:
但是,每次
site\wwwroot
里面的内容都会被删除,而我在那里发布了一个API项目,所以,每次我都需要重新发布API。
我在任何地方都找不到解决方案,为什么会发生这种情况?
这是我的网络工作 CD:
我希望每次发布网络作业时都必须重新发布我的 API。
为了使
Webjobs
正确部署,您需要在 app folder
中一起构建它们,然后 将构建工件发布到 Azure Web App 服务。
请参考我的答案这里。
我的 Azure DevOps 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: 'xxx subscription (xxxxxxxxx97cb2a7)'
appType: 'webApp'
WebAppName: 'siliconwebapp098'
packageForLinux: '$(Agent.BuildDirectory)/**/*.zip'
JSONFiles: '**/appsettings.json'
我分别构建了 WebJobs,然后将 构建工件发布到上面的 Azure Web 应用程序。
输出:-
发布管道:-
当我尝试将文件部署到虚拟应用程序路径时,我可以重现该问题,并且我发现
site\wwwroot
文件夹将恢复到旧的最后版本。
如果我将任务版本从
AzureRmWebAppDeployment@4
更改为 AzureRmWebAppDeployment@3
,它会起作用,并且不会更改 site\wwwroot
文件夹中的文件。我还找到了一个已知问题here供您参考。