Jenkins以常规方法共享常见环境变量

时间:2018-12-28 11:51:23

标签: jenkins groovy

我正在构建一个声明性的JenkinsFile,我有一些通用变量,希望在某些Jenkins项目和工作中共享。 因此,我创建了一个jenkins共享库,但是由于某种原因,我无法让我的Jenkins文件从通用Groovy中读取通用环境变量。

pipeline {
   environment {
      commonEnv()
      Email_Notification_Enabled="true"
      Slack_Notification_Enabled="false"
   }
}

在我的常规中,我有:

def call() {
    a = "abc"
    b = "abc"
}

抛出错误,即环境中不允许commonEnv()。 实现这种行为的可能方法是什么。

2 个答案:

答案 0 :(得分:1)

由于您需要在所有Jenkins项目和工作之间共享环境变量,因此应该在Jenkins 实例级别而不是Jenkins 项目上设置它们,或者职位级别。

因此,我将在管理Jenkins > 配置系统> 全局属性中执行此操作,而不是在Jenkinsfile中执行此操作(它将在Jenkins工作级别上执行此操作)。 > 环境变量

Jenkins
然后可以从Jenkins Global Variable env

在管道脚本中读取环境变量
echo "This is my Jenkins global environment variable ${env.MY_ENV_VAR_NAME}"

答案 1 :(得分:1)

您可以编写一个Groovy方法来设置公共环境变量。请参阅此Stack Overflow question以了解如何执行此操作。在Jenkins管道共享库中包含该方法。

现在在每个作业的声明性管道中调用此Groovy方法。请记住,在声明性管道中,您只能在script步骤内使用Groovy。因此,您的管道如下所示:

    pipeline {    
        stages {    
            stage("First stage") {      
                steps {
                    script {
                        // call to Groovy method that sets environment variables
                    }                        
                    // other steps
                }
             }
             // other stages
        }
    }

希望,它会有所帮助。