jenkins升级
# jenkins升级
我的环境是docker部署的, 无法直接替最新的版本, jenkins 做了本地挂载,所以数据也不会担心丢失
由于jenkins官方不在支持jdk11版本的jenkins了,所以将jenkins和jdk升级到最新,
# 环境准备
- 下载oracle|Jdk21 (opens new window)
- 最新的jenkins2.346支持的jdk是[17, 21],这里选择最新的
- 后期需要看jenkins支持的jdk版本,选在下载对应的jdk
- jdk一定要用oracle版本的,不然会报错
- 下载最新[jenkins.war](Jenkins 的安装和设置 (opens new window))
- 选择jenkins.war
# 备份原环境
由于有挂载点/var/jenkins_home, 这里打包jenkins_home
tar -zcvf jenkins_home.tar jenkins_home mv jenkins_home.tar /home
1
2
3
# 升级
# 启动镜像
创建挂载点
mkdir -m 777 /opt/jenkins_home
1镜像id挂载启动
docker run -d -u root -p 9090:8080 -p 50001:50000 -v /opt/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins9090 jenkins/jenkins 容器id
1
检查是否启动
docker ps
1
开放防火墙端口
firewall-cmd --zone=public --add-port=9090/tcp --permanent firewall-cmd --reload firewall-cmd --query-port=9090/tcp
1
2
3
# 容器安装Jdk
安装包上传到宿主机/opt目录下
创建安装目录并授权
mkdir -m 777 /opt/java
1
解压安装包
tar -xvf jdk-21_linux-x64_bin.tar
1
安装包移动到指定目录
mv /opt/jdk-21.0.4 /opt/java/jdk-21.0.4 cd /java # 由于新版本的jenkin启动jvm是运行的openjdk,这里拷贝一份,防止出错 cp jdk-21.0.4 /openjdk
1
2
3
4
安装包复制到容器/opt目录
docker cp /opt/java 容器ID:/opt
1
进入容器并为安装目录赋权
docker exec -it --user root 容器ID /bin/bash chmod -R 777 /opt/java
1
2
容器内配置java环境变量
#安装vim-->apt update && apt -y install vim #编辑:Insert、不保存并退出:Esc-->:q!-->Enter、保存并退出:Esc-->:wq!-->Enter # 编辑/etc/profile vim /etc/profile # 设置java环境变量 export JAVA_HOME=/opt/java/jdk_21.0.4 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=$JAVA_HOME/lib # 编辑编辑/root/.bashrc--> 设置容器启动时自动加载/etc/profile vim /root/.bashrc #添加如下内容 source /etc/profile # 安装校验 java -version
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 升级jenkins
将下载的jenkins.war上传至/opt目录下
docker cp jenins.war 容器ID:/usr/share/jenkins
1
# 重启
docker restart 容器ID
1
到这里起始使用老版本的image,启动容器,并将jdk版本和jenkins升级到了最新
# jenkins初始化
访问网址
http://192.168.1.201:9090
1
更换下载插件的地址
cd /var/jenkins_home/updates sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
1
2
# 添加环境变量
1.容器环境变量-->docker exec -it --user root 容器ID /bin/bash echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/java/jdk_21.0.4/bin 2.Jenkins环境变量-->Dashboard>Manage Jenkins>System Configuration>Configure System>全局属性>环境变量-->path:容器环境变量
1
2
3
4
5
# jenkins镜像备份
# 将挂载点备份到容器内
1.挂载目录/opt/jenkins_home拷贝到容器/opt目录
docker cp /opt/jenkins_home 容器ID:/opt
注:不能拷贝到/var/jenkins_home,/var/jenkins_home为Jenkins容器默认的工作目录,
Jenkins容器创建时该目录会被重新初始化,导致数据丢失,挂载目录备份到容器/opt目录后
将容器打包为新镜像并被备份到阿里云,新镜像从阿里云仓库拉取后,先使用新镜像非挂载方
式创建临时容器A,将备份数据从容器A拷贝回宿主机/opt,然后删除临时容器A,最后使用新
镜像挂载 拷贝到宿主机的备份数据/opt/jenkins_home 创建容器B,这样创建的容器B数据和
新镜像原始容器一致
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 打包容器
docker commit -a='作者' -m='备注' 容器ID 仓库名称:[TAG]
注:容器打包为镜像前不可删除容器源镜像,否则无法进行镜像打包
1
2
2
# 阿里云镜像仓库设置
- 创建阿里云镜像仓库
- 登录阿里云-->控制台-->容器镜像服务-->实例列表-->个人实例-->镜像仓库--> 创建镜像仓库-->查看仓库
- 查看具体的镜像上传和拉取命令
# 上传镜像
$ docker login --username=张大哥不是你大哥 xxxxxx-hangzhou.personal.cr.aliyuncs.com
$ docker tag [ImageId] xxxxx.cn-hangzhou.personal.cr.aliyuncs.com/zhangtianqing/devops:[镜像版本号]
$ docker push xxxxx.cn-hangzhou.personal.cr.aliyuncs.com/zhangtianqing/devops:[镜像版本号]
1
2
3
2
3
# 拉取镜像
docker pull crpi-feaseu1f99p5nxa1.cn-hangzhou.personal.cr.aliyuncs.com/zhangtianqing/devops:[镜像版本号]
1
编辑 (opens new window)
上次更新: 2024/12/31 14:23:38