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


101

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

在多天的时间里在网上搜索了多个小时之后,我们仍然没有找到有关此问题的有用资源。因此,在这里提出一个新问题似乎很有意义。

我们正在以IntelliJ理念开发Java项目,并希望将我们的构建与Jenkins集成。在Idea中创建Jenkinsfile时,不会突出显示语法或自动完成。由于我们是詹金斯的新手,因此这些功能对我们真的很有用。我们如何才能使Idea更好地支持Jenkinsfiles?

如果没有办法让Jenkinsfile语法高亮显示和自动完成,那么还有哪些其他编辑器会有所帮助?

请注意:

  • 我们正在使用Java项目,而不是常规项目。
  • 我们已经尝试过插件https://github.com/oliverlockwood/jenkinsfile-idea-plugin。激活插件后,便会识别出Jenkinsfile,但不是语法突出显示,而是显示错误消息,请参见下文。

    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'

谢谢你的帮助!



@ y.bedrov感谢您的评论。我们已经尝试过声明的插件,但只收到错误消息,但没有语法突出显示或自动完成。您对这个插件有什么经验,对您有用吗?
rexford

1
我不知道为什么您需要一个用于此基本内容的插件。只需将“ Jenkinsfile”添加为Groovy的文件类型(“设置”>“编辑器”>“文件类型”>“ Groovy”,然后将“ Jenkinsfile”添加为“注册模式”)。设置后缺少什么?
汤姆(Tom)

1
@汤姆,谢谢!实际上,您的评论是关于我们正在寻找的。请提供此信息作为答案,我将其作为正确/最有用的答案。
rexford

2
@Tom缺少的是实际的Jenkins DSL的自动补全和验证
OrangeDog

Answers:


224

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

为此,请转到设置菜单,打开“编辑器”项,然后打开“文件类型”。现在,在上方列表中选择“ Groovy”并添加“ Jenkinsfile”。如果您希望对Jenkinsfile结尾的可选文件更加灵活,也可以使用“ Jenkinsfile *”之类的正则表达式。
现在,设置应如下所示: IDEA文件类型设置

您的示例现在在IDEA(具有Dracula主题)中如下所示: Jenkinsfile语法突出显示

因此,据我所知,IDEA现在提供了语法突出显示和自动完成功能。它在编写时会建议现有的函数/方法名称,但我不是Groovy开发人员,因此我无法确定是否缺少一些建议。


6
特点是人们想包括验证/自动完成/ quickdocs为的GDSL的和集成的棉短绒。理想的插件将以最少的配置使所有内容“正常工作”(例如,将其指向Jenkins实例)。
OrangeDog

2
请注意,groovy文件类型仅在InteliJ和Android studio中可用,在PyCharm 2018.3.2中不可用。我想是因为需要这个插件plugins.jetbrains.com/plugin/1524-jetgroovy

还可以考虑从您的Jenkins实例在https:// <Jenkins> / job / <Job Name> / pipeline-syntax / gdsl下载gdsl文件,并将其放入项目的Groovy类路径中。
斯蒂芬,

1
这是一个不错的主意,但是需要配置Groovy SDK
owensmartin 19'Aug

1
辉煌!太好了!我能够以相同的方式重新分配我们的Jenkinsfile.declarative文件,这样我们既可以突出显示语法又可以完成代码。为我们*.declarative分配了文本文件类型。
icfantv


1

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

安德烈·德诺夫(Andrey Dernov),IntelliJ,12月14日,欧洲中部时间

您好Georg,在IDE中没有特殊的Editor intellisense支持可编辑Jenkinsfiles。您将需要为此编写一个自定义语言插件。

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


1

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

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

我不确定该插件还有更多功能,并且两年内还没有更新。


-1

如果添加

#!groovy

jenkinsfile的标头,那么您应该在IDE中突出显示groovy语法。


在intellij中,它不起作用,并且该答案总体而言太含糊
Tomer Gal

-12

sh像这样使用,错误应该消失(为我工作)...

steps {
    sh """
        echo 'Hello, World!'
    """
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.