web-dev-qa-db-fra.com

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

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

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

Nous développons nos Java projets IntelliJ et souhaitons intégrer nos versions à Jenkins. Lorsque nous créons un fichier Jenkins dans Idea, nous n'obtenons pas de surbrillance de la syntaxe ni de complétion automatique. Comme nous sommes nouveaux dans Jenkins, ces fonctionnalités nous seraient très utiles. Comment pouvons-nous rendre Idea plus favorable avec Jenkinsfiles?

S'il n'y a aucun moyen d'obtenir la coloration syntaxique et l'auto-complétion pour un fichier Jenkins dans l'idée, quels autres éditeurs pourraient être utiles?

Notez s'il vous plaît:

  • nous travaillons avec Java projets, pas de projets groovy.
  • Nous avons déjà essayé le plugin https://github.com/oliverlockwood/jenkinsfile-idea-plugin . Lorsque le plug-in est activé, le fichier Jenkins est reconnu en tant que 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" du "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!

68
rexford

Si vous voulez que 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 (contenant normalement des fins de fichier) pour les fichiers Groovy. Ceci est pris en charge "out of the box" sans nécessiter de plug-in supplémentaire (à l'exception du plug-in "Groovy", mais cela fait déjà partie d'IDEA).

Pour ce faire, allez dans le menu des paramètres, ouvrez l’item "Editeur" puis "Types de fichiers". Maintenant, sélectionnez "Groovy" dans la liste supérieure et ajoutez "Jenkinsfile". Vous pouvez également utiliser une expression rationnelle telle que "Jenkinsfile *" si vous souhaitez être plus flexible en ce qui concerne un fichier facultatif se terminant par le fichier Jenkinsfile.
Le paramètre devrait maintenant ressembler à ceci: IDEA file type settings

Votre exemple ressemble maintenant à ceci dans IDEA (avec le thème Dracula): Jenkinsfile syntax highlight

Donc, IDEA fournit maintenant la coloration syntaxique et l'auto-complétion, 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 s'il manque des suggestions.

161
Tom

Une autre option consiste à utiliser un shabang au-dessus du fichier Jenkins comme ceci #!/usr/bin/env groovy. Aussi, vous pouvez essayer gdsl: https://st-g.de/2016/08/jenkins-pipeline-autocompletion-in-intellij mais jusqu'ici, il ne supporte pas les pipelines déclaratifs: - https://issues.jenkins-ci.org/browse/JENKINS-40127

4
futchas

En regardant le code source, il apparaît que COMMENTS n'est pas défini (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 en fasse beaucoup plus et il n'a pas été mis à jour depuis 2 ans.

1
Neil Millard

Ci-dessous sont les commentaires que nous avons de IntelliJ. Nous ferons un suivi si nous sommes en mesure de fournir une solution efficace.

Andrey Dernov, IntelliJ, 14 décembre, 07h50 CET

Bonjour Georg, il n’existe pas de support spécial de la part d’éditeur intellisense pour l’édition de Jenkinsfiles dans IDE. Pour cela, vous devrez écrire un plugin de langue personnalisé.

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

1
rexford