Jenkins插件目录备份和恢复

8
我正在尝试找到一种备份和恢复Jenkins的方法,以便我们可以自动提供新的Jenkins。但是我无法想出一种在不包括二进制文件的情况下备份+还原路径为/path/to/jenkins/plugins的方法。我们希望备份文件以xml文件格式存在,就像Jenkins中的其他所有内容一样。我的假设是,我们可以以某种方式备份xml文件,并且如果插件二进制文件丢失,Jenkins可以通过访问Maven来恢复它们。
我更喜欢避免使用配置管理工具来安装插件,因为这样我必须以感觉过于受控的方式管理插件的版本。我很高兴只备份现有内容,并在需要时在其他位置进行恢复。开发人员应该可以自由地安装插件,而不涉及我或木偶。
由于“插件”在许多其他上下文中都被使用,因此在Google上搜索这个问题很困难。
下面的链接说它也管理插件,但我看不出来它是如何管理的 - 也许我漏掉了什么。

http://jenkins-ci.org/content/keeping-your-configuration-and-data-subversion

我已经尝试使用Git的想法,并且通常可以正常工作,但是插件不会像魔术一样重新出现在新机器上 - 只有默认插件会回来。有人能提供建议吗?

“将配置备份保存在Subversion中”的脚本处理插件配置(通常是Jenkins主目录中的XML文件),而不是插件本身。 - Dave Bacher
有人使用过grunt-jenkins吗?这看起来很有前途。具体而言,它可以“从pipeline-directory/plugins.json安装插件”。 - Jepper
我最终使用rsync同步到一个挂载了s3的s3fs桶中。我在桶上设置了版本历史。一开始我有些犹豫是否要使用s3fs,但结果出奇地好。我还设置了排除列表,以免同步zip、war等文件。 - Jepper
3个回答

7
如果您不想备份插件二进制文件,可以使用Jenkins REST API获取当前插件列表:http://jenkins:8080/pluginManager/api/json?tree=plugins[shortName,version]&pretty=true。您可以使用tree=plugins[*]查看API中更完整的字段列表。将此数据保存为配置备份的一部分,并在重新部署时使用Jenkins API恢复插件。关于插件管理器API页面的更新插件及其他文档,请参阅:http://jenkins:8080/pluginManager/api

由于某些原因,我不得不在命令行中转义方括号:curl "http://localhost:8080/pluginManager/api/json?pretty=true&tree=plugins\[shortName,version\]"。但是请注意:wget 不需要转义。 - MarkHu

1
到目前为止,我想到的最好的主意是将实例分成一个OS磁盘和一个挂载在/var/lib/jenkins上的Jenkins磁盘。使用云提供商的快照功能定期备份Jenkins磁盘。我相信对于许多组织来说,Jenkins始终是一个需要培育的"脆弱"服务器或宠物,并且除了用于维护操作系统的自动化之外,不会从自动化中获得太多好处。

好的建议,但从磁盘或磁带恢复不是最快的选项。如果您确实想确保您的构建/部署能够及时运行,请使用Jenkins API在其他地方创建额外的备份......成本很小,在灾难情况下,例如如果您正在托管Jenkins的服务器被"移除"并且备份被终止(因为为什么不呢?)而没有通知您,这将使部署只需单击即可完成,而不是花费几天/周末手动处理所有事情的差异。 - niken
如果有人来到这里,Jenkins已经发展了,而且有绝对的方法可以从底层开始旋转Jenkins,使其在几分钟内完全具备数千个管道的功能,而不需要太多的努力。 - Jepper

0

为了备份Jenkins组件,您可以使用Handy Backup。最佳实践是以差异或混合(完整/差异)模式设置至少每日备份。这是在使用任何插件之前的优势,因为备份的规律性得到保证。


你能进一步解释一下,相对于使用整个磁盘快照的已被接受的答案(自两年前起),这种方法有什么优势吗? - sisve
虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。仅有链接的答案如果链接页面发生更改可能会变得无效。 - thewaywewere
Handy Backup似乎只支持Windows操作系统。您的回答可以更通用,例如“使用您喜欢的备份/恢复软件进行增量和/或差异备份”。 - Jepper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接