Mise en évidence de la syntaxe Jenkinsfile dans un projet Java à l'aide d'Intellij Idea


101

Nous avons déjà essayé les approches énumérées ci-dessous:

Après avoir effectué des recherches sur le Web pendant plusieurs heures sur plusieurs jours, nous n'avons toujours pas trouvé de ressource utile à ce sujet. Il semble donc logique de poser une nouvelle question ici.

Nous développons nos projets Java dans IntelliJ idea et souhaitons intégrer nos builds avec Jenkins. Lorsque nous créons un fichier Jenkins dans Idea, nous n'obtenons pas de coloration syntaxique ni de complétion automatique. Puisque nous sommes nouveaux sur Jenkins, ces fonctionnalités nous seraient vraiment utiles. Comment pouvons-nous rendre Idea plus favorable avec Jenkinsfiles?

S'il n'y a aucun moyen d'obtenir la coloration syntaxique et la complétion automatique d'un fichier Jenkins en idée, quels autres éditeurs seraient utiles?

Notez s'il vous plaît:

  • nous travaillons avec des projets java, pas des projets groovy.
  • Nous avons déjà essayé le plugin https://github.com/oliverlockwood/jenkinsfile-idea-plugin . Lorsque le plugin est activé, le Jenkinsfile est reconnu comme tel, mais au lieu de mettre en évidence la syntaxe, nous obtenons un message d'erreur, veuillez voir ci-dessous.

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

    L'idée met en évidence le «p» de «pipeline» comme une erreur. Le message d'erreur se lit comme suit:

    JenkinsTokenType.COMMENT, JenkinsTokenType.CRLF ou JenkinsTokenType.STEP_KEY attendu, a obtenu 'p'

Merci pour toute aide!


Il existe un plugin personnalisé: plugins.jetbrains.com/plugin/10127-jenkinsfile-idea-plugin et une demande de fonctionnalité: youtrack.jetbrains.com/issue/IDEA-158104
y.bedrov

@ y.bedrov merci pour votre commentaire. Nous avions déjà essayé le plugin indiqué, mais nous n'avons reçu qu'un message d'erreur, mais pas de coloration syntaxique ni de complétion automatique. Quelle est votre expérience avec le plugin, cela fonctionne-t-il pour vous?
rexford

1
Je ne sais pas pourquoi vous auriez besoin d'un plugin pour ce truc de base. Ajoutez simplement "Jenkinsfile" comme type de fichier pour Groovy (Paramètres> Editeur> Types de fichiers> Groovy et ajoutez "Jenkinsfile" comme "Pattern enregistré"). Qu'est-ce qui manque après cette configuration?
Tom

1
@Tom merci! En fait, votre commentaire porte sur ce que nous recherchions. Veuillez fournir ces informations en tant que réponse, et je les accepterai comme réponse correcte / la plus utile.
rexford

2
@Tom Ce qui manque, c'est l'auto-complétion et la validation de la DSL Jenkins réelle
OrangeDog

Réponses:


224

Si vous voulez qu'IDEA reconnaisse un fichier Jenkins en tant que fichier Groovy, vous pouvez ajouter la chaîne «Jenkinsfile» en tant que modèle de nom de fichier valide (contient normalement des fins de fichier) pour les fichiers Groovy. Ceci est pris en charge «prêt à l'emploi» sans nécessiter de plugin supplémentaire (sauf le plugin «Groovy», mais qui fait déjà partie d'IDEA).

Pour ce faire, allez dans le menu des paramètres, ouvrez l'élément "Editeur" puis "Types de fichiers". Sélectionnez maintenant "Groovy" dans la liste supérieure et ajoutez "Jenkinsfile". Vous pouvez également utiliser une expression régulière comme "Jenkinsfile *" si vous voulez être plus flexible concernant un fichier optionnel se terminant pour le Jenkinsfile.
Le paramètre devrait maintenant ressembler à ceci: Paramètres de type de fichier IDEA

Votre exemple ressemble maintenant à ceci dans IDEA (avec le thème Dracula): Mise en évidence de la syntaxe Jenkinsfile

Donc, IDEA fournit maintenant la coloration syntaxique et la complétion automatique pour autant que je sache. Il suggère des noms de fonction / méthode existants lors de l'écriture, mais je ne suis pas un développeur Groovy, donc je ne peux pas dire si certaines suggestions manquent.


6
Les fonctionnalités que les gens voudraient inclure incluent la validation / l'auto-complétion / quickdocs pour le GDSL et l'intégration du linter . Un plugin idéal ferait tout "juste fonctionner" avec une configuration minimale (par exemple, pointez-le simplement vers une instance Jenkins).
OrangeDog

2
Juste une note, le type de fichier groovy n'est disponible que dans InteliJ et Android studio, pas dans PyCharm 2018.3.2. Je pense que parce que ce plugin est requis plugins.jetbrains.com/plugin/1524-jetgroovy
Ming

Pensez également à télécharger le fichier gdsl à partir de votre instance Jenkins à l'adresse https: // <Jenkins> / job / <Nom du travail> / pipeline-syntax / gdsl et placez-les dans le chemin de classe Groovy de votre projet.
Stephan

1
C'est une bonne idée mais nécessite la configuration d'un SDK Groovy
owensmartin

1
Brillant! Merci beaucoup! J'ai pu réaffecter nos fichiers Jenkinsfile.declarative de la même manière afin que nous obtenions à la fois la coloration syntaxique et la complétion du code. Pour nous, a *.declarativeété attribué au type de fichier texte.
icfantv le


1

Vous trouverez ci-dessous les commentaires d' IntelliJ . Nous en assurerons le suivi si nous sommes en mesure de fournir une solution fonctionnelle.

Andrey Dernov, IntelliJ, 14 déc, 07:50 CET

Bonjour Georg, il n'y a pas de support spécial de l'éditeur intellisense pour l'édition des fichiers Jenkins dans l'IDE. Vous devrez écrire un plugin de langage personnalisé pour cela.

Ou vous pouvez envisager de mettre en œuvre un tel support via l'écriture de Kotlin DSL. Quelques exemples pour commencer.


1

En regardant le code source, il semble que les COMMENTAIRES ne soient pas définis (ils sont commentés dans le code)

STEP_KEY est défini comme suit: STEP_NAME = "sh" | "parallèle"

Je ne suis pas sûr que le plugin fasse beaucoup plus et il n'a pas été mis à jour depuis 2 ans.


-1

Si vous ajoutez

#!groovy

dans votre fichier jenkins, vous devriez obtenir une coloration syntaxique groovy dans l'IDE.


Dans intellij ça ne marche pas et cette réponse est trop vague en général
Tomer Gal

-12

Utilisez shcomme ça et l'erreur devrait disparaître (a fonctionné pour moi) ...

steps {
    sh """
        echo 'Hello, World!'
    """
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.