一尘不染

获取作业DSL处理的脚本目录的绝对路径

jenkins

我有一个定义管道作业的DSL
groovy脚本。我需要从工作区加载Jenkinsfile。Jenkinsfile与groovy脚本位于同一文件夹中。我正在尝试以编程方式获取groovy脚本的路径,以便可以使用它来找出Jenkinsfile的路径并使用加载它readFileFromWorkspace__FILE__在经历job-
dsl-wiki
之后,我尝试使用指令。但是我收到以下错误:

Processing provided DSL script
ERROR: (test_job.groovy, line 3) No such property: absolutePath for class: java.lang.String
Finished: FAILURE

这是我的DSL脚本

job_name = "my-pipeline-job"
job_path = "${new File(__FILE__).parent.absolutePath}"
jenkinsfile = job_path + "/Jenkinsfile"
pipelineJob(job_name){
 description("Jenkins pipeline job")
 parameters{
  stringParam("MyTestParam", "", "a sample parameter")
 }
 definition {
   cps {
      sandbox()
      script(readFileFromWorkspace(jenkinsfile))
   }
 }
}

我在这里做错什么了吗?非常感谢您的帮助。


阅读 275

收藏
2020-07-25

共1个答案

一尘不染

Wiki中的文档有些误导。这是有效的解决方案。

job_name = "my-pipeline-job"
println "Script: ${ __FILE__}"
println("script directory: ${new File(__FILE__).parent}")
job_path = "${new File(__FILE__).parent}"
jenkinsfile = job_path + "/Jenkinsfile"
pipelineJob(job_name){
 description("Jenkins pipeline job")
 parameters{
   stringParam("MyTestParam", "", "a sample parameter")
 }
 definition {
   cps {
      sandbox()
      script(readFileFromWorkspace(jenkinsfile))
   }
 }
}
2020-07-25