我很难弄清楚如何在Jenkinsfile中添加envVars到kubernet。
我很确定问题出在我的语法中,因为我收到了以下错误
ava.lang.ClassCastException: class org.csanchez.jenkins.plugins.kubernetes.
ContainerTemplate.setEnvVars() expects java.util.List<org.csanchez.jenkins.plugins.kubernetes.model.TemplateEnvVar
> but received class java.lang.String
当我用这种方式编码时
stage("build") {
agent {
kubernetes {
label 'kubernetes'
containerTemplate {
name 'jnlp'
image 'ubuntu:last'
ttyEnabled true
label 'label'
envVars '
envVar(key: "filePath", value: "/home/abcde/abc" )'
}
}
}
你能指点我正确的方向吗?如何在Jenkinsfile中定义列表变量?
我的Jenkinsfile设置
pipeline {
agent any
parameters {
string(name: 'Abc', defaultValue: 'origin', description: 'test project')
}
options {
timestamps()
timeout(60)
}
stages {
stage('Build') {
parallel {
stage("build") {
agent {
kubernetes {
label 'kubernetes'
containerTemplate {
name 'jnlp'
image 'ubuntu:latest'
ttyEnabled true
label 'label'
envVars 'envVar(key: "filePath", value: "/home/abcde/abc" )'
}
}
}
steps {
container('jnlp') {
timeout(60) {
// build process
}
}
}
}
}
}
}
post {
success {
sh "success"
}
failure {
sh "failed"
}
unstable {
sh "unsable"
}
}
}
使用上面的代码,我会收到以下错误
ava.lang.ClassCastException: class org.csanchez.jenkins.plugins.kubernetes.
ContainerTemplate.setEnvVars() expects java.util.List<org.csanchez.jenkins.plugins.kubernetes.model.TemplateEnvVar
> but received class java.lang.String
答案 0 :(得分:0)
看起来像你的情况应该是
stage("build") {
agent {
kubernetes {
label 'kubernetes'
containerTemplate {
name: 'jnlp',
image: 'ubuntu:last',
ttyEnabled: true,
label: 'kub_catkin_node',
envVars: [
containerEnvVar(key: "filePath", value: "/home/abcde/abc" )
]
}
}
}
}
答案 1 :(得分:0)
这是从UI和管道支持的东西,但在声明性管道中可能不太受支持。 一种解决方案可能是使用管道脚本。另一个可能是检查它是否在更高版本中得到更好的支持(如果你还没有在最新版本中支持)。
答案 2 :(得分:0)
这就是我如何使用它。小心使用Yaml语法。 Yaml不喜欢标签
pipeline {
agent any
parameters {
string(name: 'Abc', defaultValue: 'origin', description: 'The Gitlab project name')
}
options {
timestamps()
timeout(60)
}
stages {
stage('Build') {
parallel {
stage("build") {
agent {
kubernetes {
label 'label'
defaultContainer 'jnlp'
yaml """
apiVersion: v1
kind: Pod
metadata:
labels:
some-label: label
spec:
containers:
- name: jnlp
image: ubuntu:latest
tty: true
env:
- name: 'filePATH'
value: 'fileValue'
"""
}
steps {
container('jnlp') {
timeout(60) {
// build process
}
}
}
}
}
}
}
post {
success {
sh "success"
}
failure {
sh "failed"
}
unstable {
sh "unsable"
}
}
}