我有一个现有的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}
'''
}
}
}
}
答案 0 :(得分:0)
有两种加载方式(或jenkins中的源文件):-
文件应包含(loadFile.sh或loadFile.groovy)如下数据:-
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}"
}
}
}
}
}
您可以使用以下代码进行一些修改:-
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>