azure-devops - 在 YAML 中具有多个放置文件夹的 Azure Pipeline
问题描述
我为 Azure 部署创建了一个 YAML 管道。有很多模板,但我只会展示主管道来说明我的问题。
基本上
- 第一阶段是从存储库源构建。
- 下一阶段是预部署,然后是部署
构建将输出文件拖放到放置文件夹中。在预部署期间,其中一些文件会经历一些转换(根据目标环境将标记替换为值)。
问题是目前只有一个放置文件夹,所以你可以看到问题来了....如果我部署到 DEV,文件将使用 DEV 值进行转换。但是,如果我部署到 INT,文件已经转换,我最终部署到具有 DEV 值的 INT 文件。
如果 DEV 和 INT 部署同时运行,情况会变得更糟......
那么如何在每个环境中使用单独的放置文件夹?在预部署中,我是否应该在转换之前将放置文件夹复制到另一个位置。在这种情况下,如何在部署阶段指定新位置?
这是供参考的主管道:
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
解决方案
作为解决方法,您可以将构建工件发布到A file share
,然后通过Download Fileshare Artifacts
每个阶段的任务下载构建工件以单独对其进行转换。
- task: PublishPipelineArtifact@1
displayName: 'Publish Pipeline Artifact'
inputs:
artifact: drop
publishLocation: filepath
fileSharePath: '***'
使用此任务下载文件共享工件:
- task: DownloadFileshareArtifacts@1
inputs:
filesharePath:
artifactName:
#itemPattern: '**' # Optional
#downloadPath: '$(System.ArtifactsDirectory)'
#parallelizationLimit: '8' # Optional
推荐阅读
- where-clause - 基于多个条件的 Xarray 掩码区域
- flutter - 返回 Dart 中提供的相同对象类型用户
- typescript - 如何在最后一步之前异步所有上传的文件?
- sctp - SCTP Sockets API Extensions 中的错误处理是如何工作的?
- javascript - 当我更改提供 index.html 文件的方式时,哪些路径不起作用?
- c# - 如何从 transform.position 添加
- c# - 围绕一个点旋转对象
- mysql - 是否可以通过 UNION 显示多个结果?
- php - Wordpress 如何加载额外的样式表(charts.css)
- reactjs - React 应用程序 - 文件上传适用于 localhost 但不适用于 nginx 服务器