Java Jenkinsfile:从另一个脚本传递env
考虑一个包含两个jenkins文件的文件夹,Java Jenkinsfile:从另一个脚本传递env,java,jenkins,continuous-integration,jenkins-pipeline,Java,Jenkins,Continuous Integration,Jenkins Pipeline,考虑一个包含两个jenkins文件的文件夹,jenkins文件a和jenkins文件b # JenkinsfileA node { environment { APP_NAME = 'APPLICATION_A' # Load the other jenkins file load `JenkinsfileB' } 在B中,$APP_NAME参数为空。将APP\u NAME参数从A传递到B的标准方法是什么?我应该在这里使用load还是其他什么?是环
jenkins文件a
和jenkins文件b
# JenkinsfileA
node {
environment {
APP_NAME = 'APPLICATION_A'
# Load the other jenkins file
load `JenkinsfileB'
}
在B中,$APP_NAME
参数为空。将APP\u NAME
参数从A传递到B的标准方法是什么?我应该在这里使用load
还是其他什么?是环境变量。首选还是我们可以以某种方式使用参数
更新
我认为env对我不起作用的原因是因为jenkins在一个完全独立的工作空间中触发了第二份工作。我想这样做:
load 'JenkinsfileB', parameters: [[$class: 'StringParameterValue', name: 'MYPARAM', value: "some-value" ]]
但是不断地出错
java.lang.IllegalArgumentException: Expected named arguments but got [{parameters=[{$class=StringParameterValue, name=MYPARAM, value=some-value}]}, JenkinsfileB]
当我尝试使用buildjob
语法而不是load
时,构建甚至找不到JenkinsfileB,所以我被难住了
unrelated:是否仍然可以使用
node
正确的指令来确保构建在任何代理上运行,还是应该使用管道{agent:any
}?从获取节点是否有帮助谢谢Susan-让我看看。您知道加载
和构建作业
之间的区别吗?我真的不知道如何正确地使用构建作业
。我更新了我的答案。
java.lang.IllegalArgumentException: Expected named arguments but got [{parameters=[{$class=StringParameterValue, name=MYPARAM, value=some-value}]}, JenkinsfileB]