我正在构建一个声明性的JenkinsFile,我有一些通用变量,希望在某些Jenkins项目和工作中共享。 因此,我创建了一个jenkins共享库,但是由于某种原因,我无法让我的Jenkins文件从通用Groovy中读取通用环境变量。
pipeline {
environment {
commonEnv()
Email_Notification_Enabled="true"
Slack_Notification_Enabled="false"
}
}
在我的常规中,我有:
def call() {
a = "abc"
b = "abc"
}
抛出错误,即环境中不允许commonEnv()。 实现这种行为的可能方法是什么。
答案 0 :(得分:1)
由于您需要在所有Jenkins项目和工作之间共享环境变量,因此应该在Jenkins 实例级别而不是Jenkins 项目上设置它们,或者职位级别。
因此,我将在管理Jenkins > 配置系统> 全局属性中执行此操作,而不是在Jenkinsfile中执行此操作(它将在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
}
}
希望,它会有所帮助。