我们已经尝试了以下列出的方法:
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 将 pipeline
的 p
突出显示为错误。错误消息如下:
JenkinsTokenType.COMMENT、JenkinsTokenType.CRLF 或 JenkinsTokenType.STEP_KEY 预期,得到“p”
谢谢你的帮助!
如果您希望 IDEA 将 Jenkinsfile 识别为 Groovy 文件,则可以将字符串“Jenkinsfile”添加为 Groovy 文件的有效文件名模式(通常包含文件结尾)。这是“开箱即用”支持的,不需要任何额外的插件(“Groovy”插件除外,但这已经是 IDEA 的一部分)。
https://i.stack.imgur.com/9n0SA.jpg
https://i.stack.imgur.com/SppcN.jpg
因此,据我所知,IDEA 现在提供语法高亮和自动完成功能。它在编写时建议现有的函数/方法名称,但我不是 Groovy 开发人员,因此我无法判断是否缺少一些建议。
终于,我们找到了一个适合我们的解决方案,并为 Idea 中的一个普通 Java 项目中存在的 Jenkinsfile 提供语法突出显示和代码完成。解决方案取自 here、here(以及其他个人实验/研究)
从 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 顶部使用 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
如果你添加
#!groovy
标头到您的 jenkinsfile 那么您应该在 IDE 中获得 groovy 语法突出显示。
查看源代码,好像没有定义COMMENTS
(它们在代码中被注释掉了)
STEP_KEY
定义为:STEP_NAME="sh" | "parallel"
我不确定这个插件能做更多的事情,而且它在 2 年内没有更新。
https://i.stack.imgur.com/yVaIC.png
https://i.stack.imgur.com/b1unD.png
Jenkinsfile 是一个类似 groovy 的脚本,但通常 IntelliJ 将其映射到 TextMate 编辑器。
为此,请转到设置菜单,打开“编辑器”项,然后打开“文件类型”。现在在上方列表中选择“TextMate”并添加“Jenkinsfile”。如果您想对 Jenkinsfile 的可选文件结尾更加灵活,也可以使用“Jenkinsfile*”之类的正则表达式。
像这样使用sh
,错误应该消失(对我有用)......
steps {
sh """
echo 'Hello, World!'
"""
}
*.declarative
被分配给文本文件类型。