【发布时间】:2017-07-28 11:50:32
【问题描述】:
詹金斯版本。 2.60.1(在 Kubernetes 上的容器中运行)
Kubernetes 插件版本。 0.11 (https://github.com/jenkinsci/kubernetes-plugin)
流水线测试:
podTemplate(
label: 'mypod',
volumes: [
persistentVolumeClaim(claimName: 'nfs-maven', mountPath: '/mnt/', readOnly: false)],
envVars: [
containerEnvVar(key: 'FOO', value: 'BAR'),
],
containers: [
containerTemplate(name: 'golang',
image: 'golang',
ttyEnabled: true,
command: 'cat',
)]
)
{
node('mypod') {
stage('test env') {
container('golang') {
stage('build') {
sh 'echo $FOO'
sh 'sleep 3600'
}
}
}
}
}
变量不会传递到容器中。 回声什么也没有。回声 $FOO 或回声 \$FOO 我已经在 pod 级别和容器级别进行了尝试。
当我描述创建的 pod 时,我只得到以下环境变量:
Environment:
JENKINS_LOCATION_URL: http://ldn1-kube1:31000/
JENKINS_SECRET: 107cb696a8792f998fd41b6ccacf833ea74941fc9a95c39c4b2a1cde4c008b35
JENKINS_JNLP_URL: http://10.233.60.248:8080/computer/kubernetes-57beb710bfb44cea8f964d63049b2942-355760c790d6b/slave-agent.jnlp
JENKINS_TUNNEL: 10.233.60.248:50000
JENKINS_NAME: kubernetes-57beb710bfb44cea8f964d63049b2942-355760c790d6b
JENKINS_URL: http://10.233.60.248:8080
HOME: /home/jenkins
【问题讨论】:
-
你能运行
kubectl get -o yaml pod -l mypod(我必须检查没有值的标签的语法,或者你当然可以得到 pod 的名称)看看 podTemplate 在现实生活中是如何应用的?我还发现它超级、超级、超级可疑,k8s 服务环境变量都不存在(KUBERNETES_SERVICE_HOST、KUBERNETES_SERVICE_PORT等) -
谢谢马修。请在此处查看输出pastebin.com/vM5Pkzhc
标签: jenkins environment-variables kubernetes jenkins-pipeline