Dav*_* W. 29 jenkins jenkins-workflow jenkins-pipeline
我正在尝试在Jenkins中使用DSL管道.我认为如果我可以将项目名称作为我脚本的一部分,那就太好了.
git credentialsId: 'ffffffff-ffff-ffff-ffff-ffffffffffffff',\
url: "${repo_root}/${JOB_NAME}.git"
Run Code Online (Sandbox Code Playgroud)
我收到错误:
groovy.lang.MissingPropertyException: \
No such property: JOB_NAME for class: groovy.lang.Binding
Run Code Online (Sandbox Code Playgroud)
我以为我遵循了这些指示,他们提到JOB_NAME了变量之一.
我决定尝试:
sh 'env'
Run Code Online (Sandbox Code Playgroud)
在我的DSL中,打印出来:
JOB_NAME = foo-bar
Run Code Online (Sandbox Code Playgroud)
这是我所期待的.
另一篇博客提到:
使用环境变量
我们有两种方法来获取它们的价值.-D=在启动期间传递的属性我们可以阅读,System.getProperty("key")这要归功于Groovy与Java的强大关系.用Java方式读取常规环境变量是
System.getenv("VARIABLE")......
我们试试这个:
println "JOB_NAME = " + System.getenv('JOB_NAME');
Run Code Online (Sandbox Code Playgroud)
现在,我得到:
java.lang.NullPointerException: Cannot get property 'System' on null object
Run Code Online (Sandbox Code Playgroud)
空物体?但是,我可以看到这JOB_NAME是一个环境变量!
如何$JOB_NAME在Pipeline作业中读入DSL脚本.我正在尝试一个管道工作,当我得到它的工作将使这个多分支管道与Jenkinsfile.
Tim*_*ing 13
好吧,今天真的让我烦恼了一会儿.最终,我做了几件事:
env.JOB_NAME.这个问题被证明是帮助我破解代码的问题:Jenkins Workflow Checkout访问BRANCH_NAME和GIT_COMMIT
实际上只是${env.JOB_NAME}用来访问一个已知变量。
但是,如果您需要访问由另一个变量指定名称的环境变量(动态访问),只需使用env["your-env-variable"].
我在配置 3 个环境变量(在 中Jenkins -> Administer -> Configure System -> Environment variables)时遇到了问题,让我们将它们命名为ENV_VAR_1, ENV_VAR_2, ENV_VAR_3。现在我想动态访问它们,我可以这样做:
def envVarName = "ENV_VAR_" + count // Suppose count is initialized in a loop somewhere above...
def value = env[envVarName] // Will be resolved to env["ENV_VAR_1"] depending on count value
Run Code Online (Sandbox Code Playgroud)
我在 Jenkins 配置中的环境变量如下所示:
| 归档时间: |
|
| 查看次数: |
69784 次 |
| 最近记录: |