我有一个正在运行的Jenkins安装程序。我想自动执行Jenkins设置(安装)以及在Jenkins中设置的所有作业。

我可以想到的一种粗略方法是将整个Jobs目录复制到新的Jenkins设置中。

如何处理此问题?

评论

您尝试了什么?

我做了一个标准的Jenkins安装程序,然后将原始Jenkins安装程序的作业目录放在New Jenkins安装程序中。有用。但我正在寻找更好的方法。

devops.stackexchange.com/q/21/210

您如何备份Jenkins作业和主配置的可能重复项?

coderanger.net/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作业,需要gitmaven等。
启动Jenkins服务,等待它启动。

Jenkins配置

以下任务:


等待Jenkins CLI可用。
下载Jenkins CLI JAR文件
执行Jenkins CLI以创建用户,安装插件,重新启动Jenkins等并创建作业。
从备份还原作业历史记录。

Caveat


最适合未开发的环境和更简单的Jenkins设置。使用Brownfield和更复杂的项目更难(并非没有)。
这种方法需要大量的Infra-as-Code思维方式的培训,例如“不要手动进行插件安装”。 。