我想备份所有Jenkins作业和配置文件。最简单的方法是什么?

评论

您尝试了什么?

我尝试过了。

#1 楼

有很多方法可以做到这一点,但是我认为最简单的方法是对Jenkins Home文件夹进行备份。
echo $JENKINS_HOME


例如,如果您只想备份作业,则可以转到:

cd $JENKINS_HOME/jobs


并为该文件夹进行备份。

所有这些配置将是一堆XML文件。 />
/var/jenkins_home


评论


我需要切换到jenkins用户才能访问$ JENKINS_HOME环境变量:sudo su -s / bin / bash jenkins,然后回显$ JENKINS_HOME,对我来说,它是/ var / lib / jenkins

–布莱斯·昆塔(Bryce Guinta)
17/09/25在18:00



备份整个文件夹“ jobs”的问题在于,作业执行也将被复制-这可能意味着许多GB。

–迈克·阿格里乌(Mike Argyriou)
17-10-22在8:56

Jenkins的服务是否应重新启动?

–辛萌
18年5月4日在15:35

Mac OS中的Jenkins主页(默认安装Homebrew):〜/ .jenkins

–chuckSaldana
19年4月13日在14:16

@MikeArgyriou jobs /仅包含作业配置和工件。作业执行位于工作区/中。

– Alex Che
20 Dec 4在20:35



#2 楼

可以在Jenkins主文件夹(jobs/)中以以下结构找到所有作业(config.xml)和主配置文件(JENKINS_HOME ):
JENKINS_HOME
 +- config.xml     (jenkins root configuration)
 +- *.xml          (other site-wide configuration files)
 +- userContent    (files in this directory will be served under your http://server/userContent/)
 +- fingerprints   (stores fingerprint records)
 +- plugins        (stores plugins)
 +- workspace (working directory for the version control system)
     +- [JOBNAME] (sub directory for each job)
 +- jobs
     +- [JOBNAME]      (sub directory for each job)
         +- config.xml     (job configuration file)
         +- latest         (symbolic link to the last successful build)
         +- builds
             +- [BUILD_ID]     (for each build)
                 +- build.xml      (build result summary)
                 +- log            (log file)
                 +- changelog.xml  (change log)

大部分配置均为XML格式,因此支持所有.xml文件应该足够。

所有设置,构建日志和工件存档都存储在JENKINS_HOME目录下。只需存档此目录即可进行备份。同样,还原数据只是从备份中替换JENKINS_HOME目录的内容。
可以在不停止服务器的情况下进行备份,但是在还原时,请停止服务器。


为了保持一致的备份,最好将JENKINS_HOME目录保留在Git存储库下。
例如:
cd $JENKINS_HOME
git init
shopt -s globstar
git add **/config.xml
git commit -m'Added job config files' -a

并将文件推送到外部存储库。您还可以添加以下.gitignore文件来忽略某些文件。
相关:有没有办法将Hudson / Jenkins配置文件保留在源代码管理中?

评论


您多久创建一次备份?您是否将代码自动推送到git存储库?如果为true,您是否创建了必须手动合并(手动干预)才能进行某些备份完整性检查的请求请求?

– 030
18年4月26日在22:16

@ 030通常在进行一些重大更改之后,当我知道配置是稳定的并且需要备份它时,通常会手动进行此操作,因为Jenkins经常喜欢破坏一些东西,例如自行将Unix的奴隶从unix更改为windows,从表单中删除密码,因此将它们放在git / GitHub中后,我可以轻松地比较并查找丢失的数据,然后将其添加回去或​​还原某些特定文件。有一些插件可以保持历史记录的更改,但是我发现它没有用。

– Kenorb
18年4月26日在22:19



您将密码存储在git中吗?你加密他们吗?您是否也将管道(也称为管道)用作代码?

– 030
18年4月26日在22:23

@ 030 Jenkins默认情况下会加密密码/凭据,但是您可以轻松地对其进行解密。但是,如果没有主密钥(不应成为备份的一部分)或没有对Jenkins的访问权,其他人将无法使用。我没有使用管道作为代码。

– Kenorb
18年4月26日在22:24



您如何在git中测试此备份的完整性?例如。您启动虚拟机或docker系统,挂载git repo并检查一切是否仍然有效?

– 030
18年4月26日在22:27

#3 楼

如果您的Jenkins作业是在Jenkinsfile中定义的,则可以将其存储在git存储库中,并通过使用Pipeline进行加载。如果您希望将现有作业移至此格式,请手动创建新的Jenkinsfiles。

#4 楼

SCM同步配置插件完全可以满足您的需求。与svn或git一起使用以备份您的jenkins核心和作业配置,因此可以轻松跟踪谁进行了更改以及备份。

评论


我实际上是$ JENKINS_HOME文件夹的tar,但这看起来好多了。

– MrMesees
17年4月14日在21:18

该插件似乎非常不活跃/已经过时-截至2017年,它真的功能正常吗?

– Tuukka Mustonen
17-10-23在9:35



#5 楼

备份詹金斯数据和主配置的方法很少。最好的备份方法是使用Thinbackup插件。您可以使用cron表达式安排及时的备份。您也可以配置完全备份和增量备份。

备份数据和配置的另一种方法是获取jenkins主服务器的磁盘快照。通过安装磁盘并将jenkins config目录链接到磁盘安装点来实现此目的的理想方法。两种情况在此博客文章中都有很好的说明。您将获得更好的配置思路和步骤。

#6 楼

我正在使用来自sue445/jenkins-backup-script的脚本。

它存档Jenkins设置和插件,例如: /> $JENKINS_HOME/*.xml
$JENKINS_HOME/jobs/*/*.xml
$JENKINS_HOME/nodes/*

用法

./jenkins-backup.sh /path/to/jenkins_home archive.tar.gz

# add timestamp suffix
./jenkins-backup.sh /path/to/jenkins_home backup_`date +"%Y%m%d%H%M%S"`.tar.gz


#7 楼

您可以尝试thinBackup插件(即使它没有得到积极维护)(如果您只想进行逻辑备份)(即大多数配置xml文件,作业,节点等)。备份大小不会很大。

#8 楼

我需要将Jenkins从一个Windows Server实例迁移到另一个。最终,我设法做到了:


停止Jenkins服务(如果可以承受的话)
复制整个Jenkins文件夹(默认为C:\Program Files x86\Jenkins
粘贴到新实例上
进入目录并运行jenkins.exe install


,这会将新粘贴的Jenkins注册为新计算机上的服务,并且将100%相同。

如果这行得通,那么如果为了将来的安全而需要备份,请将Jenkins文件夹复制到某个地方。它将像快照一样工作。