使用Intellij Idea在Java项目中突出显示Jenkinsfile语法

时间:2017-12-13 15:29:43

标签: java jenkins intellij-idea autocomplete syntax-highlighting

我们已经尝试过以下方法:

在多天搜索网络了好几个小时后,我们仍未找到有关这方面的有用资源。因此,在这里提出一个新问题似乎是有意义的。

我们正在开发IntelliJ创意的Java项目,并希望将我们的构建与Jenkins集成。当我们在Idea中创建Jenkins文件时,我们不会获得语法突出显示或自动完成。由于我们是Jenkins的新手,这些功能对我们非常有用。我们如何才能让Jenkinsfiles更加支持Idea?

如果无法在想法中获得Jenkins文件的语法突出显示和自动完成功能,那么其​​他编辑器会有什么帮助?

请注意:

  • 我们正在处理java项目,而不是groovy项目。
  • 我们已经尝试过插件https://github.com/oliverlockwood/jenkinsfile-idea-plugin。当插件被激活时,Jenkins文件被识别为,但是语法高亮显示我们收到错误消息,请参见下文。

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

    Idea强调'管道'的'p'为错误。错误消息显示为:

    JenkinsTokenType.COMMENT,JenkinsTokenType.CRLF或JenkinsTokenType.STEP_KEY预期,获得'p'

感谢您的帮助!

6 个答案:

答案 0 :(得分:130)

如果您希望IDEA将Jenkins文件识别为Groovy文件,则可以将字符串“Jenkinsfile”添加为Groovy文件的有效文件名模式(通常包含文件结尾)。这是“开箱即用”支持,不需要任何额外的插件(“Groovy”插件除外,但它已经是IDEA的一部分)。

要执行此操作,请转到设置菜单,打开“编辑器”项,然后打开“文件类型”。现在在上面的列表中选择“Groovy”并添加“Jenkinsfile”。如果你想更灵活地使用Jenkins文件的可选文件,你也可以使用像“Jenkinsfile *”这样的正则表达式。
该设置现在应如下所示: IDEA file type settings

您的示例现在在IDEA(具有Dracula主题)中看起来像这样: Jenkinsfile syntax highlight

因此,就我所知,IDEA现在提供语法高亮和自动完成功能。它在写作时建议现有的函数/方法名称,但我不是Groovy开发人员,因此我无法判断是否缺少某些建议。

答案 1 :(得分:4)

Another option is to use a shabang on top of the Jenkinsfile like this #!/usr/bin/env groovy. Also you can try out gdsl: https://st-g.de/2016/08/jenkins-pipeline-autocompletion-in-intellij but so far it doesn't support declarative pipelines: https://issues.jenkins-ci.org/browse/JENKINS-40127

答案 2 :(得分:2)

如果添加

#!groovy​

指向您的jenkinsfile的标题,那么您应该在IDE中突出显示常规的语法。

答案 3 :(得分:1)

以下是我们从 IntelliJ 获得的反馈。如果我们能够提供可行的解决方案,我们将对此进行跟进。

Andrey Dernov,IntelliJ,12月14日,07:50 CET

Hello Georg,没有特殊的编辑器智能感知支持在IDE中编辑Jenkinsfiles。您需要为此编写自定义语言插件。

或者您可以考虑通过编写Kotlin DSL来实现此类支持。一些例子开始。

答案 4 :(得分:1)

查看源代码,看起来没有定义COMMENTS(它们在代码中被注释掉)

STEP_KEY定义为:STEP_NAME =“sh”| “平行”

我不确定这个插件做得多多,并且在2年内没有更新。

答案 5 :(得分:-4)

像这样使用sh,错误应该消失了(对我有用)...

steps {
    sh """
        echo 'Hello, World!'
    """
}