我有一个定义管道作业的DSL groovy脚本。我需要从工作区加载Jenkinsfile。Jenkinsfile与groovy脚本位于同一文件夹中。我正在尝试以编程方式获取groovy脚本的路径,以便可以使用它来找出Jenkinsfile的路径并使用加载它readFileFromWorkspace。__FILE__在经历job- dsl-wiki之后,我尝试使用指令。但是我收到以下错误:
readFileFromWorkspace
__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)) } } }
我在这里做错什么了吗?非常感谢您的帮助。
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)) } } }