使用Jenkins Workflow插件加载多个构建脚本(DRY)

时间:2015-04-23 14:31:37

标签: jenkins jenkins-workflow

我一直在使用Jenkins Workflow插件,但我不确定更复杂构建的最佳实践。主要有:

  

有没有办法从另一个groovy脚本中加载一个groovy脚本(当不使用DSL文本区域选项时)?

我认为答案是否定的,但无论如何我想问。

我明显的动机是分享公共代码(例如克隆,安装RPM,部署等)。我的用例是在各种AWS环境中构建和部署微服务,因此我们有很多Jenkins工作(以及许多重复的步骤)。

我现有的“解决方法”是使用DSL文本区域加载多个脚本:

common

flow指的是通用的东西,而<?php setcookie ('cookiename', 'value', time() + 86400); echo $_COOKIE['cookiename']; exit; ?> 则是项目特定的构建步骤。

这是一种合理的方法(显然这是一个基本的例子)?

我知道Jenkins也提供Workflow Global Library,但我不确定当前的实现(即Jenkins有一个内部Git存储库)。

是否可以将此存储库配置为指向或与外部存储库同步(例如,在GitHub上托管)?否则,我不确定这个功能有多可用(如果你不同意,请告诉我。)

2 个答案:

答案 0 :(得分:2)

  

有没有办法从另一个groovy脚本中加载一个groovy脚本

当然,使用load步骤。也许你应该澄清你的问题。

  

可以将[cps-global-lib]存储库配置为指向外部存储库或与外部存储库同步

抱歉,没有。

答案 1 :(得分:2)

我们不能使用jenkins作为我们的SCM,所以我们有一个技巧:

  1. 我们将整个 workflowLibs 存储在Bitbucket中。
  2. 我们有一个jenkins工作,当Bitbucket repo被更新时开始。
  3. jenkins的工作从Jenkins和Bitbucket检查workflowLibs.git。
  4. 然后rm -rf Jenkins中的所有内容,复制Bitbucket中的最新内容并执行“git commit&amp;&amp; git push”,并从bitbucket更新voila jenkins workflowLibs