您如何备份Jenkins作业和主配置?


Answers:


33

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

您可以通过以下方式查看您的詹金斯家在哪里:

echo $JENKINS_HOME

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

cd $JENKINS_HOME/jobs

并对该文件夹进行备份。

所有这些配置将是一堆XML文件。

如果您使用的是官方的Jenkins码头工人镜像,则主页将位于:

/var/jenkins_home

2
我需要切换到jenkins用户才能访问$JENKINS_HOME环境变量:sudo su -s /bin/bash jenkins,然后echo $JENKINS_HOME对我来说是/var/lib/jenkins
Bryce Guinta 17/09/25

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

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

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

30

所有作业(jobs/)和主配置文件(config.xml)都可以在Jenkins主文件夹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

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

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

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

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

11

如果您的Jenkins作业是在Jenkinsfile中定义的,则可以将其存储在git存储库中,并使用Pipeline进行加载。

不幸的是,由于并非所有Jenkins插件都支持Jenkinsfile和Pipeline,因此,如果您希望将现有作业移至该格式,则需要手动创建新的Jenkinsfiles。


9

SCM同步配置插件不正是你想要什么。与svn或git一起使用以备份您的jenkins核心和作业配置,因此可以轻松跟踪谁进行了更改以及进行备份。


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

2
该插件似乎非常不活跃/已死-截至2017年,它真的功能正常吗?
Tuukka Mustonen

5

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

备份数据和配置的另一种方法是获取jenkins主服务器的磁盘快照。通过挂载磁盘并将jenkins config目录链接到磁盘挂载点来实现此目的的理想方法

这两种情况在本文中都有很好的解释。您将获得更好的构想和配置步骤。


3

我正在使用中的脚本sue445/jenkins-backup-script

它存档Jenkins设置和插件,例如:

  • $JENKINS_HOME/*.xml
  • $JENKINS_HOME/jobs/*/*.xml
  • $JENKINS_HOME/nodes/*
  • $JENKINS_HOME/plugins/*.jpi
  • $JENKINS_HOME/secrets/*
  • $JENKINS_HOME/users/*

用法

./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

3

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


1

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

  • 停止Jenkins服务(如果您负担得起的话)
  • 复制整个Jenkins文件夹(默认情况下C:\Program Files x86\Jenkins
  • 粘贴到新实例
  • 进入目录并运行 jenkins.exe install

这会将新粘贴的Jenkins注册为新机器上的服务,并且将100%相同地工作。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.