Sintaxe do Jenkinsfile destacando no projeto Java usando Intellij Idea

101

Já tentamos as abordagens listadas abaixo:

Depois de termos pesquisado na web por muitas horas em vários dias, ainda não encontramos um recurso útil sobre este assunto. Portanto, parece fazer sentido fazer uma nova pergunta aqui.

Estamos desenvolvendo nossos projetos Java no IntelliJ idea e queremos integrar nossos builds com Jenkins. Quando criamos um Jenkinsfile no Idea, não obtemos destaque de sintaxe ou preenchimento automático. Como somos novos no Jenkins, esses recursos seriam muito úteis para nós. Como podemos fazer com que a Idea seja mais favorável com Jenkinsfiles?

Se não houver nenhuma maneira de obter destaque de sintaxe e preenchimento automático para um Jenkinsfile na ideia, quais outros editores seriam úteis?

Observe:

  • estamos trabalhando com projetos java, não com projetos bacanas.
  • Já testamos o plugin https://github.com/oliverlockwood/jenkinsfile-idea-plugin . Quando o plugin é ativado, o Jenkinsfile é reconhecido como tal, mas em vez do destaque de sintaxe, obtemos uma mensagem de erro, por favor veja abaixo.

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

    A ideia destaca o 'p' de 'pipeline' como um erro. A mensagem de erro é:

    JenkinsTokenType.COMMENT, JenkinsTokenType.CRLF ou JenkinsTokenType.STEP_KEY esperado, obteve 'p'

Obrigado por qualquer ajuda!

Rexford
fonte
Há um plug-in personalizado: plugins.jetbrains.com/plugin/10127-jenkinsfile-idea-plugin e solicitação de recurso: youtrack.jetbrains.com/issue/IDEA-158104
y.bedrov
@ y.bedrov obrigado pelo seu comentário. Já havíamos tentado o plugin indicado, mas apenas obtivemos uma mensagem de erro, mas sem realce de sintaxe ou preenchimento automático. Qual é a sua experiência com o plugin, ele funciona para você?
rexford
1
Não tenho ideia de por que você precisaria de um plugin para essas coisas básicas. Basta adicionar "Jenkinsfile" como um tipo de arquivo para Groovy (Configurações> Editor> Tipos de arquivo> Groovy e adicionar "Jenkinsfile" como um "Padrão registrado"). O que está faltando após essa configuração?
Tom
1
@Tom obrigado! Na verdade, seu comentário é sobre o que estávamos procurando. Forneça essas informações como uma resposta e eu irei aceitá-las como a resposta correta / mais útil.
rexford
2
@Tom O que está faltando é o autocompletar e a validação do Jenkins DSL real
OrangeDog

Respostas:

224

Se você deseja que o IDEA reconheça um Jenkinsfile como um arquivo Groovy, pode adicionar a String "Jenkinsfile" como um padrão de nome de arquivo válido (normalmente contém terminações de arquivo) para arquivos Groovy. Isso é suportado "fora da caixa" sem a necessidade de nenhum plug-in adicional (exceto o plug-in "Groovy", mas que já faz parte do IDEA).

Para isso vá ao menu de configurações, abra o item "Editor" e depois "Tipos de arquivo". Agora selecione "Groovy" na lista superior e adicione "Jenkinsfile". Você também pode usar um regex como "Jenkinsfile *" se quiser ser mais flexível em relação a uma terminação de arquivo opcional para o Jenkinsfile.
A configuração agora deve ser semelhante a esta: Configurações de tipo de arquivo IDEA

Seu exemplo agora se parece com este no IDEA (com o tema Drácula): Destaque de sintaxe do Jenkinsfile

Portanto, o IDEA agora fornece destaque de sintaxe e preenchimento automático, tanto quanto eu posso dizer. Ele sugere nomes de função / método existentes enquanto escrevo, mas não sou um desenvolvedor Groovy, portanto, não posso dizer se algumas sugestões estão faltando.

Tom
fonte
6
Os recursos que as pessoas gostariam de incluir validação / autocompletion / quickdocs para o GDSL e integração do linter . Um plugin ideal faria tudo "simplesmente funcionar" com configuração mínima (por exemplo, apenas apontar para uma instância do Jenkins).
OrangeDog
2
Apenas uma observação: o tipo de arquivo bacana está disponível apenas no InteliJ e no Android Studio, não no PyCharm 2018.3.2. Acho que porque este plugin é necessário plugins.jetbrains.com/plugin/1524-jetgroovy
Ming
Considere também fazer o download do arquivo gdsl de sua instância Jenkins em https: // <Jenkins> / job / <Job Name> / pipeline-syntax / gdsl e colocá-los no classpath Groovy de seu projeto.
Stephan de
1
Esta é uma boa ideia, mas requer a configuração de um SDK do Groovy
owensmartin de
1
Brilhante! TY muito! Consegui reatribuir nossos arquivos Jenkinsfile.declarative da mesma maneira para que obtivéssemos o realce de sintaxe e o preenchimento de código. Para nós *.declarativefoi atribuído ao tipo de arquivo Texto.
icfantv
1

Abaixo está o feedback que recebemos do IntelliJ . Faremos o acompanhamento se formos capazes de fornecer uma solução de trabalho.

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

Olá Georg, não há suporte para o Intellisense Editor especial para editar arquivos Jenkins no IDE. Você precisará escrever um plugin de idioma personalizado para isso.

Ou você pode considerar a implementação de tal suporte escrevendo Kotlin DSL. Alguns exemplos para começar.

Rexford
fonte
1

Olhando para o código-fonte, parece que os COMENTÁRIOS não estão definidos (eles estão comentados no código)

O STEP_KEY é definido como: STEP_NAME = "sh" | "paralelo"

Não tenho certeza se o plug-in faz muito mais e não é atualizado há 2 anos.

Neil Millard
fonte
-1

Se você adicionar

#!groovy

cabeçalho para seu arquivo jenkins, então você deve obter destaque de sintaxe groovy no IDE.

Kamil Wróbel
fonte
No intellij não está funcionando e esta resposta é muito vaga em geral
Tomer Gal
-12

Use shassim e o erro deve ir embora (funcionou para mim) ...

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