如何使用Kubernetes插件在Jenkins管道的容器中设置envVars
我正在用Kubernetes建立一个Jenkins管道,在这个管道中有一个为容器设置环境变量的选项。是否有一些选项覆盖容器中的那些值,即:如何使用Kubernetes插件在Jenkins管道的容器中设置envVars,kubernetes,jenkins-pipeline,Kubernetes,Jenkins Pipeline,我正在用Kubernetes建立一个Jenkins管道,在这个管道中有一个为容器设置环境变量的选项。是否有一些选项覆盖容器中的那些值,即: container( name: 'my-container', envVars: [ envVar(key: $KEY, value: $VALUE) ]) { ... } 因为某些变量是在构建阶段派生的,无法在podTemplate中设置。不幸的是,上述示例不起作用。请注意,在撰写本文时,根据: container语句允许直接
container(
name: 'my-container',
envVars: [
envVar(key: $KEY, value: $VALUE)
]) {
...
}
因为某些变量是在构建阶段派生的,无法在
podTemplate
中设置。不幸的是,上述示例不起作用。请注意,在撰写本文时,根据:
container语句允许直接在每个容器中执行命令。此功能被认为是ALPHA,因为并发执行和管道恢复仍然存在一些问题
我相信没有选择。但是,您可以尝试在sh
命令中设置变量。例如:
def label = "mypod-${UUID.randomUUID().toString()}"
podTemplate(label: label, containers: [
containerTemplate(name: 'maven', image: 'maven:3.3.9-jdk-8-alpine', ttyEnabled: true, command: 'cat'),
containerTemplate(name: 'golang', image: 'golang:1.8.0', ttyEnabled: true, command: 'cat')
]) {
node(label) {
stage('Get a Maven project') {
git 'https://github.com/jenkinsci/kubernetes-plugin.git'
container('maven') {
stage('Build a Maven project') {
sh 'MYENV1=value1 MYEVN2=value2 mvn -B clean install'
}
}
}
stage('Get a Golang project') {
git url: 'https://github.com/hashicorp/terraform.git'
container('golang') {
stage('Build a Go project') {
sh """
mkdir -p /go/src/github.com/hashicorp
ln -s `pwd` /go/src/github.com/hashicorp/terraform
MYENV1=value1 MYEVN2=value2 cd /go/src/github.com/hashicorp/terraform && make core-dev
"""
}
}
}
}
}
请注意,在撰写本文时,根据: container语句允许直接在每个容器中执行命令。此功能被认为是ALPHA,因为并发执行和管道恢复仍然存在一些问题 我相信没有选择。但是,您可以尝试在
sh
命令中设置变量。例如:
def label = "mypod-${UUID.randomUUID().toString()}"
podTemplate(label: label, containers: [
containerTemplate(name: 'maven', image: 'maven:3.3.9-jdk-8-alpine', ttyEnabled: true, command: 'cat'),
containerTemplate(name: 'golang', image: 'golang:1.8.0', ttyEnabled: true, command: 'cat')
]) {
node(label) {
stage('Get a Maven project') {
git 'https://github.com/jenkinsci/kubernetes-plugin.git'
container('maven') {
stage('Build a Maven project') {
sh 'MYENV1=value1 MYEVN2=value2 mvn -B clean install'
}
}
}
stage('Get a Golang project') {
git url: 'https://github.com/hashicorp/terraform.git'
container('golang') {
stage('Build a Go project') {
sh """
mkdir -p /go/src/github.com/hashicorp
ln -s `pwd` /go/src/github.com/hashicorp/terraform
MYENV1=value1 MYEVN2=value2 cd /go/src/github.com/hashicorp/terraform && make core-dev
"""
}
}
}
}
}
您仍然可以像管道中的normal一样使用normal withEnv辅助对象,除非这不起作用?它有一些奇怪的错误…因为我使用脚本化管道
with env
对我有效。你仍然可以像管道中的普通帮助器一样使用普通with env,除非那不起作用?它有一些奇怪的bug…因为我使用脚本管道with env
对我来说很有效。这可能也会有效。如果我使用withEnv
在sh
之外定义env变量,那么主命令(mvn-B clean install
在本例中)更简洁。这可能也会起作用。如果我使用withEnv
在sh
之外定义env变量,那么主命令(mvn-B clean install
在本例中)更简洁。