在詹金斯装饰管道中使用kubernetes代理程序的yamlFile中的参数



我有一个用于多个管道的共享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'
)
}
}

最新更新