1

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

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

我想答案是否定的,但我还是想问。

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

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

def repo = 'example-sensu-rspec-tests'

node {   
    git url: 'https://github.com/bsnape/jenkins-workflow-example.git'
    common = load 'common.groovy'
    flow = load 'flow2.groovy'

    common.clone(repo)   

    flow.unit()
    flow.acceptance()

    common.deploy('staging')
}

common指通用事物,而flow将是特定于项目的构建步骤。

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

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

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

4

2 回答 2

2

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

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

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

抱歉,没有。

于 2015-04-24T14:52:17.323 回答
2

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

  1. 我们将整个工作流库存储在 Bitbucket 中。
  2. 当 Bitbucket 存储库更新时,我们有一个 jenkins 工作。
  3. jenkins 的工作检查了来自 Jenkins 和 Bitbucket 的 workflowLibs.git。
  4. 然后它 rm -rf Jenkins 中的所有内容,从 Bitbucket 复制最新的并执行“git commit && git push”,瞧 jenkins workflowLibs是从 bitbucket 更新的!
于 2015-07-23T20:52:46.960 回答