我正在使用Kubernetes建立Jenkins管道,可以选择在containerTemplate中为容器设置环境变量。是否有一些选项可以覆盖container
中的那些值,即:
container(
name: 'my-container',
envVars: [
envVar(key: $KEY, value: $VALUE)
]) {
...
}
因为某些变量是在构建阶段派生的,因此无法在podTemplate
中进行设置。不幸的是,上面的示例不起作用。
答案 0 :(得分:2)
请注意,截至docs为止,本文写作:
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
"""
}
}
}
}
}