如何在Jenkins管道环境部分中获取bash脚本的源代码
我有一个现有的bash脚本,它只设置了大约100个变量,例如路径、版本号等,这些变量是我们所有构建作业的第一部分。 我正在将其中一些构建作业转移到jenkins管道,并试图找到是否有方法在jenkins环境阶段中从该文件中获取变量,以便在构建管道的后续步骤中使用 我觉得我错过了一些东西,因为我对groovy不是很熟悉。 我认为可能使用System.getenv,但这需要设置它们,并且我认为在sh脚本块中寻找它不会持久 下面是我正在写但不起作用的东西(虽然给出了一个概念性的想法) 任何建议都将不胜感激如何在Jenkins管道环境部分中获取bash脚本的源代码,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我有一个现有的bash脚本,它只设置了大约100个变量,例如路径、版本号等,这些变量是我们所有构建作业的第一部分。 我正在将其中一些构建作业转移到jenkins管道,并试图找到是否有方法在jenkins环境阶段中从该文件中获取变量,以便在构建管道的后续步骤中使用 我觉得我错过了一些东西,因为我对groovy不是很熟悉。 我认为可能使用System.getenv,但这需要设置它们,并且我认为在sh脚本块中寻找它不会持久 下面是我正在写但不起作用的东西(虽然给出了一个概念性的想法) 任何建议都将不胜
#!/usr/bin/env groovy
pipeline {
agent {label "${params.VM_to_use}"}
environment {
TARGET_VM = "${params.VM_to_use}"
//I'd like to be able to access vars globally or if better way I'm up for it.
}
stages {
stage ('Get vars in preperation for subsequent build steps...'){
steps {
sh '''
source /net/machine1/globalvars/functions/my_global_vars.sh
# product_123_version number in that file.
'''
script {
currentBuild.displayName = " ${env.product_123_version} - ${TARGET_VM}"
currentBuild.displayName = System.getenv("TESTVAR")
}
}
}
stage ('Build Step 2...'){
steps {
sh '''
# pass version to script...
/build_step_2.sh ${env.product_123_version}
'''
}
}
}
}
有两种加载方式(或jenkins中的源文件):-
// Comments should start like this one
env.Location='Pune'
env.Day='Friday'
env.Job_UI='Jenkins'
您可以对以下代码进行一些修改:-
stages {
stage('Load') {
agent { node { label 'master' } }
steps {
script {
// From the below two lines of code, you can use the one suits your need better
// def localenv = fileLoader.fromGit ("./Vars/loadFile.sh", "GITURL", 'BRANCH_NAME', 'Credentials', '')
load '/u/users/admin/loadFile.sh'
}
}
}
stage('Print') {
agent { node { label 'master' } }
steps {
script {
echo "Location :- ${env.Location}"
echo "Day :- ${env.Day}"
echo "Job :- ${env.Job_UI}"
}
}
}
}
}
谢谢你提供这些有用的信息!虽然这可能是我的用户错误,但提供的工作流似乎无法加载bash脚本,或者至少,它无法与我的脚本一起工作,因为它试图将以#开头的注释解释为某种东西,但无法加载。我认为,要想让它起作用,我必须通过删除#注释来更改脚本。对于exmaple,它正在尝试加载myGlobalVars.sh并返回Script1.groovy:3:意外字符:“#”@第3行第1列。由于jenkins认为您正在加载的文件是groovy,您需要使用“/”而不是“#”添加注释,并在应答中更新!就你的情况而言,你可以用“/”替换“#”,这对我来说很有吸引力。这个答案应该被接受。