詹金斯与intellij共享库

时间:2018-11-18 17:50:46

标签: jenkins intellij-idea jenkins-pipeline jenkins-groovy jenkins-shared-libraries

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

如何将功能从共享库存储库转移到另一个存储jenkins文件的存储库中。

仅是为了澄清从jenkins运行时对我来说是可行的,但是我需要一种简单的方法来使用共享库回购中的功能来编写我的jenkins文件。

3 个答案:

答案 0 :(得分:2)

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

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

在之前和之后自动补全添加GDSL文件:

autocompletion without GSDL autocompletion with GSDL

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

Jenkins GSDL

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

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

(知识来源:Veaceslav Gaidarji's blog。)

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

此插件的一些很棒的功能是

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

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

还有一个example repository用于演示如何使用此插件。