基于docker容器化的jenkins2.406升级迁移(jdk8升级jdk11)

news2024/10/6 21:36:14

查看基础配置

查看jenkins的home路径:

查看磁盘占比:

发现占比比较大的是:

主要子目录:

  • jobs:包含Jenkins管理的构建作业的配置细节、构建产物和数据;
  • logs:Jenkins的日志目录;
  • plugins:包含所有已经安装了的插件,这些插件使得Jenkins得到了很好的扩展;
  • updates:用来存放可用的插件更新;
  • userContent:存放为Jenkins服务器定制化的一些内容;
  • users:存放用户账号信息;
  • war:包含扩展的web应用程序;
  • workspace:存放Jenkins项目的工作空间;

这里占用较多的 workspace 文件夹没有什么用, 没有必要迁移, 主要是用于存放对应的一些build过的一些jar包之类的, 一般没有什么用, 只要再次对job进行构建就会再次创建对应的工作空间下的项目文件夹.

release 也是一些版本跟踪的项目数据, 根据情况考虑是否迁移

如果害怕数据丢失建议JENKINS_HOME路径下的所有都进行迁移

迁移

拷贝文件到指定的机器

# 迁移目标机器创建文件夹
mkdir -p /dataRep3/jenkins_data/jenkins_home
# 对Jenkins中的Workspace和release文件夹忽略迁移
rsync -av --exclude='workspace' --exclude='release' /var/lib/jenkins/* guimu@11.0.0.64:/dataRep3/jenkins_data/jenkins_home/

迁移后的目录结构:

最外层的jenkins_data用于放所有Jenkins相关的文件, 后续的jdk11和maven都放在jenkins_data下

容器化Jenkins服务

采用docker容器化启动Jenkins, 这里我是升级了老版本的Jenkins, 由 2.346 升级到2.406; 并且从原本的真机部署改为容器化部署

环境配置

下载jdk11:Java Archive Downloads - Java SE 11

maven的下载地址: Index of /maven/maven-3/3.9.2/binaries

# 下载到指定目录
wget https://downloads.apache.org/maven/maven-3/3.9.2/binaries/apache-maven-3.9.2-bin.tar.gz
# 解压
tar -zxvf apache-maven-3.9.2-bin.tar.gz
# 下载jdk, 注意这里是下载最好是下载oracle的jdk11,不然可能会出问题, 自行官网下载, 下载后传到指定路径jenkins_data下
# 下载完后进行解压
tar -zxvf tar -zxvf jdk-11.0.17_linux-x64_bin.tar.gz

启动容器

# 端口和文件路径按照自己的改就可以
docker run --name jenkins --privileged -p 9580:8080 -p 50000:50000 \
-v /dataRep3/jenkins_data/jenkins_home:/var/jenkins_home:rw \
-v /dataRep3/jenkins_data/apache-maven-3.9.2:/usr/local/maven/apache-maven-3.9.2 \
-v /dataRep3/jenkins_data/jdk1.8.0_361:/usr/local/openjdk \
-e "JAVA_HOME=/usr/local/openjdk" \
-e "MAVEN_HOME=/usr/local/maven/apache-maven-3.9.2" \
-e "CLASSPATH=$JAVA_HOME/lib" \
-e "PATH=/usr/local/maven/apache-maven-3.9.2/bin:/usr/local/openjdk/bin:$PATH" \
-e "TZ=Asia/Shanghai" \
-d jenkins/jenkins:2.406

修改容器中的配置

将下面的/etc/profile文件进行覆盖容器内部的文件, 添加maven的路径

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "$(id -u)" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH

if [ "${PS1-}" ]; then
  if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "$(id -u)" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi
#set Maven environment
export MAVEN_HOME=/usr/local/maven
export PATH=$MAVEN_HOME/bin:$PATH

修改后拷贝到容器中的/etc/profile

具体步骤:

# 拷贝源文件
docker cp jenkins:/etc/profile ./jenkins_profile
# 修改内容, 按照上述文件,在末尾添加maven配置
vim jenkins_profile
# 将上面的文件拷贝到容器
docker cp jenkins_profile jenkins:/etc/profile
# 最后重启容器
docker restart jenkins

最后打开对应的地址查看是否正常

常见问题

启动失败

这就是前面提到的可能是因为你的jdk版本的问题, Jenkins的2.4之后需要使用jdk11的版本, 并且不能使用OpenJDK, 需要使用oracle的jdk, 从官网进行下载后进行替换即可

构建项目失败

原因

项目构建时可能会因为使用的jdk11版本的升级而导致构建失败

这时候需要兼容Jenkins内部对jdk8的使用

兼容jdk8 项目构建参考博客:jdk11版本jenkins打包jdk8项目,同时兼容jdk11与jdk8_用11版本的jenkins构建的jar包会有影响吗_保护我方胖虎的博客-CSDN博客

具体步骤

下载jdk8

同样在oracle官网去下载:Java Archive Downloads - Java SE 8u211 and later

下载到路径 /dataRep3/jenkins_data/下:

# 解压tar包
tar tar -zxvf jdk-8u361-linux-x64.tar.gz
# 移动到容器内部, 实际我们只需要移动到挂载的容器的jenkins_home路径下
mv jdk1.8.0_361 jenkins_home

进入容器查看是否正常:

docker exec -it jenkins /bin/bash

配置jenkins的全局工具配置

配置jdk1.8

一般默认使用的jenkins默认的jdk, 这添加后还需要修改构建的项目,选择jdk8

最后尝试构建验证是否成功

导入缺少的依赖

可能有一些自定义的依赖包需要重新导入到Jenkins的容器中的maven仓库

拷贝命令:

# 切到指定的仓库位置:
cd /Users/louye/.m2/repository/org
# 拷贝
docker cp kabeja jenkins:/var/jenkins_home/.m2/repository/org/

Windows远程打包节点

提示报错:

可能因为远程节点的jdk版本和Jenkins的jdk版本不一致导致的, Jenkins节点会拷贝一个remoting.jar到远程节点并使用java -jar命令进行启动, 所以可能会因为版本不一致导致jar包启动失败

解决方案: 更新远程服务器的jdk版本, 因为Jenkins的jdk版本为11, 所有对应的远程节点调用remoting.jar时使用的jdk也需要时11.

为了避免和远程节点的环境使用的jdk版本冲突可以在节点的高级配置中进行指定agent调用jdk的路径:

容器的ssh权限配置

拷贝对应的sshkey到远程的机器上


cat .ssh/id_rsa.pub
# 然后登录远程机器, 添加到对应的.ssh/authorized_keys并保存
vim ~/.ssh/authorized_keys 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/573068.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

低代码开发平台助力门店管理创新,提升用户体验

随着信息技术的飞速发展,低代码开发成为了近年来热门的开发方式。同时,在零售业中,门店管理也成为了一个重要的议题。本文将结合低代码开发和门店管理两个主题,探讨如何应用低代码技术优化门店管理。 一、门店管理的挑战 门店管…

Ansible从入门到精通【二】

大家好,我是早九晚十二,目前是做运维相关的工作。写博客是为了积累,希望大家一起进步! 我的主页:早九晚十二 专栏名称:Ansible从入门到精通 立志成为ansible大佬 文章目录 ansible常用命令ansibleansible-d…

Revit幕墙:用幕墙巧做屋面瓦及如何快速幕墙?

一、Revit中用幕墙巧做屋面瓦 屋面瓦重复性很高,我们如何快速的创建呢?下面我们来学会快速用幕墙来创建屋面瓦的技巧。 1.新建“公制轮廓-竖挺”族,以此来创建瓦的族(以便于载入项目中使用) 2.在轮廓族中绘制瓦的轮廓(轮廓需要闭合),将族名称…

淘宝天猫618预售活动时间是从几号什么时候开始2023天猫淘宝618预售定金能退吗?

2023年淘宝天猫618预售什么时候开始? 2023年5月26日20:00淘宝天猫618预售活动开始截至到5月31日18:00结束; 2023年淘宝天猫618预售定金支付后可退吗? 淘宝天猫618预售定金支付后如不想要该预售商品了,可以在5月31日20:00后完成尾…

如何获得高清、4K无水印视频素材?教你轻松拥有高清视频

随着短视频越来越火爆,大家也都加入到了视频创作的行业中,平时也会喜欢剪辑一些视频发布到平台上,那高清的短视频肯定是最受欢迎的,我们自己又如何获得高清的视频呢? 一、为什么需要高清的视频素材? 1. 视…

基于非靶向和靶向代谢组学分析婴幼儿血管瘤的氨基酸代谢

文章标题:Integrated nontargeted and targeted metabolomics analyses amino acids metabolism in infantile hemangioma 发表期刊:Frontiers in Oncology 影响因子:5.738 作者单位:四川大学华西医院 百趣提供服务&#xf…

prometheus 部署安装

prometheus 部署安装 监控系统硬件(node-exporter)监控mysql (mysql_exporter)监控redis(redis_exporter)监控docker (cadvisor)监控可视化展示 (Grafana)监控报警 (Ale…

Adams几何元素

简单学了一下Adams的几何元素,记录一下面板。 1.几何点 Point Add to Ground 添加到大地 Add to Part 添加到现有构件 Attach Near 关联构件 Don’t Attach 不关联构件 创建添加行,输入点坐标。创建好的点可以在导航栏右键删除和修改。 2. 坐标系Mar…

ROS学习——利用电脑相机标定

一、 安装usb-cam包和标定数据包 sudo apt-get install ros-kinetic-usb-cam sudo apt-get install ros-kinetic-camera-calibration 要把kinetic改成你自己的ros版本 。 二、启动相机 roslaunch usb_cam usb_cam-test.launch 就会出现一个界面 可以通过下面命令查看相机…

leetcode 1140. Stone Game II(石头游戏II)

涉及game的问题&#xff0c;2个player, 现有几堆石头&#xff0c;每堆石头个数为piles[i], 刚开始M1, player1先拿石头&#xff0c;可以拿走前 x 堆&#xff08;假设从第 i 堆开始拿&#xff0c;可以拿 i ~ ix-1 堆&#xff09;&#xff0c;1 < x < 2M, 拿完之后&#xf…

2023.5.19Hadoop具体操作(四种)

大作业 1、ens33没有地址 查看虚拟机的NAT8网段 使用ip a显示ens33的ip ip a设置静态ip 编辑网络接口配置文件&#xff1a;输入以下命令来编辑网络接口的配置文件&#xff1a; sudo vi /etc/network/interfaces在打开的文件中&#xff0c;找到要设置为静态IP的网络接口&am…

来领走你的AI老师

现在很多大学生不上课&#xff0c;在b站学习。 有没有想过有一天&#xff0c;你的大多数时间都在跟AI学习&#xff1f; 未来已来&#xff0c;这里有一份万能提示词&#xff0c;让你立马拥有一位AI导师。 这位导师可了不得&#xff0c;除了啥都知道之外&#xff0c;还能&…

C# 队列(Queue)

目录 一、概述 二、基本的用法 1.添加元素 2.取出元素 1&#xff09;Dequeue 方法 2&#xff09;Peek 方法 3.判断元素是否存在 4.获取队列的长度 5.遍历队列 6.清空容器 7.Queue 泛型类 三、结束 一、概述 表示对象的先进先出集合。 队列和其他的数据结构一样&a…

Ros2中MoveItConfigsBuilder的功能作用说明

文章目录 前言MoveItConfigsBuilder的功能作用机器人resource文件样例总结 前言 在学习moveit2的样例时发现加载机器人配置参数多使用MoveItConfigsBuilder&#xff0c;它具体的功能和使用方法是什么呢。 这篇博文用来记录说明该函数的使用方法、作用和调用逻辑。 MoveItConfi…

Tomcat的讲解与安装

文章目录 前言一.Tomcat是什么二.Tomcat的原理三.Tomcat的安装和说明**1.下载****2.解压安装**bin目录conf目录lib目录log目录temp目录webapps目录work目录 3.配置环境变量 四.验证安装 前言 Tomcat 是一个 HTTP 服务器. 前面我们已经学习了 HTTP 协议, 知道了 HTTP 协议就是 …

共享电单车RFID停车技术分析

近段时间&#xff0c;某地主城区运营商信号基站受严重干扰&#xff0c;造成300多个基站&#xff0c;超过5万的用户受到影响。据无线电监测站的调查确认干扰源来自共享电单车&#xff0c;是共享电单车加装的RFID停车标签惹的祸&#xff0c;而该地区RFID终端选用的是超高频&#…

考研C语言复习第二章

考研C语言第二节课 2.1 #include <stdio.h> //符号常量 #define PI 32 int main() {int iPI*2;printf("i%d\n",i); // printf("Hello, World!\n");return 0; }在这里的define相当于一个替换的作用&#xff0c;是直接将PI是32整个搬到下面 所以…

M洞察|“MOBA”还是“MMO”?2023上半年热门手游大盘点来了,拯救你的游戏荒

2023年Q1中国移动游戏市场整体表现不及预期&#xff0c;实际销售收入为486.94亿元&#xff0c;同比下降19.42%。虽整体有所下滑&#xff0c;但新鲜血液依然迸发强劲。 3月22日&#xff0c;一款玩法轻松、新颖的种田类手游《桃源深处有人家》正式上线&#xff0c;玩家纷纷投入其…

AWVS使用手册 (全)

目录 000、什么是Acunetix Web Vulnarability Scanner 001、AWVS安装过程、主要文件介绍、界面简介、主要操作区域简介 002、AWVS的菜单栏、工具栏简介&#xff08;AWVS menus bar & tools bar&#xff09; 003&#xff1a;一次新的扫描的功能全面概述&#xff08;Scan…

基于SpringBoot的企业客户信息反馈平台的设计与实现

背景 企业客户信息反馈平台能够通过互联网得到广泛的、全面的宣传&#xff0c;让尽可能多的用户了解和熟知企业客户信息反馈平台的便捷高效&#xff0c;不仅为客户提供了服务&#xff0c;而且也推广了自己&#xff0c;让更多的客户了解自己。对于企业客户信息反馈而言&#xf…