DevOps/System&Tools
Jenkinsfile validator
Jacob_baek
2019. 11. 20. 13:01
Jenkinsfile을 수정해보았으나 간혹 syntax error가 발생될수 있다.
이때 마다 수정하고 code push후 이를 테스트 해보기란 여간 번거로운 일이 아닐수 없다.
하여 간단하게 plugin 혹은 built-in validator를 사용하여 검증하는 방법을 알아보도록 하자.
validator vscode plugin
아래 plugin 을 설치하고 사용할수 있다.
plugin이 설치되면 ctrl + shift + p 입력하여 validate pipeline 을 실행해볼수 있다.
validate Jenkinsfile을 선택하게 되면 URL 입력창이 뜨게 되는데 Jenkins가 동작중인 URL과 함께 pipeline-model-converter/validate 을 입력하면 된다.
(URL에서 예상되듯이 Jenkins에 해당 파일을 검증하도록 요청하는 방식이라 보면 된다.)
실제 아래와 같은 주소가 된다.
http://Jenkins-Domain:8080/pipeline-model-converter/validate
주의
안타깝게도 해당 validator는 pipeline 즉 declative pipeline만 사용이 가능하다.
또한 인증과정이 필요하여 접근권한 오류가 발생될수 있다. 하여 아래 curl 방식을 이용하는것을 추천한다.
Builtin validator
다음과 같은 built-in 되어 있는 validator를 이용할수 있다.
알아두어야 할 것은 POST 방식으로만 접근이 되기에 curl 과 같은 도구를 사용해야 한다.
또한 Jenkinsfile 파일이 존재하는 디렉토리에서 바로 실행하면 된다.
jacob@jacob-laptop:~/$ curl --user jacobbaek:****** -X POST -F "jenkinsfile=<Jenkinsfile" https://jenkins.example.com/pipeline-model-converter/validate --insecure
Errors encountered validating Jenkinsfile:
WorkflowScript: 136: unexpected char: '\' @ line 136, column 32.
sh "sed -i '/\[mons\]/{n;s/.*/\#test-message/}' inventory/${params.SITE}/hosts.ini"
^
정상적인 경우라면 아래와 같이 successfully validated 메세지를 확인할수 있다.
jacob@jacob-laptop:~/$ curl --user jacobbaek:****** -X POST -F "jenkinsfile=<Jenkinsfile" https://jenkins.example.com/pipeline-model-converter/validate --insecure
Jenkinsfile successfully validated.