在 Azure DevOps 中跨存储库共享模板

2024-04-25

我有一个专门创建的模板存储库来包含所有模板文件。 例如: (1)analysis_stage_template:

parameters:
- name: yesNo # name of the parameter; required
  type: boolean # data type of the parameter; required
  default: false
- name: firstValue # name of the parameter; required
  type: number # data type of the parameter; required
  default: 5
- name: secondValue # name of the parameter; required
  type: number # data type of the parameter; required
  default: 10

jobs:
  job: FirstStageOfAnalysis
  steps:
    script: |
      echo we are in the first stage of analysis
      echo value of the parameter passed for the first stage is : ${{parameters.firstValue}}
  
  job: SecondStageOfAnalysis
  steps:
    script: |
      echo we are in the second stage of analysis
      echo value of the parameter passed for the first stage is : ${{parameters.secondValue}}

(2)构建阶段模板:

parameters:
- name: firstValue # name of the parameter; required
  type: number # data type of the parameter; required
  default: 5
- name: secondValue # name of the parameter; required
  type: number # data type of the parameter; required
  default: 10

jobs:
  job: FirstStageOfBuild
  steps:
    script: |
      echo we are in the first stage of build
      echo value of the parameter passed for the first stage is : ${{parameters.firstValue}}
  
  job: SecondStageOfBuild
  steps:
    script: |
      echo we are in the second stage of build
      echo value of the parameter passed for the first stage is : ${{parameters.secondValue}}

我有一个主项目存储库,我想从其中调用这些模板并使用它们。管道文件如图所示:

trigger: none

resources:
 repositories:
   - repository: templates
     name: Software Development/TemplateRepository
     type: git

stages:
  - stage: Analysis
    jobs:
      - template: analysis_stage_template.yml@templates
        parameters:
          firstValue : 1
          secondValue : 2
    
  - stage: Build
    jobs:
      - template: build_stage_template.yml@templates
        parameters:
          firstValue : 1
          secondValue : 2

但是当我手动运行它时,我收到一条错误消息:

我在这里做错了什么?有什么建议么?


问题的原因是模板文件中的 YAML 格式存在问题。

这里有两点:

1.在YAML中定义作业时,需要遵循以下格式:

jobs:
- job: MyJob
  steps:
  - script: echo My first job

就您而言,您错过了-之前job:.

2.在YAML中定义任务时,需要添加-任务名称之前。

例如:- script: echo My first job

请参阅以下 YAML 示例:

分析阶段模板

parameters:
- name: yesNo # name of the parameter; required
  type: boolean # data type of the parameter; required
  default: false
- name: firstValue # name of the parameter; required
  type: number # data type of the parameter; required
  default: 5
- name: secondValue # name of the parameter; required
  type: number # data type of the parameter; required
  default: 10



jobs:
 - job: FirstStageOfAnalysis
   steps:
    - script: |
       echo we are in the first stage of analysis
       echo value of the parameter passed for the first stage is : ${{parameters.firstValue}}
  
 - job: SecondStageOfAnalysis
   steps:
    - script: |
       echo we are in the second stage of analysis
       echo value of the parameter passed for the first stage is : ${{parameters.secondValue}}

构建阶段模板:

parameters:
- name: firstValue # name of the parameter; required
  type: number # data type of the parameter; required
  default: 5
- name: secondValue # name of the parameter; required
  type: number # data type of the parameter; required
  default: 10

jobs:
 - job: FirstStageOfBuild
   steps:
   - script: |
      echo we are in the first stage of build
      echo value of the parameter passed for the first stage is : ${{parameters.firstValue}}
  
 - job: SecondStageOfBuild
   steps:
   - script: |
      echo we are in the second stage of build
      echo value of the parameter passed for the first stage is : ${{parameters.secondValue}}

这是关于的文档YAML 架构 https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema/jobs?view=azure-pipelines.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Azure DevOps 中跨存储库共享模板 的相关文章

随机推荐