Azure devops 在YAML中具有多个放置文件夹的Azure管道

Azure devops 在YAML中具有多个放置文件夹的Azure管道,azure-devops,azure-pipelines,azure-pipelines-release-pipeline,Azure Devops,Azure Pipelines,Azure Pipelines Release Pipeline,我已经为Azure部署创建了YAML管道。有很多模板,但我将只显示主管道来说明我的问题 基本上 第一阶段是从存储库源代码构建 下一阶段是预部署,然后是部署 生成将输出文件拖放到拖放文件夹中。在预部署期间,这些文件中的一些会经过一些转换(根据目标环境将令牌替换为值) 问题是目前只有一个drop文件夹,因此您可以看到问题即将出现。。。。如果部署到DEV,则使用DEV值转换文件。但是如果我部署到INT,文件已经被转换,我最终部署到具有DEV值的INT文件 如果DEV和INT部署同时运行,情况会变得更糟

我已经为Azure部署创建了YAML管道。有很多模板,但我将只显示主管道来说明我的问题

基本上

  • 第一阶段是从存储库源代码构建
  • 下一阶段是预部署,然后是部署
  • 生成将输出文件拖放到拖放文件夹中。在预部署期间,这些文件中的一些会经过一些转换(根据目标环境将令牌替换为值)

    问题是目前只有一个drop文件夹,因此您可以看到问题即将出现。。。。如果部署到DEV,则使用DEV值转换文件。但是如果我部署到INT,文件已经被转换,我最终部署到具有DEV值的INT文件

    如果DEV和INT部署同时运行,情况会变得更糟

    那么,如何在每个环境中使用单独的放置文件夹呢?在predeployment中,我是否应该在转换之前将drop文件夹复制到另一个位置。在这种情况下,如何在部署阶段指定新位置

    以下是供参考的主管道:

    trigger:
    - master
    
    pool:
      name: Default
      demands:
      - npm
      - msbuild
      - visualstudio
    
    stages:
    
      - stage: build
        displayName: 'Build & Test stage'
        jobs: 
        - template: templates/pipeline-build/master.yml
          parameters:
            buildConfiguration: 'Release'
            dropFolder: '\\srvbuild\DROP'
    
    
      - stage: deployDev
        displayName: 'Deploy Dev Stage'
        dependsOn: build
        condition: succeeded()
        jobs:
        - deployment: deploymentjob
          displayName: deployment job
          environment: dev  
          variables:         
            - template: variables/dev.yml
          strategy:
            runOnce:
              preDeploy:
                steps:             
                - template: templates/pipeline-predeploy/master.yml
              deploy:
                steps:
                - template: templates/pipeline-deploy/master.yml 
    
      - stage: deployInt
        displayName: 'Deploy Int Stage'
        dependsOn: build
        condition: succeeded()
        jobs:
        - deployment: deploymentjob
          displayName: deployment job
          environment: int  
          variables:         
            - template: variables/int.yml
          strategy:
            runOnce:
              preDeploy:
                steps:             
                - template: templates/pipeline-predeploy/master.yml
              deploy:
                steps:
                - template: templates/pipeline-deploy/master.yml 
    

    作为解决方法,您可以将构建工件发布到
    文件共享
    ,然后在每个转换阶段通过
    下载文件共享工件
    任务下载构建工件 它是分开的

    - task: PublishPipelineArtifact@1
      displayName: 'Publish Pipeline Artifact'
      inputs:
        artifact: drop
        publishLocation: filepath
        fileSharePath: '***'
    
    使用此任务可以:


    作为解决方法,您可以将构建工件发布到
    文件共享
    ,然后在每个转换阶段通过
    下载文件共享工件
    任务下载构建工件 它是分开的

    - task: PublishPipelineArtifact@1
      displayName: 'Publish Pipeline Artifact'
      inputs:
        artifact: drop
        publishLocation: filepath
        fileSharePath: '***'
    
    使用此任务可以:


    这非常有用。事实上,自从构建输出发布到共享驱动器后,我已经完成了第一部分。我只遗漏了第二部分,即将生成输出复制到特定于环境的文件夹中。它现在正在工作:)这是非常有用的。事实上,自从构建输出发布到共享驱动器后,我已经完成了第一部分。我只遗漏了第二部分,即将生成输出复制到特定于环境的文件夹中。它正在工作:)