
Jenkins Pipeline Plugin: Code-Vervollständigung in IntelliJ
Das Pipeline Plugin (früher Workflow Plugin) für Jenkins revolutioniert die Arbeit mit Jenkins, indem es das Erstellen von Build Jobs als Code ermöglicht. Dadurch werden Build Pipelines unter anderem wiederverwendbar, versionierbar, testbar und einfacher lesbar als etwas “Zusammengeklicktes“.
Um die auf Groovy basierende Jenkins Pipeline Domain Specific Language (DSL) explorativ zu erlernen und auch später effizient damit zu arbeiten, ist Code-Vervollständigung sehr hilfreich. Dieser Artikel zeigt wie sich dies in wenigen Schritten mit IntelliJ IDEA realisieren lässt.
Bei der Verwendung des Pipeline Plugins ist es Konvention, die Pipeline in der Datei Jenkinsfile zu beschreiben. Wer sich an diese hält, bekommt die halbe Miete der Code-Vervollständigung von IDEA geschenkt – der Dateiname Jenkinsfile ist bereits mit der Programmiersprache Groovy assoziiert. Dadurch hat man bereits Code Vervollständigung für alle Groovy-Sprachkonstrukte.
Bezüglich der Pipeline DSL hilft dies aber nicht weiter. Die hier verfügbaren Sprachkonstrukte hängen davon ab welche Plugins auf der jeweils verwendeten Jenkins-Instanz installiert sind. Daher muss diese Information auch von dort bezogen werden. Das Pipeline Plugin stellt dafür eine Beschreibung in Form einer Groovy DSL Script (GDSL-) Datei bereit. Diese kann unter
https:///job//pipeline-syntax/gdsl
heruntergeladen werden. Wenn Jenkins beispielsweise unter localhost läuft und ein Job myproject eingerichtet ist, lautet die URL zur GDSL
https://localhost/job/myproject/pipeline-syntax/gdsl
Damit diese von IntelliJ gelesen wird, muss sie in einem Source-Ordner mit der Endung .gdsl gespeichert werden, beispielsweise unter src/main/groovy/jenkins.gdsl. Abhängig vom Ordner und Projekt muss dieser Ordner noch unter File | Project Structure | Modules | als Sources Ordner gekennzeichnet werden. Spätestens dann sollte im Jenkinsfile folgendes möglich sein:

Getestet mit IntelliJ 2017.1.2 und Jenkins ver. 2.46.2.
Kommentare
Keine Kommentare