Skip to content

rtyler/jdp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Jenkins Declarative Parser

This repository contains an grammar and parser for the Jenkins Declarative Pipeline syntax. It’s for educational and testing purposes :)

CLI

This repository provides the jdp command line utility which can be used for syntax checking a declarative Jenkinsfile:

❯ jdp check data/valid/complex-deployment/Jenkinsfile
Checking: data/valid/complex-deployment/Jenkinsfile
Looks valid! Great work!

Installing

You can download built release binaries from the GitHub Releases or just run cargo install jdp.

Caveats

This parser is not a Groovy syntax parser, and as such any advanced or wacky groovy that is littered around a Jenkinsfile should largely be ignored. This includes the script step which is basically checked to make sure that there is a script { } block, but anything within it is explicitly ignored.

Development

Development of jdp is all driven through the use of cargo, e.g. cargo test.

It’s relatively straightforward to use a local test Jenkins environment to validate the Jenkinsfile located in data/. There is a major caveat in that many files will fail to validate if certain plugins are not installed on the Jenkins.

Once a local Jenkins is created, be sure to set a fixed sshd port in the /configureSecurity view (e.g. 2022).

find data/valid -iname Jenkinsfile -exec ./scripts/declarative-linter {}  \;