Jenkins Kubernetes(JCASC):如何将默认容器从JNLP改为自定义容器?
把自定义容器设为Jenkins流水线默认容器的方法
既然你用的是Jenkins Helm Chart做Jenkins as Code,完全不用每次都写container('my container') {},有几种靠谱的方法能把自定义容器设为全局默认:
1. 直接修改Helm Chart配置(最符合Jenkins as Code理念)
直接在Helm的values.yaml里调整默认代理容器的设置,重新部署后所有流水线都会自动用你的自定义容器:
- 找到
agent相关配置块,添加或修改如下内容:agent: # 指定默认使用的容器名称 containerName: "my container" # 同时要确保Pod模板里定义了这个自定义容器 podTemplates: - name: default containers: - name: "my container" image: "你的自定义容器镜像地址" # 按需加其他配置,比如保持容器运行的命令、资源限制等 command: "cat" ttyEnabled: true - 执行Helm升级命令生效:
helm upgrade jenkins jenkins/jenkins -f your-values.yaml
2. 用全局共享库统一封装
如果不想动Helm配置,或者需要更灵活的逻辑,可以搞个Jenkins共享库:
- 在共享库的
vars目录下建个defaultContainer.groovy,代码如下:def call(Closure body) { container('my container') { body() } } - 把这个共享库加到Jenkins全局配置里,开启自动导入(Auto-Imports)。
- 之后流水线里直接写
defaultContainer {}就行,甚至可以在共享库里加逻辑,比如根据分支或环境切换容器。
3. 修改全局Pod模板(UI配置方式)
如果暂时不想改Helm配置,也可以在Jenkins UI里改:
- 进Manage Jenkins > Configure System > Cloud > Kubernetes > Pod Templates,找到默认的Pod模板。
- 把原来的jnlp容器替换成你的自定义容器,或者调整容器顺序让自定义容器成为默认执行容器。
- 不过这种方式不符合Jenkins as Code的原则,后续如果重新部署Helm Chart,配置可能会被覆盖,所以只适合临时场景。
总结一下:完全不需要每次手动加容器代码块,优先用方法1,保持配置集中管理,符合你用Jenkins as Code的初衷。
内容的提问来源于stack exchange,提问作者EilonA
相关产品推荐
相关产品推荐

