我有一个用于多个管道的共享yaml文件,我想参数化yaml文件中一个图像的标记。
最简单的方法是什么?目前,我正在维护多个KubernetesPods.yaml
,例如KubernetesPods-1.5.0.yaml
,并将参数插入名称(yamlFile "KubernetesPods-${params.AGENT_POD_SPEC}.yaml"
(中,但这并不能很好地扩展。
我可以在不必在每个管道中都写出yaml的情况下将参数输入到yaml中吗?
示例管道:
pipeline {
agent {
kubernetes {
yamlFile 'KubernetesPods.yaml'
}
}
parameters {
choice(
name: 'AGENT_POD_SPEC',
choices: ['1.5.0','1.3.0','1.2.0','1.4.0'],
description: 'Agent pod configuration'
)
}
}
示例KubernetsPods.yaml:
kind: Pod
spec:
containers:
- name: example-image
image: example/image:<IMAGE-TAG-I-WANT-TO-PARAMETERIZE>
imagePullPolicy: Always
command:
- cat
您可以使用yaml
而不是yamlFile
pipeline {
agent {
kubernetes {
yaml """
kind: Pod
spec:
containers:
- name: example-image
image: example/image:${params.AGENT_POD_SPEC}
imagePullPolicy: Always
command:
- cat
"""
}
}
parameters {
choice(
name: 'AGENT_POD_SPEC',
choices: ['1.5.0','1.3.0','1.2.0','1.4.0'],
description: 'Agent pod configuration'
)
}
}