如何使用管道环境变量来配置我的Jenkins代理?

时间:2019-04-02 12:41:58

标签: jenkins kubernetes

我正在尝试使用环境变量来配置我的Jenkins代理,如下所示:

pipeline {
  environment { 
    TEST = "test"
  }

  agent {
    kubernetes {
      label 'kubernetes'
      defaultContainer 'jnlp'
      yaml """
apiVersion: v1
kind: Pod
metadata:
  labels:
    name: "${env.TEST}"
...

但是${env.TEST}的出现形式为null。使用${env.BUILD_NUMBER}可以按预期工作,因此代理似乎无权访问管道中定义的环境变量。

有什么办法可以使它正常工作吗?

1 个答案:

答案 0 :(得分:0)

您基本上正确。 env.VALUE用于特定的用户环境变量(例如,如果我按照AMI或其他方式在设置了KUBECONFIG的代理环境中运行jenkins,则将其视为env.KUBECONFIG)。这很令人困惑,但是通常在库中,您按以下方式定义全局环境变量:

env.MY_VALUE = "some value"

引用环境值时,它是您要检查的实际用户环境变量。对于您在环境闭包中设置的值,只需按MY_VALUE进行调用即可:

pipeline {
  environment { 
    TEST = "test"
  }

  agent {
    kubernetes {
      label 'kubernetes'
      defaultContainer 'jnlp'
      yaml """
apiVersion: v1
kind: Pod
metadata:
  labels:
    name: "${TEST}"
...