Resaltado de sintaxis de Jenkinsfile en un proyecto Java usando Intellij Idea

101

Ya probamos los enfoques que se enumeran a continuación:

Después de haber buscado en la web durante muchas horas durante varios días, todavía no hemos encontrado un recurso útil sobre este asunto. Por lo tanto, parece tener sentido hacer una nueva pregunta aquí.

Estamos desarrollando nuestros proyectos Java en la idea de IntelliJ y queremos integrar nuestras compilaciones con Jenkins. Cuando creamos un archivo Jenkins en Idea, no obtenemos resaltado de sintaxis ni finalización automática. Dado que somos nuevos en Jenkins, esas características nos serían realmente útiles. ¿Cómo podemos hacer que Idea sea más solidario con Jenkinsfiles?

Si no hay forma de obtener el resaltado de sintaxis y la finalización automática para un archivo Jenkins en idea, ¿qué otros editores serían útiles?

Tenga en cuenta:

  • estamos trabajando con proyectos java, no proyectos maravillosos.
  • Ya probamos el complemento https://github.com/oliverlockwood/jenkinsfile-idea-plugin . Cuando se activa el complemento, el archivo Jenkins se reconoce como tal, pero en lugar de resaltar la sintaxis recibimos un mensaje de error, consulte a continuación.

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

    Idea destaca la 'p' de 'pipeline' como error. El mensaje de error dice:

    JenkinsTokenType.COMMENT, JenkinsTokenType.CRLF o JenkinsTokenType.STEP_KEY esperado, obtuvo 'p'

¡Gracias por cualquier ayuda!

Rexford
fuente
Hay un complemento personalizado: plugins.jetbrains.com/plugin/10127-jenkinsfile-idea-plugin y solicitud de función: youtrack.jetbrains.com/issue/IDEA-158104
y.bedrov
@ y.bedrov gracias por tu comentario. Ya habíamos probado el complemento indicado, pero solo recibimos un mensaje de error, pero sin resaltado de sintaxis ni finalización automática. ¿Cuál es tu experiencia con el complemento? ¿Funciona para ti?
Rexford
1
No tengo idea de por qué necesitarías un complemento para estas cosas básicas. Simplemente agregue "Jenkinsfile" como un tipo de archivo para Groovy (Configuración> Editor> Tipos de archivo> Groovy y agregue "Jenkinsfile" como un "Patrón registrado"). ¿Qué falta después de esa configuración?
Tom
1
@Tom gracias! En realidad, tu comentario es sobre lo que estábamos buscando. Proporcione esta información como respuesta y la aceptaré como la respuesta correcta / más útil.
rexford
2
@Tom Lo que falta es el autocompletado y la validación del DSL Jenkins real
OrangeDog

Respuestas:

224

Si desea que IDEA reconozca un archivo Jenkins como un archivo Groovy, puede agregar la cadena "Jenkinsfile" como un patrón de nombre de archivo válido (normalmente contiene terminaciones de archivo) para los archivos Groovy. Esto se admite "listo para usar" sin requerir ningún complemento adicional (excepto el complemento "Groovy", pero que ya es parte de IDEA).

Para hacerlo, vaya al menú de configuración, abra el elemento "Editor" y luego "Tipos de archivo". Ahora seleccione "Groovy" en la lista superior y agregue "Jenkinsfile". También puede usar una expresión regular como "Jenkinsfile *" si desea ser más flexible con respecto a un final de archivo opcional para Jenkinsfile.
La configuración ahora debería verse así: Configuración de tipo de archivo IDEA

Su ejemplo ahora se ve así en IDEA (con el tema de Drácula): Resaltado de sintaxis de Jenkinsfile

Así que IDEA ahora proporciona resaltado de sintaxis y autocompletado hasta donde yo sé. Sugiere nombres de funciones / métodos existentes mientras escribo, pero no soy un desarrollador Groovy, por lo que no puedo decir si faltan algunas sugerencias.

Tom
fuente
6
Las características que la gente desearía incluir validación / autocompletado / documentos rápidos para GDSL e integración del linter . Un complemento ideal haría que todo "simplemente funcione" con una configuración mínima (por ejemplo, apúntelo a una instancia de Jenkins).
OrangeDog
2
Solo una nota, el tipo de archivo maravilloso solo está disponible en InteliJ y Android Studio, no en PyCharm 2018.3.2. Creo que debido a que este complemento es necesario plugins.jetbrains.com/plugin/1524-jetgroovy
Ming
También considere descargar el archivo gdsl de su instancia de Jenkins en https: // <Jenkins> / job / <Job Name> / pipeline-syntax / gdsl y colóquelos en la ruta de clase Groovy de su proyecto.
Stephan
1
Esta es una buena idea, pero requiere que se configure un SDK Groovy
owensmartin
1
¡Brillante! ¡Muchas gracias! Pude reasignar nuestros archivos declarativos Jenkinsfile de la misma manera para que obtengamos tanto el resaltado de sintaxis como la finalización del código. Para nosotros *.declarativese asignó al tipo de archivo de texto.
icfantv
1

A continuación se muestran los comentarios que hemos recibido de IntelliJ . Haremos un seguimiento de esto si podemos proporcionar una solución funcional.

Andrey Dernov, IntelliJ, 14 de diciembre, 07:50 CET

Hola, Georg, no hay un editor intellisense especial para editar archivos Jenkins en IDE. Deberá escribir un complemento de idioma personalizado para esto.

O puede considerar implementar dicho soporte escribiendo Kotlin DSL. Algunos ejemplos para empezar.

Rexford
fuente
1

Mirando el código fuente, parece que los COMENTARIOS no están definidos (están comentados en el código)

STEP_KEY se define como: STEP_NAME = "sh" | "paralela"

No estoy seguro de que el complemento haga mucho más y no se ha actualizado en 2 años.

Neil Millard
fuente
-1

Si agrega

#!groovy

encabezado a su archivo jenkins, entonces debería obtener un resaltado de sintaxis maravilloso en IDE.

Kamil Wróbel
fuente
En intellij, no funciona y esta respuesta es demasiado vaga en general
Tomer Gal
-12

Úselo shasí y el error debería desaparecer (funcionó para mí) ...

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