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

使用Jenkins工作流插件加载多个构建脚本(DRY),jenkins,jenkins-workflow,Jenkins,Jenkins Workflow,我一直在玩Jenkins工作流插件,但我不确定更复杂构建的最佳实践。主要是: 当不使用DSL文本区域选项时,有没有办法从另一个groovy脚本中加载groovy脚本 我想答案是否定的,但我还是想问 我的明显动机是共享公共代码,例如克隆、安装RPM、部署等。。我的用例是跨各种AWS环境构建和部署微服务,因此我们有许多Jenkins工作和许多重复步骤 我目前的“解决方法”是使用DSL文本区域加载多个脚本: def repo = 'example-sensu-rspec-tests' node {

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

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

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

我的明显动机是共享公共代码,例如克隆、安装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还提供了,但我不确定当前的实现,即Jenkins有一个内部Git存储库

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

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

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

[cps全局库]存储库是否可以配置为指向外部存储库或与外部存储库同步

对不起,没有

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

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

[cps全局库]存储库是否可以配置为指向外部存储库或与外部存储库同步


抱歉,没有。

我们不能使用jenkins作为SCM,因此我们有一个窍门:

我们将整个WorkflowLib存储在Bitbucket中。 我们有一个詹金斯的工作,当比特桶回购被取消时,它就开始了。 jenkins作业从jenkins和Bitbucket中签出workflowLibs.git。 然后它在Jenkins中rm-rf所有内容,从Bitbucket复制最新的内容,并执行git提交和git推送,瞧,Jenkins workflowLibs从Bitbucket更新!
我们不能将jenkins用作SCM,因此我们有一个窍门:

我们将整个WorkflowLib存储在Bitbucket中。 我们有一个詹金斯的工作,当比特桶回购被取消时,它就开始了。 jenkins作业从jenkins和Bitbucket中签出workflowLibs.git。 然后它在Jenkins中rm-rf所有内容,从Bitbucket复制最新的内容,并执行git提交和git推送,瞧,Jenkins workflowLibs从Bitbucket更新!
是的,您可以从非Git存储库进行同步。从其他地方托管的Git存储库中,只需获取和推送就可以了。您有使用Jenkins SSH凭据吗?你能详细说明一下推送到Jenkins的配置吗?我真的不记得我是怎么做到的,但基本上我必须让从实例git访问这两个repo。我几乎认为我必须遵循本页上的说明才能使其正常工作:是的,您可以从非Git存储库进行同步。从其他地方托管的Git存储库中,只需获取和推送就可以了。您有使用Jenkins SSH凭据吗?你能详细说明一下推送到Jenkins的配置吗?我真的不记得我是怎么做到的,但基本上我必须让从实例git访问这两个repo。我几乎认为我必须按照本页上的说明来操作: