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

如何迁移jenkins至另一台服务器

前言

公司旧的服务器快到期了,需要将部署在其上的jenkins整体迁移到另一台服务器,两台都是aws ec2服务器。

文章主要提供给大家一种迁移思路,并不一定是最优解,仅供参考,大家根据实际情况自行选用和修改,举一反三。

部署文件

我的jenkins是采用docker compose方式部署的,docker-compose.yaml内容如下

networks:
jenkins:
name: jenkins
driver: bridge

services:
jenkins:
image: jenkins/jenkins:2.504.3
user: root
container_name: jenkins
privileged: true
restart: always
networks:
- jenkins
ports:
- "8080:8080"
- "50000:50000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
- /home/ec2-user/jenkins_compose/jenkins_configuration:/var/jenkins_home
environment:
- PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- LANG=C.UTF-8
- JENKINS_HOME=/var/jenkins_home
- JENKINS_SLAVE_AGENT_PORT=50000
- REF=/usr/share/jenkins/ref
- JENKINS_UC=https://updates.jenkins.io
- JENKINS_UC_EXPERIMENTAL=https://updates.jenkins.io/experimental
- JENKINS_INCREMENTALS_REPO_MIRROR=https://repo.jenkins-ci.org/incrementals
- COPY_REFERENCE_FILE_LOG=/var/jenkins_home/copy_reference_file.log
- JAVA_HOME=/opt/java/openjdk
command: ["/usr/bin/tini", "--", "/usr/local/bin/jenkins.sh"]

迁移思想

  1. 停止jenkin容器,以保证数据无更新
  2. 将容器挂载的卷打包成tar包,传到oss,比如aws s3或者其他的云服务,根据自己采用的云服务厂商来选择
  3. 在另一台服务器上拉取tar包,解压缩后
  4. 使用docker compose启动新容器

具体命令

具体细节,比如文件目录,需更具自己实际情况做修改

# 在旧的服务器上# 在旧服务器上停止 GitLab 容器(防止数据变更)
docker-compose down# 打包Jenkins数据目录‌(保留权限和软链接)
tar -czvf jenkins_backup.tar.gz -C /home/ec2-user/jenkins_compose/jenkins_configuration .# 上传到S3‌(需提前配置AWS CLI权限)
aws s3 cp jenkins_backup.tar.gz s3://your-bucket-name/jenkins_backup.tar.gz#在新的服务器上#从S3下载备份
aws s3 cp s3://your-bucket-name/jenkins_backup.tar.gz .# 为了方便,目录结构可以和之前一样
mkdir -p /home/ec2-user/jenkins_compose/jenkins_configuration# 解压
tar -xzvf jenkins_backup.tar.gz -C /home/ec2-user/jenkins_compose/jenkins_configuration# 启动容器
docker compose up -d

安装完成之后的操作

更改jenkins url

安装好之后,通过浏览器进入新jenkins web ui,更改jenkins url为新的服务器地址

 

删除workspace下面的仓库

 因为在新的服务器上构建老仓库,可能会报git拉取问题,如图

进入容器的/var/jenkins_home/workspace目录,因为我的容器卷挂载的是 /home/ec2-user/jenkins_compose/jenkins_configuration:var/jenkins_home/workspace,所以我直接在宿主机上进入对应目录,删除下面的所有仓库(无需担心,因为数据是存在git仓库的,如gitlab或者github什么的,所以删去之后,再构建,jenkins会重新去远程仓库拉取新代码

在workspace目录下执行下面的删除操作!!! 

在workspace目录下执行下面的删除操作 !!!

在workspace目录下执行下面的删除操作!!! 

# 删除当前目录下所有内容(含隐藏文件/目录)
sudo find . -mindepth 1 -delete 2>/dev/null

再次执行构建操作,构建成功

http://www.dtcms.com/a/291837.html

相关文章:

  • 服务器无法访问公网的原因及解决方案
  • 简单了解下npm、yarn 和 pnpm 中 add 与 install(i) 命令的区别(附上两图带你一目明了)
  • nodejs的npm
  • 技术与情感交织的一生 (十)
  • 最新基于R语言结构方程模型分析与实践技术应用
  • Apache Ignite 的 SQL 功能和分布式查询机制
  • Apache Ignite 中事务的使用方式和机制
  • 短剧小程序系统开发:重塑影视内容传播格局
  • LIMO:仅需817样本激活大模型数学推理能力,挑战“数据规模至上”传统范式
  • Axios 二次封装
  • PHP中的异常处理与自定义错误页面
  • EasyGBS算法仓:找算法,变成 “点一下” 的事!
  • 使用 Conda 工具链创建 UV 本地虚拟环境全记录——基于《Python 多版本与开发环境治理架构设计》
  • Docker实战:使用Docker部署TeamMapper思维导图工具
  • 推送git问题_查询索引文件——查导致的文件
  • 按键精灵脚本:自动化利刃的双面性 - 从技术原理到深度实践与反思
  • windows10安装node-v18.18.0-x64安装
  • async/await 函数
  • 【CVPR 2025】低光增强RT-X Net( 红外辅助结构引导)--part1论文精读
  • 开发者的AI认知指南:用大模型重新理解人工智能(下)
  • 公交车客流人数统计管理解决方案:智能化技术与高效运营实践
  • 九鼎X8390 开发板 联发科 MT8390 / MT8370 芯片平台
  • 华为高斯Gauss数据库版本与兼容协议--详解(附带Gorm连接示例代码)
  • 5G工业路由器如何凭借高性价比助力多行业数字化转型?
  • 2025 LCP用2,6酸市场前瞻:全面洞察与投资潜力预测
  • iOS组件化详解
  • Windows 环境下,使用 VirtualBox 安装 Ubuntu 虚拟机
  • 34、鸿蒙Harmony Next开发:使用动画-转场动画
  • JMeter groovy 编译成.jar 文件
  • RabbitMQ--批量处理