如何编写YAML流水线实现master和adf_publish分支分别发布构建产物
多分支独立构建产物YAML流水线配置方案
核心配置逻辑
- 构建阶段拆分两个独立作业,分别显式指定检出对应分支代码,避免默认只检出触发分支的问题
- 两个作业生成的产物命名独立区分,不会出现互相覆盖或内容混淆的情况
- 部署阶段可直接通过产物名引用对应分支的构建结果,不需要额外拉取分支代码
完整YAML示例
# 触发分支可根据实际需求调整 trigger: - master - adf_publish stages: # 构建阶段 - stage: Build displayName: 多分支并行构建 jobs: # master分支构建作业 - job: Build_Master pool: vmImage: 'ubuntu-latest' steps: # 强制检出master分支代码,clean参数确保工作目录无残留文件 - checkout: self ref: 'refs/heads/master' clean: true # 此处替换为你自己的master分支构建逻辑,比如编译、打包、静态检查等 - script: | echo "当前检出分支为:$(Build.SourceBranchName)" # 示例:将构建结果输出到构件暂存目录 cp ./* $(Build.ArtifactStagingDirectory)/ -r displayName: 执行Master分支构建逻辑 # 发布master分支专属产物 - publish: $(Build.ArtifactStagingDirectory) artifact: drop-master displayName: 发布Master分支构建产物 # adf_publish分支构建作业 - job: Build_ADFPublish pool: vmImage: 'ubuntu-latest' steps: # 强制检出adf_publish分支代码 - checkout: self ref: 'refs/heads/adf_publish' clean: true # 此处替换为你自己的adf_publish分支构建逻辑 - script: | echo "当前检出分支为:$(Build.SourceBranchName)" cp ./* $(Build.ArtifactStagingDirectory)/ -r displayName: 执行adf_publish分支构建逻辑 # 发布adf_publish分支专属产物 - publish: $(Build.ArtifactStagingDirectory) artifact: drop-adf_publish displayName: 发布adf_publish分支构建产物 # 部署阶段示例 - stage: Deploy displayName: 部署构建产物 dependsOn: Build jobs: # 部署master分支产物 - deployment: Deploy_Master environment: '你的部署环境名' pool: vmImage: 'ubuntu-latest' strategy: runOnce: deploy: steps: # 下载master分支对应的构建产物 - download: current artifact: drop-master # 此处替换为你自己的部署逻辑,直接使用$(Pipeline.Workspace)/drop-master下的文件即可 - script: echo "基于Master分支产物执行部署" displayName: 部署Master分支产物 # 部署adf_publish分支产物 - deployment: Deploy_ADFPublish environment: '你的部署环境名' pool: vmImage: 'ubuntu-latest' strategy: runOnce: deploy: steps: # 下载adf_publish分支对应的构建产物 - download: current artifact: drop-adf_publish # 此处替换为你自己的部署逻辑,直接使用$(Pipeline.Workspace)/drop-adf_publish下的文件即可 - script: echo "基于adf_publish分支产物执行部署" displayName: 部署adf_publish分支产物
注意:如果你的流水线关联了多个代码仓库,将
checkout步骤中的self替换为对应仓库的资源名即可;如果两个分支的构建逻辑完全一致,也可以将公共逻辑抽成模板复用,减少重复代码。
内容的提问来源于stack exchange,提问作者SANDEEP KUMAR
相关产品推荐
相关产品推荐

