我一直在玩 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 上)吗?否则,我不确定此功能的可用性(如果您不同意,请告诉我)。