概要

目前Java最流行的CI/CD工具是Jenkins,问了几个前同事的公司,有很多都在使用它,而我还在本地打包手动上传,所以准备也搞一下。

整体架构流程

服务器系统:Alibaba Cloud Linux 3.2 64位
运维面板:宝塔 v11.7
是否基于Docker: 是
Jenkins版本: 2.492.3
代码git库:gitee
打包项目:springboot

技术细节

安装好宝塔面板后,直接在右侧主栏中选择并安装Docker,不要再去软件商店里找了。
安装好Docker后,不要在宝塔面板中选择安装Jenkins,因为宝塔自带的版本相对比较老…
在这里插入图片描述
这里我们推荐使用命令安装指定版本,因为随后需要安装maven与git的插件,为了选择最大兼容性,我们选择了2.492.3这个版本。
选择宝塔的终端,开始安装jenkins:

docker run -d \
  --name jenkins \
  --privileged \
  -p 14808:8080 \
  -v /www/docker/jenkins:/var/jenkins_home \
  -u root \
  jenkins/jenkins:2.492.3-lts-jdk17

安装好后,可以运行一下docker进程命令看一下效果:

docker ps

在这里插入图片描述
如果想要进入这台docker容器:

docker exec -it jenkins /bin/bash

打开浏览器访问:http://ip:14808,记得打开防火墙,端口号可以映射其他的,别冲突就好。
初次访问,需要填写原始密码:

docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

进入后选择自定义安装插件,如果之前安装过其他版本,并且有很多残留插件,想要一键清除掉之前的插件,可以这样做:

docker stop jenkins
# 删除所有插件文件
rm -rf /www/docker/jenkins/plugins/*
# 删除插件缓存,避免残留
rm -rf /www/docker/jenkins/cache
rm -rf /www/docker/jenkins/plugins/*.bak
rm -rf /www/docker/jenkins/plugins/*.jpi
docker start jenkins

进入主界面前需要配一个管理员账号,

第一步:安装插件: 中文插件,maven,git.

进入主界面点击系统管控,管理插件,可用插件,搜索chinese,安装中文插件
安装后重启,重启后可能就挂了,可以docker ps查看进程是否还在,不在了就docker start jenkins手动起来。
然后再安装Maven Integration与git插件。
在这里插入图片描述
在这里插入图片描述

Jenkins之所以选择2.492.3这个版本,就是因为兼容插件,如果选择更早的版本,这里安装的时候,就会有很多的失败,踩过坑才知道的。
在这里插入图片描述
第二步:配置 JDK 1.8 + Maven

为容器强制安装JDK8

# 1. 进入容器
docker exec -it jenkins bash

# 2. 安装 apt 工具
apt update && apt install -y wget ca-certificates

# 3. 下载 JDK8(Adoptium 官方,绝对可用)
wget https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u442-b06/OpenJDK8U-jdk_x64_linux_hotspot_8u442b06.tar.gz -O jdk8.tar.gz

# 4. 解压安装
mkdir -p /usr/lib/jvm/
tar -zxvf jdk8.tar.gz -C /usr/lib/jvm/
mv /usr/lib/jvm/jdk8u442-b06 /usr/lib/jvm/java-8-openjdk-amd64

进入 系统管理 → 全局工具配置
新增 JDK:
名称:jdk8
JAVA_HOME:/usr/lib/jvm/java-8-openjdk-amd64

点 新增 Maven
名称:maven39
勾上自动安装
版本选最新的 3.9.x
点 保存

第三步:配置 Gitee 账号密码

左侧 凭据 → 系统 → 全局凭据
左上角 添加凭据
类型:用户名密码
用户名:你的 Gitee 账号
密码:你的 Gitee 密码
ID 可以空,描述写:gitee
点 创建
在这里插入图片描述
第四步:创建构建任务(关键)

  1. 新建任务
    任务名称:随便填
    选择:构建一个自由风格的 项目
    确定
  2. 配置源码管理
    选 Git
    Repository URL:填你的 Gitee https 地址
    Credentials:选你刚才添加的 gitee 账号
    提前复制一个jar包到容器root目录:
docker cp /root/aspose-words-16.8.0-jdk16-16.8.0.jar jenkins:/root/

在Build阶段执行 shell:

# 强制使用 JDK8
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH

mkdir -p /var/jenkins_home/workspace/free-mall-release/yshop-mall/yshop-mall-biz/libs/
# 把你上传的 jar 移动到正确位置(把 /root/ 换成你 jar 所在的目录)
cp /root/aspose-words-16.8.0-jdk16-16.8.0.jar /var/jenkins_home/workspace/free-mall-release/yshop-mall/yshop-mall-biz/libs/

# 使用 Jenkins 里配置的 maven 绝对路径(关键!)
/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/maven39/bin/mvn clean package -Prelease

# 拷贝到java服务器上
sshpass -p 'password' scp -o StrictHostKeyChecking=no /var/jenkins_home/workspace/free-mall-release/yshop-mall/yshop-mall-biz/target/*.jar root@172.23.85.85:/root/

安装sshpass:

docker exec -it jenkins bash
apt install -y sshpass

这里贴的mvn目录来着Jenkins的maven插件全路径。
这里的-Prelease指的是springboot项目中的profiles使用release。

点最下面 保存

为了防止拉取gitee错误,加入dns解析优化:

docker exec -it jenkins echo "nameserver 8.8.8.8" > /etc/resolv.conf
docker exec -it jenkins echo "nameserver 114.114.114.114" >> /etc/resolv.conf

第五步:立即构建,看是否打包成功
构建中,点击控制台输出,看执行日志:在这里插入图片描述

在这里插入图片描述
看到success就代表成功了~

更多推荐