使用 IntelliJ IDEA 在 Java 项目中突出显示 Jenkinsfile 语法
Jenkinsfile syntax highlighting in Java project using IntelliJ IDEA
我们已经尝试了下面列出的方法:
- 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 被识别为这样,但是我们得到的不是语法高亮,而是一条错误消息,请看下面。
pipeline {
agent { docker 'maven:3.3.3' }
stages {
stage('build') {
steps {
sh 'echo Hello, World!'
}
}
}
}
IntelliJ IDEA 将 pipeline
的 p
突出显示为错误。错误消息如下:
JenkinsTokenType.COMMENT, JenkinsTokenType.CRLF or
JenkinsTokenType.STEP_KEY expected, got 'p'
感谢您的帮助!
我们终于找到了一个适合我们的解决方案,并为 Idea 中正常的 Java 项目中存在的 Jenkinsfile 提供语法高亮和代码完成。
解决方案取自 here, (以及其他个人实验/研究)
从 the Groovy Page and configure it on your Java project. For help on this see
下载 Groovy SDK(如果您尚未下载)
从您的 Jenkins 实例下载管道 GDSL 文件,该文件应该在 link 下可用,例如 https://yourJenkinsInstance.tld/pipeline-syntax/gdsl,并将其添加到您的 Java 的类路径中项目。例如。通过创建一个新文件夹 src/main/jenkins,将管道 gdsl 文件放在那里并在 IntelliJ Idea 中将该文件夹标记为源根目录
将“Jenkinsfile”添加为 groovy 文件的有效文件名模式,如
所述
为避免错误消息 'node' cannot be applied to '(groovy.lang.Closure<java.lang.Object>)
,您可以在 Jenkins 文件的顶部添加此行:
// 无检查 GroovyAssignabilityCheck
查看源码,好像COMMENTS
没有定义(在代码中注释掉了)
STEP_KEY
定义为:STEP_NAME="sh" | "parallel"
我不确定这个插件有更多功能,而且它已经 2 年没有更新了。
如果您希望 IDEA 将 Jenkinsfile 识别为 Groovy 文件,那么您可以将字符串 "Jenkinsfile" 添加为 [=30= 的有效文件名模式(通常包含文件结尾) ] 文件。这是受支持的 "out of the box",不需要任何额外的插件("Groovy" 插件除外,但它已经是 IDEA 的一部分)。
为此,请转到设置菜单,打开 "Editor" 项,然后打开 "File Types"。现在 select "Groovy" 在上面的列表中添加 "Jenkinsfile"。如果您想更灵活地处理以 Jenkinsfile 结尾的可选文件,您也可以使用像 "Jenkinsfile*" 这样的正则表达式。
该设置现在应如下所示:
您的示例现在在 IDEA 中看起来像这样(使用 Dracula 主题):
据我所知,IDEA 现在提供了语法高亮和自动完成功能。它在写作时建议现有 function/method 名称,但我不是 Groovy 开发人员,因此我无法判断是否缺少某些建议。
另一种选择是像这样在 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
像这样使用 sh
错误应该会消失(对我有用)...
steps {
sh """
echo 'Hello, World!'
"""
}
如果你添加
#!groovy
header 到你的 jenkinsfile 那么你应该在 IDE.
中得到 groovy 语法高亮
进入设置菜单,打开“编辑器”-->“文件类型”。现在 select “Groovy” 在上面的列表中添加 “.Jenkinsfile”。如果你想更灵活地处理以 Jenkinsfile 结尾的可选文件,你也可以使用像“.Jenkinsfile”这样的正则表达式。
Jenkinsfile 是一个类似于 groovy 的脚本,但通常 IntelliJ 将其映射到 TextMate 编辑器。
为此,请转到设置菜单,打开“编辑器”项,然后打开“文件类型”。现在 select 在上面的列表中添加“TextMate”并添加“Jenkinsfile”。如果您想更灵活地处理以 Jenkinsfile 结尾的可选文件,您也可以使用像“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 被识别为这样,但是我们得到的不是语法高亮,而是一条错误消息,请看下面。
pipeline { agent { docker 'maven:3.3.3' } stages { stage('build') { steps { sh 'echo Hello, World!' } } } }
IntelliJ IDEA 将 pipeline
的 p
突出显示为错误。错误消息如下:
JenkinsTokenType.COMMENT, JenkinsTokenType.CRLF or JenkinsTokenType.STEP_KEY expected, got 'p'
感谢您的帮助!
我们终于找到了一个适合我们的解决方案,并为 Idea 中正常的 Java 项目中存在的 Jenkinsfile 提供语法高亮和代码完成。
解决方案取自 here,
从 the Groovy Page and configure it on your Java project. For help on this see
下载 Groovy SDK(如果您尚未下载)从您的 Jenkins 实例下载管道 GDSL 文件,该文件应该在 link 下可用,例如 https://yourJenkinsInstance.tld/pipeline-syntax/gdsl,并将其添加到您的 Java 的类路径中项目。例如。通过创建一个新文件夹 src/main/jenkins,将管道 gdsl 文件放在那里并在 IntelliJ Idea 中将该文件夹标记为源根目录
将“Jenkinsfile”添加为 groovy 文件的有效文件名模式,如
所述为避免错误消息
'node' cannot be applied to '(groovy.lang.Closure<java.lang.Object>)
,您可以在 Jenkins 文件的顶部添加此行:// 无检查 GroovyAssignabilityCheck
查看源码,好像COMMENTS
没有定义(在代码中注释掉了)
STEP_KEY
定义为:STEP_NAME="sh" | "parallel"
我不确定这个插件有更多功能,而且它已经 2 年没有更新了。
如果您希望 IDEA 将 Jenkinsfile 识别为 Groovy 文件,那么您可以将字符串 "Jenkinsfile" 添加为 [=30= 的有效文件名模式(通常包含文件结尾) ] 文件。这是受支持的 "out of the box",不需要任何额外的插件("Groovy" 插件除外,但它已经是 IDEA 的一部分)。
为此,请转到设置菜单,打开 "Editor" 项,然后打开 "File Types"。现在 select "Groovy" 在上面的列表中添加 "Jenkinsfile"。如果您想更灵活地处理以 Jenkinsfile 结尾的可选文件,您也可以使用像 "Jenkinsfile*" 这样的正则表达式。
该设置现在应如下所示:
您的示例现在在 IDEA 中看起来像这样(使用 Dracula 主题):
据我所知,IDEA 现在提供了语法高亮和自动完成功能。它在写作时建议现有 function/method 名称,但我不是 Groovy 开发人员,因此我无法判断是否缺少某些建议。
另一种选择是像这样在 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
像这样使用 sh
错误应该会消失(对我有用)...
steps {
sh """
echo 'Hello, World!'
"""
}
如果你添加
#!groovy
header 到你的 jenkinsfile 那么你应该在 IDE.
中得到 groovy 语法高亮进入设置菜单,打开“编辑器”-->“文件类型”。现在 select “Groovy” 在上面的列表中添加 “.Jenkinsfile”。如果你想更灵活地处理以 Jenkinsfile 结尾的可选文件,你也可以使用像“.Jenkinsfile”这样的正则表达式。
Jenkinsfile 是一个类似于 groovy 的脚本,但通常 IntelliJ 将其映射到 TextMate 编辑器。
为此,请转到设置菜单,打开“编辑器”项,然后打开“文件类型”。现在 select 在上面的列表中添加“TextMate”并添加“Jenkinsfile”。如果您想更灵活地处理以 Jenkinsfile 结尾的可选文件,您也可以使用像“Jenkinsfile*”这样的正则表达式。