当前位置: 首页 > web >正文

备份jenkins

jenkins用熟了很爽,jenkins用熟了很香,jenkins用熟了可以起飞……

但~你们是否有过这种经历?

庚子年四月初一
路人甲小手一抖,不小心把配置删了,然后只能重新配置,再然后发现鬼记得太古时代都做了哪些配置啊!o(╥﹏╥)o

庚子年六月十三
改了几次配置,然后运行出了问题,想再改回去,却发现忘记都修改过哪些配置了,举着双手不知从何下手,最后只有挠挠头皮。

庚子年八月二十二
正在群里吹水,突然冒出一个人风风火火,说手贱把job删除了,紧急求助怎么恢复。

所以,关于jenkins本身的备份,必须提上日程,关于备份有以下方案:

一、配置的备份

插件Job Configuration History

这款插件用于记录各个 Job 以及系统配置的变更历史,可以随时回滚配置。

插件ThinBackup

可以只备份配置文件,比较轻量级,

二、主目录的备份

插件Backup

必须手动操作

创建一个单独负责备份主目录的job

其原理,主要是拷贝指定目录的文件,进行zip压缩后放入备份目录,将这一操作设置为定时执行。

为了保险起见,看还可以把备份zip文件上传ftp到其他物理机器上。

三、重点介绍Job Configuration History

Jenkins使用的过程经常伴随配置文件的变化,但这个过程却缺乏svn和git这样的版本工具进行跟踪管理,此插件就是为了解决这个瑕疵,极大的提高了系统的可用性。

安装 Job Configuration History插件

依次进入 Jenkins->系统管理->插件管理

选中“可选插件” 标签页,输入 “Job Configuration History” 进行过滤检索

选中复选框,点击安装

使用英文版的请自行翻译。

安装后Overview 视图的变化

安装完成后,主页的菜单项中会新增一个 “Job Config History” 菜单:
在这里插入图片描述

Agent Config History 视图

通过 Agent Config History 视图,选择并进入一个 Agent 的信息界面:
在这里插入图片描述
选择 “Agent Config History”:
在这里插入图片描述
我们可以选择不同的配置版本进行比较,或者是用历史版本覆盖当前的版本。
在这里插入图片描述

Job Config History 视图

和 Agent Config History 视图类似,Job Config History 视图提供了 Job 配置的历史版本管理界面。在 Build 的历史记录中显示配置文件的变化记录。从下图中我们可以清楚的看到具体哪一次次 Build 时配置文件发生了变化。这样的设计,当错误发生时,可以方便我们快速定位是什么变化导致的Build 失败。
在这里插入图片描述
点击小图标还能看到配置文件变化的具体内容:
在这里插入图片描述
其中底部有很多个功能按钮,其对应操作为:

  • Prev:左右两个文件都更新为前一个版本(时间上比当前版本更早的一个版本)。
  • Next:左右两个文件都更新为下一个版本(时间上比当前版本更晚的一个版本)。 - 左 Shrink Diff:左边文件更新为时间上比当前版本更晚的一个版本。
  • 左 Expand Diff:左边文件更新为时间上比当前版本更早的一个版本。
  • 右Shrink Diff:右边文件更新为时间上比当前版本更早的一个版本。
  • 右 Expand Diff:右边文件更新为时间上比当前版本更晚的一个版本。
  • Restore this configuration:用某个历史版本的配置信息覆盖当前的配置信息。

原理

使用效果有点类似 Git 版本管理,她不仅能处理 Job Configuration 的变更历史,还能够处理系统级别的配置变更历史。但是本质上她并不是采用版本管理的思路,而是采用的保存文件副本的方式。

当配置发生变化时,会把旧的配置文件保存一个副本在 Jenkins 安装目录下的 config-history 目录中:
在这里插入图片描述
包括系统级别配置的历史记录,还有 Job、Agent 配置的历史记录,全部按照一定的规则组织放置在这个目录下。

总结

常在江湖漂,哪能不挨刀。大家在享受jenkins的系统便捷时,也要时刻居安思危,做好备份工作。

http://www.xdnf.cn/news/434.html

相关文章:

  • mysql控制单表数据存储及单实例表创建
  • MCP是什么?为什么突然那么火?
  • Ubuntu开启自启动PostgreSQL读取HDD失败处理思路
  • 动态规划经典例题:最长单调递增子序列、完全背包、二维背包、数字三角形硬币找零
  • Linux Privilege Escalation: LD_PRELOAD
  • 实战设计模式之备忘录模式
  • Python爬虫实战:获取B站查询数据
  • 【T型三电平仿真】SVPWM调制
  • stack和queue的使用和模拟实现
  • 【Linux】线程ID、线程管理、与线程互斥
  • 【Hot100】 73. 矩阵置零
  • 红帽RHEL与国产Linux系统对比:技术、生态与自主可控的博弈
  • 深入理解 Java 多线程:锁策略与线程安全
  • uniapp-x 二维码生成
  • AI速读 Seed-Thinking-v1.5:大模型推理的新飞跃
  • 从零开始学A2A五:A2A 协议的安全性与多模态支持
  • 利用 Deepseek 和 Mermaid 画流程图
  • Linux教程-常用命令系列二
  • 【SAP ME 45】并发SFC拆分导致 SFC_STEP中的QTY_IN_QUEUE与SFC表中的QTY不一致
  • React Article模块
  • 深入解析NotaGen:5亿参数+三阶段训练,解锁高质量AI音乐生成
  • 【大模型框架】LLAMA-FACTORY使用总结
  • 6547网:2025年3月 Python编程等级考试一级真题试卷
  • java浮点数运算判断
  • ESP-ADF外设子系统深度解析:esp_peripherals组件架构与核心设计(显示输出类外设之LCD)
  • 致远OA——自定义开发rest接口
  • Android开发四大组件和生命周期及setFlags
  • 触发器(详解)
  • jmeter利用csv进行参数化和自动断言
  • C算术运算符 printf输出格式 字符指针打印输出 使用scanf函数进行输入