【问题标题】:Get absolute path of the script directory that is being processed by Job DSL获取 Job DSL 正在处理的脚本目录的绝对路径
【发布时间】:2017-11-16 18:12:31
【问题描述】:

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

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))
   }
 }
}

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

【问题讨论】:

  • 好的,找到解决方案了。应该是job_path = "${new File(__FILE__).parent}"

标签: jenkins groovy dsl


【解决方案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))
   }
 }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多