2017-11-16 24 views
0

파이프 라인 작업을 정의하는 DSL Groovy 스크립트가 있습니다. 작업 공간에서 Jenkinsfile을로드해야합니다. 젠킨스 파일은 그루비 스크립트와 같은 폴더에 있습니다. 프로그래밍 방식으로 Groovy 스크립트의 경로를 얻으려는 시도로 Jenkinsfile의 경로를 알아 내고 readFileFromWorkspace을 사용하여로드 할 수 있습니다. job-dsl-wiki을 거친 후 __FILE__ 지시어를 사용해 보았습니다. 여기작업 DSL에서 처리중인 스크립트 디렉토리의 절대 경로 가져 오기

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

내가 잘못 여기서 뭘하고 있나요된다 그러나 나는 다음과 같은 오류는 무엇입니까? 정말 이에 대한 도움을 주셔서 감사합니다.

+0

좋아, 해결책을 찾아 냈어. 그것은'job_path = "$ {new File (__ FILE __). parent}"이어야합니다. "' – user2371156

답변

1

위키의 문서는 약간 오해의 소지가 있습니다. 다음은 작동하는 해결책입니다.

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