在我的多分支管道作业中,我可以像这样成功地访问环境变量:
echo "$env.BRANCH_NAME"
但如果我尝试与相同的环境变量进行比较,则会抛出异常:
if($env.BRANCH_NAME == 'master')
{
echo "This is the master branch"
}
下面是我得到的错误堆栈的顶部:
groovy.lang.MissingPropertyException: No such property: $env for class: groovy.lang.Binding
at groovy.la
对于这个非常简单的工作流程:
env.FOO = 42
node {
sh "echo $FOO"
}
我得到以下错误:
Running: End of Workflow
groovy.lang.MissingPropertyException: No such property: FOO for class: WorkflowScript
如何在工作流shell步骤中访问环境变量?
我有一个groovy脚本,如下所示。我定义了一个包含动态变量的列表。动态变量具有不同的值。如何打印变量的值--我不想硬编码this.var0。请帮帮忙。
someList = []
for (i in 0..2) {
someList[i] = "var${i}"
}
var0 = "test1"
// print the values of the variables in the list
println this.someList[0]
我从管道作业调用管道作业(new_job)以及传递变量,但是它失败了。这两项工作各自运行良好。
测试工作:
pipeline {
agent any
stages {
stage('Executing First job') {
steps {
sh 'echo "Running first job"'
}
}
stage('Running another job') {
在这种情况下,字符串插值可以很好地工作:
val name = "Bill"
val result = s"My Name is ${name}"
当我把它引入变量时,它没有得到插值的值:
val name = "Bill"
val greeting = "My Name is ${name}"
val result = s"${greeting}"
直接包装greeting不是合适的解决方案,我必须像处理普通字符串一样处理问候语。
我想在DSL文件中加载一个groovy文件。如果我处理DSL文件,我收到以下错误消息:
Processing DSL script folderA/job.dsl
ERROR: (job.dsl, line 2) No signature of method: job.load() is applicable for argument types: (org.codehaus.groovy.runtime.GStringImpl) values: [./build.groovy ]
Possible solutions: find(), job(java.lang.String), find(