0

为了实现持续部署,我们使用 Azure DevOps 上的(经典)发布管道将 Web 服务部署到我们内部网中的 VM。为了受益于 yaml 部署管道,我用环境代理替换了我们之前在该 VM 上的部署池代理。

对于实际部署,我们使用IIS Web App Deploy 任务。此任务的源目录默认为$(System.DefaultWorkingDirectory)\**\*.zip. $(System.DefaultWorkingDirectory)转换为具体版本的子目录a

对我来说不幸的是,环境代理将工件下载到-folder旁边,而不是像环境池代理那样下载到其中。因此部署任务的默认设置找不到它。我知道我可以使用. 我只是想知道为什么微软在环境代理中引入了这样的开发速度。a$(System.DefaultWorkingDirectory)\..\**\*.zip

有什么方法可以让环境代理将工件下载到$(System.DefaultWorkingDirectory)aka 中。a而不是在它旁边?

4

2 回答 2

2

如果您在 yaml 管道中使用部署作业。工件将自动下载到部署作业中的$(Pipeline.Workspace)/(旁边的文件夹$(System.DefaultWorkingDirectory))。请参阅下面的摘录:

  • 当前管道中的工件被下载到 $(Pipeline.Workspace)/。

  • 来自关联管道资源的工件被下载到 $(Pipeline.Workspace)/{pipeline resource identifier}/。

  • 当前管道和相关管道资源中的所有可用工件都会自动下载到部署作业中,并可供您的部署使用。要阻止下载,请指定下载:无。

使环境代理将工件下载到 $(System.DefaultWorkingDirectory)。

您可以指定download: none. 并使用Download Pipeline Artifacts 任务并指定path 参数以将您的工件下载到$(System.DefaultWorkingDirectory). 见下文:

 - deployment: 
   environment: Dev
   strategy:
     runOnce:    
       deploy:
         steps:
         - download: none #prevent automatically download

         - task: DownloadPipelineArtifact@2
           inputs:
             buildType: 'current'
             targetPath: '$(System.DefaultWorkingDirectory)'  # download to default folder.

花药解决方法是将IIS Web App Deploy task默认源目录更改为$(Pipeline.Workspace)\**\*.zip

于 2021-03-12T07:04:07.380 回答
1

从 Classic 管道更改为 YAML 管道进行部署时,您可能需要更改$(System.DefaultWorkingDirectory)$(Pipeline.Workspace). 您可以通过以下步骤验证这一点:

- pwsh: Get-ChildItem $(System.DefaultWorkingDirectory) -Recurse
  displayName: Check System.DefaultWorkingDirectory
- pwsh: Get-ChildItem $(Pipeline.Workspace) -Recurse
  displayName: Check Pipeline.Workspace

(是的,这是一种非常冗长的方法。不过,它会让您更全面地了解支持您的工作的文件结构。)

于 2021-03-11T17:59:05.073 回答