我有一个管道 yaml 文件,它运行一系列阶段,每个阶段运行一个已模板化的部署作业。代码本身非常简单:
模板.yaml
jobs:
- deployment: foo
...
pipeline.yaml
stages:
- stage: Uno
displayName: Numero_uno
jobs:
- job: Foo
steps:
- template: template.yaml
parameters:
stuff: things
- stage: Dos
displayName: Numero_dos
jobs:
- job: Foo
steps:
- template: template.yaml
parameters:
stuff: things
我发现我的一个阶段需要在其中运行一些额外的脚本,所以我想向这个特定阶段添加一些额外的作业:
- stage: Cuarenta_y_dos
displayName: Numero_cuarenta_y_dos
jobs:
- job: prep
steps:
- task: ...
- job: Foo
steps:
- template: template.yaml
parameters:
stuff: things
- job: unprep
steps:
- task: ...
这样做会破坏整个管道,因为我的模板是围绕可重复使用的作业构建的,它会立即引发关于“意外值‘作业’”的错误。
我明白为什么会这样,但我不知道如何解决。我想做的事情有可能吗?
答案 0 :(得分:1)
是的,Azure Devops 管道可以具有模板化和非模板化作业。更重要的是,引用模板的作业也可以有常规任务。请参见下面的示例:
stages:
- stage: CIBuild
displayName: 'Build'
jobs:
- job: Build
pool:
vmImage: ubuntu-latest
steps:
- task: PowerShell@2
...
- template: PipelineTemplates/ci-template.yml@templates
parameters: ...
- job: Test
displayName: 'Test job'
pool:
vmImage: ubuntu-latest
steps:
- task: PowerShell@2
...
我不确定您为什么会遇到这个问题,但可能您的 .yaml 文件无效。通过单击右上角的点并选择“验证”来检查它是否有效:
让我们知道结果。
答案 1 :(得分:0)
想通了。我的问题有两个方面:
原始代码,不起作用:
stages:
- stage: Uno
displayName: Numero_uno
jobs:
- job: Foo
steps:
- template: template.yaml
parameters:
stuff: things
- stage: Cuarenta_y_dos
displayName: Numero_cuarenta_y_dos
jobs:
- job: prep
steps:
- task: ...
- job: Foo
steps:
- template: template.yaml
parameters:
stuff: things
- job: unprep
steps:
- task: ...
固定代码:
stages:
- stage: Uno
displayName: Numero_uno
jobs:
- template: template.yaml
parameters:
stuff: things
- stage: Cuarenta_y_dos
displayName: Numero_cuarenta_y_dos
jobs:
- job: prep
steps:
- task: ...
- template: template.yaml
parameters:
stuff: things
- job: unprep
steps:
- task: ...
这是次要的,但很重要!