= Jenkins Declarative Parser This repository contains an grammar and parser for the link:https://www.jenkins.io/doc/book/pipeline/#declarative-pipeline-fundamentals[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`: [source,bash] ---- ❯ 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 link:https://github.com/rtyler/jdp/releases[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`). [source] ---- find data/valid -iname Jenkinsfile -exec ./scripts/declarative-linter {} \; ----