Wir haben bereits die folgenden Ansätze ausprobiert:
- https://github.com/oliverlockwood/jenkinsfile-idea-plugin
- https://st-g.de/2016/08/jenkins-pipeline-autocompletion-in-intellij
Nachdem wir an mehreren Tagen viele Stunden im Internet gesucht haben, haben wir immer noch keine hilfreiche Ressource zu diesem Thema gefunden. Es erscheint daher sinnvoll, hier eine neue Frage zu stellen.
Wir entwickeln unsere Java-Projekte in der IntelliJ-Idee und möchten unsere Builds in Jenkins integrieren. Wenn wir eine Jenkins-Datei in Idea erstellen, erhalten wir keine Syntaxhervorhebung oder automatische Vervollständigung. Da wir neu bei Jenkins sind, wären diese Funktionen für uns sehr nützlich. Wie können wir Idea mit Jenkinsfiles unterstützender machen?
Welche anderen Editoren wären hilfreich, wenn es keine Möglichkeit gibt, die Syntax für eine Jenkins-Datei hervorzuheben und automatisch zu vervollständigen?
Bitte beachten Sie:
- Wir arbeiten mit Java-Projekten, nicht mit groovigen Projekten.
Wir haben das Plugin https://github.com/oliverlockwood/jenkinsfile-idea-plugin bereits ausprobiert . Wenn das Plugin aktiviert ist, wird die Jenkins-Datei als solche erkannt. Anstelle der Syntaxhervorhebung wird jedoch eine Fehlermeldung angezeigt (siehe unten).
pipeline { agent { docker 'maven:3.3.3' } stages { stage('build') { steps { sh 'echo Hello, World!' } } } }
Die Idee hebt das 'p' von 'Pipeline' als Fehler hervor. Die Fehlermeldung lautet:
JenkinsTokenType.COMMENT, JenkinsTokenType.CRLF oder JenkinsTokenType.STEP_KEY erwartet, 'p'
Vielen Dank für jede Hilfe!
Antworten:
Wenn Sie möchten, dass IDEA eine Jenkins-Datei als Groovy-Datei erkennt, können Sie die Zeichenfolge "Jenkins-Datei" als gültiges Dateinamenmuster (normalerweise mit Dateiendungen) für Groovy-Dateien hinzufügen. Dies wird "out of the box" unterstützt, ohne dass ein zusätzliches Plugin erforderlich ist (mit Ausnahme des "Groovy" -Plugins, das jedoch bereits Teil von IDEA ist).
Gehen Sie dazu zum Einstellungsmenü, öffnen Sie den Eintrag "Editor" und dann "Dateitypen". Wählen Sie nun "Groovy" in der oberen Liste und fügen Sie "Jenkinsfile" hinzu. Sie können auch einen regulären Ausdruck wie "Jenkinsfile *" verwenden, wenn Sie hinsichtlich einer optionalen Datei, die für die Jenkinsfile endet, flexibler sein möchten.
Die Einstellung sollte nun folgendermaßen aussehen:
Ihr Beispiel sieht jetzt in IDEA (mit dem Dracula-Thema) so aus:
So bietet IDEA jetzt, soweit ich das beurteilen kann, Syntaxhervorhebung und automatische Vervollständigung. Es werden beim Schreiben vorhandene Funktions- / Methodennamen vorgeschlagen, aber ich bin kein Groovy-Entwickler, daher kann ich nicht feststellen, ob einige Vorschläge fehlen.
quelle
*.declarative
wurde der Textdateityp zugeordnet.Eine andere Möglichkeit ist, einen Shabang wie folgt über der Jenkins-Datei zu verwenden
#!/usr/bin/env groovy
. Sie können auch gdsl ausprobieren: https://st-g.de/2016/08/jenkins-pipeline-autocompletion-in-intellij, aber deklarative Pipelines werden bisher nicht unterstützt: https: //issues.jenkins-ci .org / browse / JENKINS-40127quelle
Nachfolgend finden Sie das Feedback von IntelliJ . Wir werden dies weiterverfolgen, wenn wir in der Lage sind, eine funktionierende Lösung bereitzustellen.
Andrey Dernov, IntelliJ, 14. Dezember, 07:50 Uhr MEZ
Hallo Georg, es gibt keine spezielle Editor-Intellisense-Unterstützung für die Bearbeitung von Jenkins-Dateien in IDE. Sie müssen hierfür ein benutzerdefiniertes Sprach-Plugin schreiben.
Sie können diese Unterstützung auch über das Schreiben von Kotlin DSL implementieren. Einige Beispiele für den Anfang.
quelle
Wenn man sich den Quellcode ansieht, sieht es so aus, als wären KOMMENTARE nicht definiert (sie sind im Code auskommentiert).
Der STEP_KEY ist definiert als: STEP_NAME = "sh" | "parallel"
Ich bin mir nicht sicher, ob das Plugin viel mehr kann und seit 2 Jahren nicht mehr aktualisiert wurde.
quelle
Wenn Sie hinzufügen
Header zu Ihrer Jenkins-Datei, dann sollten Sie in der IDE eine groovige Syntaxhervorhebung erhalten.
quelle
Verwenden Sie
sh
so und der Fehler sollte verschwinden (hat bei mir funktioniert) ...quelle