Hervorheben der Jenkinsfile-Syntax in Java-Projekten mithilfe von Intellij Idea

100

Wir haben bereits die folgenden Ansätze ausprobiert:

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!

rexford
quelle
Es gibt ein benutzerdefiniertes Plugin: plugins.jetbrains.com/plugin/10127-jenkinsfile-idea-plugin und eine Funktionsanforderung: youtrack.jetbrains.com/issue/IDEA-158104
y.bedrov
@ y.bedrov danke für deinen Kommentar. Wir hatten das angegebene Plugin bereits ausprobiert, erhielten jedoch nur eine Fehlermeldung, jedoch keine Syntaxhervorhebung oder automatische Vervollständigung. Was ist deine Erfahrung mit dem Plugin, funktioniert es für dich?
Rexford
1
Ich habe keine Ahnung, warum Sie ein Plugin für diese grundlegenden Dinge benötigen würden. Fügen Sie einfach "Jenkinsfile" als Dateityp für Groovy hinzu (Einstellungen> Editor> Dateitypen> Groovy und fügen Sie "Jenkinsfile" als "registriertes Muster" hinzu). Was fehlt nach diesem Setup?
Tom
1
@ Tom danke! In Ihrem Kommentar geht es eigentlich um das, wonach wir gesucht haben. Bitte geben Sie diese Informationen als Antwort an, und ich werde sie als richtige / hilfreichste Antwort akzeptieren.
Rexford
2
@ Tom Was fehlt, ist die automatische Vervollständigung und Validierung des aktuellen Jenkins DSL
OrangeDog

Antworten:

223

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: IDEA-Dateitypeinstellungen

Ihr Beispiel sieht jetzt in IDEA (mit dem Dracula-Thema) so aus: Jenkinsfile-Syntax-Highlight

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.

Tom
quelle
6
Zu den Funktionen, die Benutzer wünschen, gehören Validierung / automatische Vervollständigung / Quickdocs für die GDSL und die Integration des Linter . Ein ideales Plugin würde alles mit minimaler Konfiguration "einfach funktionieren" lassen (z. B. einfach auf eine Jenkins-Instanz zeigen).
OrangeDog
2
Nur eine Anmerkung, der groovige Dateityp ist nur in InteliJ und Android Studio verfügbar, nicht in PyCharm 2018.3.2. Ich denke, weil dieses Plugin erforderlich ist plugins.jetbrains.com/plugin/1524-jetgroovy
Ming
Laden Sie auch die gdsl-Datei von Ihrer Jenkins-Instanz unter https: // <Jenkins> / job / <Jobname> / Pipeline-Syntax / gdsl herunter und fügen Sie sie in den Groovy-Klassenpfad Ihres Projekts ein.
Stephan
1
Dies ist eine nette Idee, erfordert aber die Konfiguration eines Groovy SDK
owensmartin
1
Brillant! Vielen Dank! Ich konnte unsere Jenkinsfile.declarative-Dateien auf dieselbe Weise neu zuweisen, sodass wir sowohl die Syntaxhervorhebung als auch die Code-Vervollständigung erhalten. Für uns *.declarativewurde der Textdateityp zugeordnet.
icfantv
1

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.

rexford
quelle
1

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.

Neil Millard
quelle
-1

Wenn Sie hinzufügen

#!groovy

Header zu Ihrer Jenkins-Datei, dann sollten Sie in der IDE eine groovige Syntaxhervorhebung erhalten.

Kamil Wróbel
quelle
In Intellij funktioniert es nicht und diese Antwort ist im Allgemeinen zu vage
Tomer Gal vor
-12

Verwenden Sie shso und der Fehler sollte verschwinden (hat bei mir funktioniert) ...

steps {
    sh """
        echo 'Hello, World!'
    """
}
Josh M.
quelle