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

新手上路,请多包涵

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

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

我们正在 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 将 ppipeline 突出显示为错误。错误消息如下:

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

谢谢你的帮助!

原文由 rexford 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.6k
2 个回答

终于,我们找到了一个适合我们的解决方案,它为 Idea 中的一个正常 Java 项目中存在的 Jenkinsfile 提供语法高亮和代码完成。解决方案取自 此处此处(以及其他个人实验/研究)

  1. Groovy 页面 下载 Groovy SDK(如果您尚未下载)并在您的 Java 项目中配置它。如需这方面的帮助,请参见 此处

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

  3. 添加“Jenkinsfile”作为 groovy 文件的有效文件名模式,如此 所述

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

    // 不检查 GroovyAssignabilityCheck

原文由 rexford 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

该设置现在应如下所示: IDEA文件类型设置

您的示例现在在 IDEA 中看起来像这样(使用 Dracula 主题): Jenkinsfile 语法高亮

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

原文由 Tom 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏