Jenkinsfile 语法突显在 Java 项目中使用 IntelliJ IDEA

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

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

我们正在开发我们的 Java 项目在 IntelliJ 的想法,并希望集成我们的构建与詹金斯。当我们在创意中创建一个 Jenkins 档案时,我们不会得到语法突显或自动完成。因为我们是詹金斯的新手,这些特性将对我们非常有用。我们怎样才能让 Ideas 更支持 Jenkinsfiles 呢?

如果没有办法在 IntelliJ 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!'
    }
    }
    }
    }
    

IntelliJ IDEA 将 pipelinep标记为错误,错误信息如下:

JenkinsTokenType.COMMENT, JenkinsTokenType.CRLF or
JenkinsTokenType.STEP_KEY expected, got 'p'

谢谢你的帮助!

89096 次浏览

最后,我们终于找到了一个适合我们的解决方案,它可以提供语法突显和代码完成功能。 该解决方案取自 给你给你(以及额外的个人实验/研究)

  1. Groovy Page下载 Groovy SDK (如果您还没有这样做的话) ,并在 Java 项目中配置它。有关这方面的帮助,请参阅这里的 < a href = “ https://stackoverflow. com/a/46125537/1614555”>

  2. 从您的 Jenkins 实例下载管道 GDSL 文件,该文件应该在像 https://yourJenkinsInstance.tld/pipeline-syntax/gdsl这样的链接下可用,并将其添加到 Java 项目的类路径中。例如,通过创建一个新的文件夹 src/main/jenkins,将管道 gdsl 文件放在那里,并在 IntelliJ Ideas 中将该文件夹标记为源根目录

  3. 添加“ Jenkinsfile”作为 Groovy 文件的有效文件名模式,如下所述 < a href = “ https://stackoverflow. com/a/48326267/1614555”>

  4. 为了避免错误消息 'node' cannot be applied to '(groovy.lang.Closure<java.lang.Object>),您可以在 Jenkins 文件的顶部添加以下代码行:

    //不检查 GroovyAssignabilityCheck

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

STEP_KEY定义为: STEP_NAME="sh" | "parallel"

我不确定这个插件能做得更多,它已经两年没有更新了。

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

要做到这一点,进入设置菜单,打开“编辑器”项目,然后“文件类型”。现在在上面的列表中选择“ Groovy”并添加“ Jenkinsfile”。如果您希望在 Jenkinsfile 的可选文件结尾方面更加灵活,也可以使用类似“ Jenkinsfile *”的正则表达式。
现在的设置应该是这样的: IDEA file type settings

您的示例现在在 IDEA 中看起来如下(带有 Dracula 主题) : Jenkinsfile syntax highlight

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

另一种选择是在 Jenkins 文件顶部使用 shabang,如下面的 #!/usr/bin/env groovy。你也可以试试 gdsl: < a href = “ https://st-g.de/2016/08/jenkins-management-autocomplete-in-intellij”rel = “ norefrer”> https://st-g.de/2016/08/jenkins-pipeline-autocompletion-in-intellij 但是到目前为止,它还不支持声明式管道: < a href = “ https://isses.jenkins-ci.org/view/JENKINS-40127”rel = “ norefrer”> https://issues.jenkins-ci.org/browse/jenkins-40127

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

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

如果你加上

#!groovy​

然后你应该在 IDE 中得到 groovy 的语法突显。

转到设置菜单,打开“编辑器”—— > “文件类型”。现在在上面的列表中选择“ Groovy”,并添加“ 。 Jenkins 文件“。您也可以使用像“.Jenkinsfile”,如果您希望在 Jenkinsfile 的可选文件结尾方面更加灵活的话。 enter image description here

enter image description here

Jenkinsfile 是一个与常规脚本类似的脚本,但通常 IntelliJ 会将其映射到 TextMate编辑器。

要做到这一点,进入设置菜单,打开“编辑器”项目,然后“文件类型”。现在在上面的列表中选择“ TextMate”并添加“ Jenkinsfile”。如果您希望在 Jenkinsfile 的可选文件结尾方面更加灵活,也可以使用类似“ Jenkinsfile *”的正则表达式。