Azure 管道中的 AzureWebApp@1 任务从以前的部署中删除文件

问题描述 投票:0回答:1

我正在尝试设置一些 Azure 管道来构建和部署一些 WebJobs。构建和部署似乎工作正常。直到我第二次运行它。我们有大约 20 个 WebJobs 在同一个 Azure Web App 上运行。它们为我们的应用程序执行后台任务。

场景:

  • WebJob1 有一个管道(下面的 YML)。它运行、构建和部署文件都很好。
  • WebJob2 有一个管道(下面的 YML 相同,只是作业名称不同)。它可以很好地运行、构建和部署文件...但是,在此作业的部署步骤中,为 WebJob1 部署的所有文件都将被删除。如果我随后再次为 WebJob1 运行管道,它会正常构建和部署,但 WebJob2 的所有文件都会被删除。

我搜索了很多,但无法弄清楚这种行为。缓存了一些东西,一些清理步骤?我不明白为什么一个人会踩到另一个人。任何想法将不胜感激。

下面的 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
azure deployment pipeline
1个回答
0
投票

您需要在

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'

输出:-

enter image description here

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.