ChatGPT解决这个技术问题 Extra ChatGPT

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

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

https://github.com/oliverlockwood/jenkinsfile-idea-plugin

https://st-g.de/2016/08/jenkins-pipeline-autocompletion-in-intellij

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

我们正在使用 IntelliJ idea 开发我们的 Java 项目,并希望将我们的构建与 Jenkins 集成。当我们在 Idea 中创建 Jenkinsfile 时,我们不会获得语法高亮或自动补全。由于我们是 Jenkins 的新手,因此这些功能对我们非常有用。我们如何让 Idea 对 Jenkinsfiles 提供更多支持?

如果无法在 IntelliJ IDEA 中获得 Jenkinsfile 的语法突出显示和自动完成功能,还有哪些其他编辑器会有所帮助?

请注意:

我们正在处理 Java 项目,而不是 Groovy 项目。

我们已经尝试过插件 https://github.com/oliverlockwood/jenkinsfile-idea-plugin。当插件被激活时,Jenkinsfile 会被识别出来,但是我们会收到一条错误消息,而不是语法高亮,请参见下文。管道 { 代理 { docker 'maven:3.3.3' } 阶段 { stage('build') { steps { sh 'echo Hello, World!' } } } }

IntelliJ IDEA 将 pipelinep 突出显示为错误。错误消息如下:

JenkinsTokenType.COMMENT、JenkinsTokenType.CRLF 或 JenkinsTokenType.STEP_KEY 预期,得到“p”

谢谢你的帮助!

@y.bedrov 感谢您的评论。我们已经尝试过指定的插件,但只收到一条错误消息,但没有语法突出显示或自动完成。您对插件的体验如何,它对您有用吗?
我不知道为什么你需要一个插件来处理这些基本的东西。只需将“Jenkinsfile”添加为 Groovy 的文件类型(设置 > 编辑器 > 文件类型 > Groovy 并将“Jenkinsfile”添加为“注册模式”)。设置后缺少什么?
@汤姆谢谢!实际上,您的评论是关于我们正在寻找的内容。请提供此信息作为答案,我将接受它作为正确/最有帮助的答案。
@Tom 缺少的是实际 Jenkins DSL 的自动完成和验证

T
Tom

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

https://i.stack.imgur.com/9n0SA.jpg

https://i.stack.imgur.com/SppcN.jpg

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


人们想要的功能包括 the GDSL 的验证/自动完成/快速文档和 the linter 的集成。一个理想的插件可以使所有东西都“正常工作”,只需最少的配置(例如,只需将它指向一个 Jenkins 实例)。
请注意,groovy 文件类型仅在 InteliJ 和 Android Studio 中可用,在 PyCharm 2018.3.2 中。我想因为这个插件是必需的plugins.jetbrains.com/plugin/1524-jetgroovy
还可以考虑从 https:///job//pipeline-syntax/gdsl 的 Jenkins 实例下载 gdsl 文件,并将它们放入项目的 Groovy 类路径中。
这是个好主意,但需要配置 Groovy SDK
杰出的!太棒了!我能够以相同的方式重新分配我们的 Jenkinsfile.declarative 文件,以便我们同时获得语法高亮和代码完成。对我们来说,*.declarative 被分配给文本文件类型。
r
rexford

终于,我们找到了一个适合我们的解决方案,并为 Idea 中的一个普通 Java 项目中存在的 Jenkinsfile 提供语法突出显示和代码完成。解决方案取自 herehere(以及其他个人实验/研究)

从 Groovy Page 下载 Groovy SDK(如果您还没有这样做的话)并在您的 Java 项目上进行配置。有关这方面的帮助,请参见此处从您的 Jenkins 实例下载管道 GDSL 文件,该文件应该在 https://yourJenkinsInstance.tld/pipeline-syntax/gdsl 之类的链接下可用,并将其添加到 Java 项目的类路径中。例如,通过创建一个新文件夹 src/main/jenkins,将管道 gdsl 文件放在那里并将文件夹标记为 IntelliJ Idea 中的源根目录 添加“Jenkinsfile”作为 groovy 文件的有效文件名模式,如此处所述以避免错误消息' node' 不能应用于 '(groovy.lang.Closure),你可以在 Jenkinsfile 的顶部添加这一行: // noinspection GroovyAssignabilityCheck


f
futchas

另一种选择是在 Jenkinsfile 顶部使用 shabang,如 #!/usr/bin/env groovy。您也可以尝试 gdsl: https://st-g.de/2016/08/jenkins-pipeline-autocompletion-in-intellij 但到目前为止它不支持声明性管道:https://issues.jenkins-ci.org/browse/JENKINS-40127


K
Kamil Wróbel

如果你添加

#!groovy​

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


在 intellij 中它不起作用,而且这个答案一般来说太模糊了
N
Neuron

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

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

我不确定这个插件能做更多的事情,而且它在 2 年内没有更新。


k
ksr

https://i.stack.imgur.com/yVaIC.png

https://i.stack.imgur.com/b1unD.png


w
wizardInCloud

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

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


为 Pycharm 2022.1.2 专业版工作!谢谢
J
Josh M.

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

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