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

chhqkbe1  于 2023-11-16  发布在  IntelliJ IDEA
关注(0)|答案(8)|浏览(636)

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

在网上搜索了几天之后,我们仍然没有找到关于这个问题的有用资源。因此,在这里提出一个新问题似乎是有意义的。
我们正在使用IntelliJ idea开发我们的Java项目,并希望将我们的构建与Jenkins集成。当我们在Idea中创建 Jenkinsfile 时,我们不会获得语法突出显示或自动完成。由于我们是Jenkins的新手,这些功能对我们来说非常有用。我们如何使Idea更支持Jenkinsfiles?
如果在IntelliJ IDEA中没有办法为 Jenkinsfile 获取语法突出显示和自动完成,那么其他编辑器会有帮助吗?

注意:

  • 我们使用的是Java项目,而不是Groovy项目。
  • 我们已经尝试了插件https://github.com/oliverlockwood/jenkinsfile-idea-plugin。当插件被激活时,Jenkinsfile被识别为这样,但是我们得到的不是语法突出显示,而是错误消息,请参见下文。
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'


感谢您的任何帮助!

a9wyjsp7

a9wyjsp71#

如果您希望IDEA将Jenkinsfile识别为Groovy文件,则可以添加字符串“Jenkinsfile”作为Groovy文件的有效文件名模式(通常包含文件结尾)。这是“开箱即用”支持的,无需任何额外的插件(除了“Groovy”插件,但它已经是IDEA的一部分)。
要做到这一点,请转到设置菜单,打开“编辑器”项,然后打开“文件类型”。现在在上面的列表中选择“Groovy”并添加“Jenkinsfile”。如果你想更灵活地选择Jenkinsfile的可选文件结尾,你也可以使用“Jenkinsfile*”这样的正则表达式。
设置现在应该如下所示:x1c 0d1x
您的示例现在在IDEA中看起来像这样(带有Dracula主题):

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

mi7gmzs6

mi7gmzs62#

最后,我们找到了一个适合我们的解决方案,它为Idea中的一个普通Java项目中的Jenkinsfile提供了语法突出显示和代码完成。该解决方案来自herehere(以及额外的个人实验/研究)
1.从the Groovy Page下载Groovy SDK(如果您还没有这样做),并在Java项目上配置它。
1.从您的Jenkins示例下载管道GDSL文件,该文件应该可以在https://yourJenkinsInstance.tld/pipeline-syntax/gdsl这样的链接下获得,并将其添加到Java项目的类路径中。例如,通过创建一个新的文件夹src/main/jenkins,将管道GDSL文件放在那里,并将该文件夹标记为IntelliJ IDEA中的源根目录。**确保文件扩展名为.gdsl,而不是.groovy。**否则,代码完成将不起作用。
1.添加“Jenkinsfile”作为groovy文件的有效文件名模式,如here所述
1.为了避免出现错误消息'node' cannot be applied to '(groovy.lang.Closure<java.lang.Object>),您可以在Jenkins文件的顶部添加以下行:

// noinspection GroovyAssignabilityCheck
wtlkbnrh

wtlkbnrh3#

如果添加

#!groovy​

字符串
header到你的jenkinsfile,那么你应该在IDE中获得groovy语法高亮。

7d7tgy0s

7d7tgy0s4#

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

dldeef67

dldeef675#

进入设置菜单,打开“编辑器”-->“文件类型”。现在在上面的列表中选择“Groovy”并添加“.Jenkinsfile”。如果你想更灵活地选择Jenkinsfile的可选文件结尾,你也可以使用“.Jenkinsfile”这样的正则表达式。x1c 0d1x


yhuiod9q

yhuiod9q6#

Jenkinsfile是一个类似于groovy的脚本,但通常IntelliJ会将其Map到 TextMate 编辑器。
要做到这一点,进入设置菜单,打开“编辑器”项,然后“文件类型”。现在选择“TextMate”在上面的列表中,并添加“Jenkinsfile”。如果你想更灵活地选择Jenkinsfile的可选文件结尾,你也可以使用像“Jenkinsfile*”这样的正则表达式。

waxmsbnn

waxmsbnn7#

查看源代码,似乎没有定义COMMENTS(它们在代码中被注解掉)
STEP_KEY定义为:STEP_NAME="sh" | "parallel"
我不确定插件做得更多,它没有被更新在2年.

23c0lvtd

23c0lvtd8#

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

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

字符串

相关问题