Evidenziazione della sintassi del file Jenkins nel progetto Java utilizzando Intellij Idea


101

Abbiamo già provato gli approcci elencati di seguito:

Dopo aver cercato sul Web per molte ore in più giorni, non abbiamo ancora trovato una risorsa utile su questo argomento. Quindi, sembra avere senso porre una nuova domanda qui.

Stiamo sviluppando i nostri progetti Java secondo l'idea di IntelliJ e vogliamo integrare le nostre build con Jenkins. Quando creiamo un file Jenkins in Idea, non otteniamo l'evidenziazione della sintassi o il completamento automatico. Dato che siamo nuovi a Jenkins, queste funzionalità ci sarebbero davvero utili. Come possiamo rendere Idea più solidale con Jenkinsfiles?

Se non è possibile ottenere l'evidenziazione della sintassi e il completamento automatico per un file Jenkins, quali altri editor sarebbero utili?

Notare che:

  • stiamo lavorando con progetti java, non progetti fantastici.
  • Abbiamo già provato il plugin https://github.com/oliverlockwood/jenkinsfile-idea-plugin . Quando il plugin è attivato, il file Jenkins viene riconosciuto come tale, ma invece di evidenziare la sintassi viene visualizzato un messaggio di errore, vedere di seguito.

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

    L'idea evidenzia come errore la "p" di "pipeline". Il messaggio di errore legge:

    JenkinsTokenType.COMMENT, JenkinsTokenType.CRLF o JenkinsTokenType.STEP_KEY previsto, ottenuto "p"

Grazie per qualsiasi aiuto!



@ y.bedrov grazie per il tuo commento. Avevamo già provato il plug-in indicato, ma abbiamo ricevuto solo un messaggio di errore, ma nessuna evidenziazione della sintassi o completamento automatico. Qual è la tua esperienza con il plug-in, funziona per te?
rexford

1
Non ho idea del motivo per cui avresti bisogno di un plug-in per queste cose di base. Basta aggiungere "Jenkinsfile" come tipo di file per Groovy (Impostazioni> Editor> Tipi di file> Groovy e aggiungere "Jenkinsfile" come "Pattern registrato"). Cosa manca dopo quella configurazione?
Tom

1
@ Tom, grazie! In realtà, il tuo commento riguarda ciò che stavamo cercando. Fornisci queste informazioni come risposta e la accetterò come risposta corretta / più utile.
rexford

2
@Tom Ciò che manca è il completamento automatico e la convalida dell'attuale DSL di Jenkins
OrangeDog

Risposte:


224

Se vuoi che IDEA riconosca un file Jenkins come file Groovy, puoi aggiungere la stringa "Jenkinsfile" come modello di nome file valido (normalmente contiene terminazioni di file) per i file Groovy. Questo è supportato "out of the box" senza richiedere alcun plug-in aggiuntivo (tranne il plug-in "Groovy", ma che fa già parte di IDEA).

Per farlo vai nel menu delle impostazioni, apri la voce "Editor" e poi "Tipi di file". Ora seleziona "Groovy" nell'elenco in alto e aggiungi "Jenkinsfile". Puoi anche usare un'espressione regolare come "Jenkinsfile *" se vuoi essere più flessibile riguardo a un file opzionale che termina per il Jenkinsfile.
L'impostazione dovrebbe ora assomigliare a questa: Impostazioni del tipo di file IDEA

Il tuo esempio ora ha questo aspetto in IDEA (con il tema Dracula): Evidenziazione della sintassi di Jenkinsfile

Quindi IDEA ora fornisce l'evidenziazione della sintassi e il completamento automatico per quanto ne so. Suggerisce nomi di funzioni / metodi esistenti durante la scrittura, ma non sono uno sviluppatore Groovy, quindi non posso dire se mancano alcuni suggerimenti.


6
Le caratteristiche che le persone vorrebbero includono la convalida / autocompletamento / quickdocs per il GDSL e l'integrazione del linter . Un plug-in ideale farebbe "funzionare" tutto con una configurazione minima (ad esempio, puntarlo su un'istanza di Jenkins).
OrangeDog

2
Solo una nota, il tipo di file groovy è disponibile solo in InteliJ e Android Studio, non in PyCharm 2018.3.2. Penso che perché questo plugin sia richiesto plugins.jetbrains.com/plugin/1524-jetgroovy
Ming

Considera anche di scaricare il file gdsl dalla tua istanza Jenkins su https: // <Jenkins> / job / <Job Name> / pipeline-syntax / gdsl e inseriscili nel percorso di classe Groovy del tuo progetto.
Stephan

1
Questa è una bella idea ma richiede la configurazione di un SDK Groovy
owensmartin

1
Brillante! Grazie mille! Sono stato in grado di riassegnare i nostri file Jenkinsfile.declarative nello stesso modo in modo da ottenere sia l'evidenziazione della sintassi che il completamento del codice. Per noi è *.declarativestato assegnato il tipo di file di testo.
icfantv


1

Di seguito è riportato il feedback che abbiamo ricevuto da IntelliJ . Continueremo a farlo se saremo in grado di fornire una soluzione funzionante.

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

Ciao Georg, non esiste uno speciale supporto Editor intellisense per la modifica dei file Jenkins in IDE. Dovrai scrivere un plugin di lingua personalizzato per questo.

Oppure puoi prendere in considerazione l'implementazione di tale supporto scrivendo Kotlin DSL. Alcuni esempi con cui iniziare.


1

Guardando il codice sorgente, sembra che i COMMENTI non siano definiti (sono commentati nel codice)

STEP_KEY è definito come: STEP_NAME = "sh" | "parallelo"

Non sono sicuro che il plugin faccia molto di più e non sia stato aggiornato da 2 anni.


-1

Se aggiungi

#!groovy

intestazione al tuo jenkinsfile, dovresti ottenere una fantastica evidenziazione della sintassi in IDE.


In intellij non funziona e questa risposta è troppo vaga in generale
Tomer Gal

-12

Usa shcosì e l'errore dovrebbe scomparire (ha funzionato per me) ...

steps {
    sh """
        echo 'Hello, World!'
    """
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.