Answers:
有很多方法可以做到这一点,但是我认为最简单的方法就是备份Jenkins Home文件夹。
您可以通过以下方式查看您的詹金斯家在哪里:
echo $JENKINS_HOME
例如,如果您只想备份作业,则可以转到:
cd $JENKINS_HOME/jobs
并对该文件夹进行备份。
所有这些配置将是一堆XML文件。
如果您使用的是官方的Jenkins码头工人镜像,则主页将位于:
/var/jenkins_home
$JENKINS_HOME
环境变量:sudo su -s /bin/bash jenkins
,然后echo $JENKINS_HOME
对我来说是/var/lib/jenkins
所有作业(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
文件以忽略某些文件。
如果您的Jenkins作业是在Jenkinsfile中定义的,则可以将其存储在git存储库中,并使用Pipeline进行加载。
不幸的是,由于并非所有Jenkins插件都支持Jenkinsfile和Pipeline,因此,如果您希望将现有作业移至该格式,则需要手动创建新的Jenkinsfiles。
在SCM同步配置插件不正是你想要什么。与svn或git一起使用以备份您的jenkins核心和作业配置,因此可以轻松跟踪谁进行了更改以及进行备份。
我正在使用中的脚本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
您可以尝试thinBackup插件(即使没有积极维护它)[如果只需要进行逻辑备份](即大多数配置xml文件,作业,节点等)。备份大小不会很大。