请帮忙。 env
为空。
Jenkinsfile:
node {
println "Your ENV:"
println env.dump
println "Your params:"
println params.dump
}
詹金斯输出:
[Pipeline] properties
[Pipeline] node
Running on foobarquux in c:\workspace\123abc
[Pipeline] {
[Pipeline] echo
Your ENV:
[Pipeline] echo
null
[Pipeline] echo
Your params:
[Pipeline] echo
null
我希望我的环境变量不会为null。我希望env.dump
不会为空,并且在执行Your ENV:
时会看到println env.dump
以外的内容。
在阅读了@mkobit的非常有用的评论后,我意识到我需要dump
的括号,即使有了它们,Jenkins也会抛出一个安全例外。
答案 0 :(得分:1)
Groovy的可选括号requires at least one parameter,它与Ruby不同。
如果至少有一个参数并且没有歧义,方法调用可以省略括号:
因此,要拨打dump()
method,您需要function FindReplaceWSHT(){
replaceInSheet("Elements",'aa','ZZZ');
}
function replaceInSheet(shtName, to_replace, replace_with) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(shtName);
//get the current data range values as an array
var values = sheet.getDataRange().getValues();
//loop over the rows in the array
for(var row in values){
//use Array.map to execute a replace call on each of the cells in the row.
var replaced_values = values[row].map(function(original_value){
return original_value.toString().replace(to_replace,replace_with);
});
//replace the original row values with the replaced values
values[row] = replaced_values;
}
//write the updated values to the sheet
sheet.getDataRange().setValues(values);
}
或env.dump()
。但是,此方法不会列入白名单,您将获得安全性异常(如果您在沙箱中运行或使用任何类型的Jenkins安全性),因为这将打印出对象的所有字段。
答案 1 :(得分:0)
作为补充,我刚刚学到了一些花了我几天时间的东西,希望能饶恕别人。
${WORKSPACE}
仅在代理(节点)中使用时有效!否则它将显示为null
。
我在管道的顶部有agent none
,因为我有几个input
步骤,我不想使用重量级的执行程序。我正在使用environment {}
的顶级${WORKSPACE}
块中设置环境变量。对于我一生,我不知道为什么将其设置为null。其他一些线程提到了代理程序上的工作区,因此我将该定义移到了代理程序上的一个步骤中,瞧瞧,当您在代理程序上运行时使用WORKSPACE设置var时,一切都能按预期进行。
此处的侧边栏是,如果您使用的是顶级agent none
,则environment
以及大概其他的pre-stages块不会在代理中运行。因此,任何依赖代理的行为都会异常。
答案 2 :(得分:-1)
试试这个
node {
println "Your ENV:"
println ${env.dump}
println "Your params:"
println ${params.dump}
}