Jenkins 与 Intellij 共享库

Sha*_*uan 14 intellij-idea jenkins jenkins-groovy jenkins-pipeline jenkins-shared-libraries

我开始实现 Jenkins 共享库,并尝试使用 Intellij 作为我的 ide 编写我的 jenkinsfile。

如何从共享库存储库获取函数到其中包含 jenkins 文件的另一个存储库。

只是为了澄清从 jenkins 运行时对我有用的东西,但我需要一种简单的方法来编写我的 jenkins 文件,并使用来自 shared-lib 存储库的函数。

Mar*_*uer 10

您可以尝试在您的 IDE 中使用 Jenkins 提供的IntelliJ IDEA GDSL文件。

从下载内容http://<JENKINS>/job/<PIPELINE_JOB>/pipeline-syntax/gdsl到一个pipline.gdsl文件,这个文件添加到您的IntelliJ詹金斯管道项目的源文件夹中。(您可能还想将该文件添加到您的 SCM 忽略列表中。)

自动完成之前之后加入GDSL文件:

没有 GDSL 的自动完成 使用 GDSL 自动完成

Jenkins UI 上,您会在“管道语法 > IntelliJ IDEA GDSL”下的管道项目中找到该 GDSL 文件。

詹金斯GDSL

但是,我发现此解决方案有一些需要我手动编辑pipeline.gdsl文件的警告,但这可能与我的 Jenkins 安装不是最新的有关 (?):

  • /varGDSL 文件中考虑了自定义全局变量(来自文件夹),但不考虑在该变量定义的方法
  • parallel工序中不正确导出由于错误(?)的ParallelStep

(知识来源:Veaceslav Gaidarji 的博客。)

  • 找到了:不需要 `job/&lt;PIPELINE_JOB&gt;/` 部分。可直接通过“http://&lt;JENKINS&gt;/pipeline-syntax/gdsl”访问 (3认同)

Sla*_*don 6

我在mkobit 结合 IntelliJ IDEA 的jenkins-pipeline-shared-libraries-gradle-plugin方面有很好的经验。

这个插件的一些很棒的功能是

  • 用于验证源代码的基本 Groovy 编译
  • 使用 Jenkins 流水线单元进行单元测试
  • 库中插件和Jenkins核心类的使用
  • @Grab 对库的支持(由于问题,测试仅限于 @JenkinsRule 风格的集成测试)
  • @NonCPS 注释可以在主要源代码中使用
  • 使用 Jenkins Test Harness 进行集成测试

就个人而言,我在共享库项目中开发我的管道,并在通过单元测试后将管道集成到目标存储库中。

还有一个示例存储库用于演示使用此插件。


gro*_*gor 3

您可以将 jenkins 共享库创建为具有特定组 ID、工件 ID 和版本的 Maven 项目(或 gradle,这并不重要)。每当您更改共享库时,您都应该执行“mvn install”(此目标用于将共享库 jar 工件添加到本地 Maven 存储库)。在另一个您将编写 jenkins 文件的存储库中,您还应该创建一个 Maven 项目,并将共享库添加为 Maven 依赖项。现在您可以在 jenkins 文件中使用共享库中的代码。