16

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

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

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

4

3 回答 3

10

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

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

添加GDSL文件前后的自动补全:

没有 GDSL 的自动补全 使用 GDSL 自动补全

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

詹金斯 GDSL

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

  • 在 GDSL 文件中考虑了自定义全局变量(来自/var文件夹),但没有在该变量上定义的方法。
  • 由于类上的错误(?) ,parallel步骤未正确导出ParallelStep

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

于 2019-02-27T15:58:57.797 回答
7

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

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

  • 用于验证源代码的基本 Groovy 编译
  • 使用 Jenkins Pipeline Unit 进行单元测试
  • 库中插件和 Jenkins 核心类的使用
  • @Grab 对库的支持(由于问题,测试仅限于 @JenkinsRule 样式集成测试)
  • @NonCPS 注解可用于主要源代码
  • 使用 Jenkins 测试工具进行集成测试

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

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

于 2018-11-20T09:55:30.477 回答
3

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

于 2018-11-19T20:52:42.793 回答