젠킨스 파이프라인은 Groovy DSL을 사용해 작성합니다. 파일명은 보통 Jenkinsfile.* 처럼 씁니다 (ex. Jenkinsfile.dev)
Pipeline Syntax
Scripted Pipeline, like Declarative Pipeline, is built on top of the underlying Pipeline sub-system. Unlike Declarative, Scripted Pipeline is effectively a general-purpose DSL built with Groovy. Most functionality provided by the Groovy language is made av
www.jenkins.io
자세한 문법은 젠킨스 문서에 있습니다.
Intellij에서 기본적으로는 groovy sdk를 설치했을 때, 딱 groovy 문법으로만 적용해줍니다.
이런식으로 보이는데.. 잘 맞게 쓴건지 아닌지는 pipeline syntax 페이지를 봐야 합니다 (아니면 파이프라인 돌려보거나)
매번 문서를 띄워놓고 파이프라인을 고치는건 고역일 듯 한데요.. gradle dsl 처럼 자동으로 착착 써주는게 없나 좀 찾아봤습니다
깔끔한 답은.. 없는 듯 합니다 -_-
GDSL 이라는 groovy dsl directive 파일이 필요한데, 이 파일은 직접 만들거나, 누가 만든걸 받거나, 젠킨스에서 자동 생성할 수 있습니다.
https://github.com/jaydubb12/jenkins-dsl-pipelines/blob/main/src/main/jenkins.gdsl
어떤 분이 만들어 정리한 gdsl 파일이구요
(젠킨스 주소)/pipeline-syntax
gdsl 파일을 젠킨스에서 생성할 수 있는데, 위 경로로 접속해서 "IntelliJ IDEA GDSL"을 눌러 나온 파일을 저장하면 됩니다
아무튼 gdsl 파일을 만들었다면 IntelliJ가 인식할 수 있도록 해줘야 합니다.
main 밑에 groovy 라는 폴더를 만든 뒤, 우클릭 후 Source Root 폴더로 마크해줍니다. 그 안에 gdsl 파일을 넣어주고, Jenkinsfile은 아무데나 빼줍니다.
DSL descriptor file has been changed and isn't currently executed
> Activate back
그리고 gdsl 파일을 열어 Activate를 시켜줍니다.
자 그러면 이렇게 어느정도 타입, 설명 등이 보이는 상태가 되었습니다
잘 된 것처럼 보이지만 여러가지 문제가 있습니다.
- jenkins를 통해 자동 생성한 경우, 적용이 안되는 것 같음
- 다른 유저가 만든 gdsl 파일의 경우, 어느정도는 적용이 되지만 몇개는 안됨
(ex. agent any, none이라든가, pipeline {} 이라든가..) - Shared Library를 추가한 경우에도 directive를 따로 추가해줘야 한다
직접 모든 라이브러리까지 method, property 타입, 파라미터 등을 채워서 directive를 만들면 편하기야 하겠지만, 시간 대비 효율이 나오는 일인지도 잘 모르겠고, 어차피 파이프라인은 .. 돌려보고 실패하면 그때 수정해도 뭐.. 상관 없지 않나.. 그렇네요
자동으로 해주는 플러그인이나 뭔가가 있으면 좋겠는데.. 아무튼 지금은 이게 최선인 듯 합니다
Reference
- https://st-g.de/2016/08/jenkins-pipeline-autocompletion-in-intellij
- https://github.com/jaydubb12/jenkins-dsl-pipelines
- https://issues.jenkins.io/browse/JENKINS-40127
'CI CD > jenkins' 카테고리의 다른 글
[Jenkins] docker initialAdminPassword 경로 (0) | 2023.01.08 |
---|---|
[Jenkins] 타임존(timezone) 설정 방법 (0) | 2022.09.23 |
[Jenkins] 프로젝트 JDK 설정 방법 (0) | 2022.09.23 |
[Jenkins] Credential 추가하는 방법 (0) | 2022.09.22 |