Jenkins的数据管理

在这篇文章中总结和介绍一下Jenkins数据存储目录的相关信息以及备份和恢复相关的内容。

数据存储目录

Jenkins执行构建以及归档管理的时候需要一定的存储空间,缺省的情况下,此目录被设定至HOME目录~/.jenkins,但可以通过修改如下环境变量来修改此目录的位置:

环境变量:JENKINS_HOME

修改数据存储目录的方法

当然此此目录也可以在已经使用Jenkins后进行修改。这种情况只需要按照如下步骤即可:

  • 步骤1: 停止Jenkins服务
  • 步骤2: 移动JENKINS_HOME的原有目录设定到新目录,并设定JENKINS_HOME环境变量
    注:如果是容器方式,只需要在修正JENKINS_HOME的环境变量或者卷的映射关系即可
    *步骤3: 重新启动Jenkins服务

数据目录结构与文件

JENKINS_HOME下的目录结构与文件如下表所示:

类型名称名称名称名称说明
文件config.xml---Jenkins基本配置信息
文件*.xml---其他各种配置文件
目录userContent---通过userContent/(前缀为Jenkins访问地址)可以访问的文件可以保存在这个目录
目录fingerprints---保存文件指纹记录
目录plugins---插件设定目录
目录workspace---工作目录
子目录-job名--workspace的子目录,以job名作为目录名,每个job有一个这样的目录
目录jobs---job目录
子目录-job名--jobs的子目录,以job名作为目录名,每个job有一个这样的目录
文件-config.xml--job配置文件
文件-latest--最近一次成功构建的软链接
文件-builds--构建信息
子目录-构建编号-每次构建会产生一个构建目录
文件--build.xml构建结果概要信息
文件--log构建日志
文件--changelog.xml变更日志信息
目录updates---Jenkins内部使用,主要用来保存Jenkins可用的插件信息
目录users---当需要使用Jenkins本地用户的数据库时,用户账户信息会保存在此目录中。
目录war---Jenkins的war文件解压的目录

fingerprint

在Jenkins中,文件的fingerprint就是一个简单MD5校验和,Jenkins会维护着这样的MD5校验和的数据库,而对于每一个MD5校验和,Jenkins都会记录哪个项目的哪次构建的详细信息。而每次构建文件的指纹相关的这个数据库都会被更新。
为了避免过多的磁盘使用,Jenins不会直接保存实际的文件,而是保存其md5sum信息,保存的位置为:$JENKINS_HOME/fingerprints

清理策略

目录说明类型说明清理策略
userContent通过userContent/(前缀为Jenkins访问地址)可以访问的文件可以保存在这个目录辅助功能目录,一般不会直接使用一般无需进行清理,此目录一般不会被使用
fingerprints保存文件指纹记录的目录Jenkins追踪多项目之间文件使用的依赖关联时用到的特性,一般不会直接被操作使用相关文件增长较小时可以考虑不进行特意清理措施
plugins插件设定目录系统设定目录升级时需要进行备份,不可进行清理操作
workspace工作目录此目录的磁盘使用率会随着job使用的增加而增加定期清理,保存一定期限使用到的job
jobsjob构建信息此目录的磁盘使用率会随着job的增加和构建的增加定期清理,保存一定期限使用到的job
updates可用插件更新目录Jenkins内部使用,主要用来保存Jenkins可用的插件信息不会过度增长,可以不必进行清理
users当需要使用Jenkins本地用户的数据库时,用户账户信息会保存在此目录中。一般不会直接使用到此目录无需进行定期清理
warJenkins的war文件解压的目录-无需进行定期清理

备份与恢复

备份与恢复都相对较为简单,尤其是容器化的方式,只需设定好卷的mapping与JENKINS_HOME的环境变量即可,但是需要注意如下事项

备份:可以在Jenkins服务启动或者停止的状态下进行备份。

恢复:需要注意在Jenkins服务停止的状态下进行恢复

常见插件

Workspace Cleanup Plugin

插件说明:
此插件用于在构建之前或者构建之后清除workspace目录下的内容,并可支持删除特定类型的文件

Git userContent plugin

插件说明:
此插件用于和Jenkins的userContent目录进行关联,可以使用git进行相关的操作。其实际上是将$JENKINS_HOME/userContent作为git的仓库,管理员通过git的命令(pull或者push)对此仓库的内容进行操作,对历史履历信息也可以进行管理。

参考内容

https://wiki.jenkins.io/display/JENKINS/Administering+Jenkins
https://wiki.jenkins-ci.org/display/JENKINS/Fingerprint
https://jenkins-le-guide-complet.github.io/html/sec-hudson-home-directory-contents.html

淼叔 CSDN认证博客专家 神经网络 TensorFlow NLP
资深架构师,PMP、OCP、CSM、HPE University讲师,EXIN DevOps Professional与DevOps Master认证讲师,曾担任HPE GD China DevOps & Agile Leader,帮助企业级客户提供DevOps咨询培训以及实施指导。熟悉通信和金融领域,有超过十年金融外汇行业的架构设计、开发、维护经验,在十几年的IT从业生涯中拥有了软件开发设计领域接近全生命周期的经验和知识积累,著有企业级DevOps技术与工具实战。
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页