Podświetlanie składni plików Jenkins w projekcie Java przy użyciu Intellij Idea

103

Wypróbowaliśmy już podejścia wymienione poniżej:

Po wielu godzinach przeszukiwania sieci przez wiele dni nadal nie znaleźliśmy pomocnego źródła w tej sprawie. Dlatego wydaje się sensowne zadać tutaj nowe pytanie.

Rozwijamy nasze projekty Java w idei IntelliJ i chcemy zintegrować nasze kompilacje z Jenkins. Kiedy tworzymy plik Jenkins w Idea, nie otrzymujemy podświetlania składni ani automatycznego uzupełniania. Ponieważ jesteśmy nowi w Jenkins, te funkcje byłyby dla nas naprawdę przydatne. Jak możemy sprawić, by Idea była bardziej pomocna dzięki Jenkinsfiles?

Jeśli nie ma możliwości uzyskania podświetlania składni i automatycznego uzupełniania dla pliku Jenkins w pomyśle, jakie inne edytory byłyby pomocne?

Proszę zanotować:

  • pracujemy nad projektami java, a nie świetnymi projektami.
  • Wypróbowaliśmy już wtyczkę https://github.com/oliverlockwood/jenkinsfile-idea-plugin . Kiedy wtyczka jest aktywowana, plik Jenkins jest rozpoznawany jako taki, ale zamiast podświetlania składni otrzymujemy komunikat o błędzie, patrz poniżej.

    pipeline {
    agent { docker 'maven:3.3.3' }
    stages {
        stage('build') {
            steps {
                sh 'echo Hello, World!'
            }
        }
      }
    }
    

    Pomysł podkreśla „p” z „potoku” jako błąd. Komunikat o błędzie brzmi:

    JenkinsTokenType.COMMENT, JenkinsTokenType.CRLF lub JenkinsTokenType.STEP_KEY oczekiwano, otrzymano „p”

Dzięki za pomoc!

rexford
źródło
Istnieje niestandardowa wtyczka: plugins.jetbrains.com/plugin/10127-jenkinsfile-idea-plugin i prośba o funkcję: youtrack.jetbrains.com/issue/IDEA-158104
y.bedrov
@ y.bedrov dzięki za komentarz. Wypróbowaliśmy już wspomnianą wtyczkę, ale otrzymaliśmy tylko komunikat o błędzie, ale bez podświetlania składni ani automatycznego uzupełniania. Jakie masz doświadczenia z wtyczką, czy to działa?
rexford,
1
Nie mam pojęcia, dlaczego potrzebujesz wtyczki do tych podstawowych rzeczy. Po prostu dodaj „Jenkinsfile” jako typ pliku dla Groovy (Ustawienia> Edytor> Typy plików> Groovy i dodaj „Jenkinsfile” jako „Zarejestrowany wzorzec”). Czego brakuje po tej konfiguracji?
Tom
1
@Tom thanks! Właściwie twój komentarz dotyczy tego, czego szukaliśmy. Podaj te informacje jako odpowiedź, a ja zaakceptuję je jako poprawną / najbardziej pomocną odpowiedź.
rexford
2
@Tom Brakuje autouzupełniania i sprawdzania poprawności rzeczywistego DSL Jenkinsa
OrangeDog,

Odpowiedzi:

231

Jeśli chcesz, aby IDEA rozpoznawał plik Jenkinsfile jako plik Groovy, możesz dodać ciąg „Jenkinsfile” jako prawidłowy wzorzec nazwy pliku (zwykle zawiera zakończenia plików) dla plików Groovy. Jest to obsługiwane „zaraz po wyjęciu z pudełka”, bez konieczności stosowania dodatkowej wtyczki (z wyjątkiem wtyczki „Groovy”, która jest już częścią IDEA).

W tym celu przejdź do menu ustawień, otwórz element „Edytor”, a następnie „Typy plików”. Teraz wybierz „Groovy” z górnej listy i dodaj „Jenkinsfile”. Możesz również użyć wyrażenia regularnego, takiego jak „Jenkinsfile *”, jeśli chcesz być bardziej elastyczny w kwestii opcjonalnego zakończenia pliku dla Jenkinsfile.
Teraz ustawienie powinno wyglądać następująco: IDEA ustawienia typu pliku

Twój przykład wygląda teraz tak w IDEA (z motywem Draculi): Podświetlanie składni pliku Jenkinsfile

Tak więc IDEA zapewnia teraz podświetlanie składni i automatyczne uzupełnianie, o ile wiem. Sugeruje istniejące nazwy funkcji / metod podczas pisania, ale nie jestem programistą Groovy, więc nie mogę stwierdzić, czy brakuje niektórych sugestii.

Tomek
źródło
6
Cechy, które ludzie chcą zawierać walidacji / autocompletion / quickdocs dla tej GDSL i integracji w puchu . Idealna wtyczka sprawiłaby, że wszystko „po prostu działało” przy minimalnej konfiguracji (np. Po prostu skieruj je na instancję Jenkinsa).
OrangeDog,
2
Uwaga, ten typ pliku groovy jest dostępny tylko w studiu InteliJ i Android, a nie w PyCharm 2018.3.2. Myślę, że ponieważ ta wtyczka jest wymagana plugins.jetbrains.com/plugin/1524-jetgroovy
Ming
Rozważ także pobranie pliku gdsl z instancji Jenkins pod adresem https: // <Jenkins> / job / <Job Name> / pipeline-syntax / gdsl i umieszczenie go w ścieżce klas Groovy projektu.
Stephan
2
To fajny pomysł, ale wymaga skonfigurowania Groovy SDK
owensmartin
1
Znakomity! Dziękuje bardzo! Udało mi się ponownie przypisać nasze pliki Jenkinsfile.declarative w ten sam sposób, aby uzyskać zarówno podświetlanie składni, jak i uzupełnianie kodu. U nas *.declarativezostał przypisany typ pliku tekstowego.
icfantv
1

Poniżej znajduje się opinia, którą otrzymaliśmy od IntelliJ . Zajmiemy się tym, jeśli będziemy w stanie zapewnić działające rozwiązanie.

Andrey Dernov, IntelliJ, 14 grudnia, 07:50 CET

Witaj Georg, nie ma specjalnego wsparcia Intellisense Editor do edycji plików Jenkins w IDE. Będziesz musiał napisać do tego niestandardową wtyczkę językową.

Lub możesz rozważyć wdrożenie takiej obsługi, pisząc Kotlin DSL. Kilka przykładów na początek.

rexford
źródło
1

Patrząc na kod źródłowy wygląda na to, że KOMENTARZE nie są zdefiniowane (są zakomentowane w kodzie)

STEP_KEY jest zdefiniowany jako: STEP_NAME = "sh" | "równolegle"

Nie jestem pewien, czy wtyczka robi znacznie więcej i nie była aktualizowana od 2 lat.

Neil Millard
źródło
0

Jeśli dodasz

#!groovy​

nagłówek do pliku jenkins, powinieneś uzyskać świetne podświetlanie składni w IDE.

Kamil Wróbel
źródło
W intellij to nie działa i ta odpowiedź jest ogólnie zbyt ogólnikowa
Tomer Gal
-14

Użyj w shten sposób, a błąd powinien zniknąć (zadziałał dla mnie) ...

steps {
    sh """
        echo 'Hello, World!'
    """
}
Josh M.
źródło