Azure YAML多作业检出同仓库分支时同键校验报错问题
Azure Pipeline 多作业重复检出同仓库同分支校验报错问题
问题背景
现有一套可复用的构建模板作业,在Azure Pipeline中每次构建新应用时都会复用该模板。构建模板内部包含内联的checkout步骤,当多个作业检出同一仓库的同一分支时就会触发校验报错。
现有模板结构
根流水线文件 pipeline.yaml
stages: - template: templates/group-build.yaml parameters: branchRef: ${{ variables.branchRef}}
阶段组模板 templates/group-build.yaml
parameters: - name: branchRef type: string stages: - stage: 'Build' displayName: 'Build' variables: jobs: - template: template/functionapp-build-job.yaml parameters: branchRef: ${{ parameters.branchRef}} - template: template/webapp-build-job.yaml parameters: branchRef: ${{ parameters.branchRef}}
函数应用作业模板 template/functionapp-build-job.yaml
parameters: - name: branchRef type: string jobs: - template: templates/function/build-job.yaml parameters: repository: repo branchRef: ${{ parameters.branchRef}} project: functionapp/function.csproj
通用构建作业模板 templates/function/build-job.yaml
parameters: - name: repository type: string - name: project type: string - name: componentName type: string - name: branchRef type: string jobs: - job: JOB_${{ parameters.componentName}}_BUILD # 组件名全局唯一 displayName: Build ${{ parameters.componentName}} Job steps: # 同仓库多作业重复检出会在此处触发校验报错 - checkout: git://project/${{ parameters.repository }}@${{ parameters.branchRef}} - 其余构建任务...
template/webapp-build-job.yaml结构与函数应用作业模板完全一致。
流水线逻辑结构
Pipeline Stages: - Stage: Build Jobs: - Job: Web App Build Steps: - checkout: 检出同仓库同分支,执行Web应用构建步骤 - Job: Function App Build Steps: - checkout: 检出同仓库同分支,执行函数应用构建步骤
报错现象


不可行方案说明
无法采用在流水线顶层添加resources声明的方案:分支引用branchRef存储在变量组中,受Azure YAML的能力限制,resources字段无法解析运行时/变量组传入的变量值。
诉求
寻找可规避该校验问题的可行思路或落地方案。
内容的提问来源于stack exchange,提问作者jtabuloc
相关产品推荐
相关产品推荐

