我可以想到的一种粗略方法是将整个Jobs目录复制到新的Jenkins设置中。
如何处理此问题?
#1 楼
Jenkins本身可以通过多种方式进行配置。 Jenkins作业也是如此。最简单的方法可能是手动配置Jenkins,并通过备份和还原来复制其设置。不幸的是,这意味着要处理复制XML文件。
但是幸运的是还有其他方法。
init.groovy.d
目录当詹金斯开始时,它检查
init.groovy.d
目录并在那里执行Groovy脚本。要强制执行语言环境,我正在使用代码段。// Copied from /var/lib/jenkins/init.groovy.d/set-locale.groovy
def pluginWrapper = jenkins.model.Jenkins.instance.getPluginManager().getPlugin('locale')
def plugin = pluginWrapper.getPlugin()
plugin.setSystemLocale('en_US')
通过Groovy脚本设置Jenkins的另一个示例位于https://gist.github.com/hayderimran7 / 50cb1244cc1e856873a4-我正在使用该代码段在测试计算机上设置本地Jenkins用户。
生成作业
Jenkins Job builder
一种方法生成作业的是Jenkins Job Builder,它通过YAML配置创建XML定义作业。我个人不喜欢这种方法,因为我认为它有点怪癖-看起来像“不知道XML含义意味着生成XML文件”。但是一些大公司正在使用这种方法-JJB源自Openstack。
Job DSL插件
另一种方法是Job DSL插件(插件页面)。有一种特殊的作业类型称为种子作业,它可以从Groovy DSL创建其他作业。种子作业可以从Git中提取其他作业描述,因此您可以轻松地对其进行版本控制,重复使用等。
我个人正在使用这种方法,因为我从Jenkins开始时就可以使用这种方法。 。我什至找到了一些Jenkins工具来从现有作业中创建DSL源,但是我无法再次找到它。
要提供种子作业,您仍然可以使用
init.groovy.d
方法。 br /> 管道
当前推荐的方法可能与Jenkins Pipelines有关。您可以将您的构建管道存储在代码旁边的源VCS存储库中。
我还没有对此进行太多探讨,但是我打算这样做。
#2 楼
正如您所描述的,处理此问题的简单方法。但是,它的一些缺点是:手动Jenkins设置。
不能保证您的新Jenkins实例在版本,插件等方面与以前的实例一对一相同。
这是我过去实现此目标的一种方法。这将创建一次性Jenkins,每次都可以使用相同的插件和工具。
注意:我的设置假设已备份
Jenkins的工作历史记录。工件不会存储在Jenkins中。
您的Jenkins基础架构位于云中,例如AWS
用于基础设施的自动配置的Ansible
,并在充分使用Pipeline-as-Code的情况下使用Jenkins 2.x
一组定义的Jenkins管道。
机器/实例创建
Ansible Provisioner创建AWS Linux实例
将其添加到Ansible动态清单中
Jenkins Install
Ansible会在实例上安装Jenkins
以及任何辅助工具,例如要执行Jenkins作业,需要
git
,maven
等。启动Jenkins服务,等待它启动。
Jenkins配置
以下任务:
等待Jenkins CLI可用。
下载Jenkins CLI JAR文件
执行Jenkins CLI以创建用户,安装插件,重新启动Jenkins等并创建作业。
从备份还原作业历史记录。
Caveat
最适合未开发的环境和更简单的Jenkins设置。使用Brownfield和更复杂的项目更难(并非没有)。
这种方法需要大量的Infra-as-Code思维方式的培训,例如“不要手动进行插件安装”。 。
评论
您尝试了什么?我做了一个标准的Jenkins安装程序,然后将原始Jenkins安装程序的作业目录放在New Jenkins安装程序中。有用。但我正在寻找更好的方法。
devops.stackexchange.com/q/21/210
您如何备份Jenkins作业和主配置的可能重复项?
coderanger.net/jenkins