jenkins项目部署实践

1、 前言

最近在学习后端项目,搞了台服务器,学习下传说中的 jenkins,也享受一把自动部署的快乐。手工部署其实也还行,但是只要机器多起来或者是微服务类项目需要启动很多服务,那就嘎嘎酸爽了。Jenkins 的主要作用就是将需要在本地机器上完成的 Maven 构建、Docker 镜像发布、服务部署等系统动作全部集中在一个服务下,简化构建步骤。

2、Jenkins 安装及配置

官网:www.jenkins.io/zh/

2.1、docker 安装

centos7 及以下系统可以用以下命令安装 docker

java 复制代码
1、更新 YUM 软件包索引
sudo yum update -y
2、安装必要的软件包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3、设置 Docker 的仓库  -- 可以更换阿里云
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、安装 Docker
sudo yum install docker-ce docker-ce-cli containerd.io
5、启动 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker
6、验证 Docker 是否安装成功
sudo docker run hello-world

2.2、jenkins 安装

2.2.1、jdk 安装

❗️机器上要有 jdk,可以使用如下命令安装

java 复制代码
yum install -y java-1.8.0-openjdk.x86_64
2.2.2、jenkins 安装

docker 容器环境下,直接使用以下命令安装

java 复制代码
docker search jenkins
docker pull jenkins/jenkins:2.414.2
docker run -d -u root -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins jenkins/jenkins:2.414.2
docker start jenkins

启动完成后,可以使用docker ps -a命令查看 docker 下运行的容器,看到 jenkins 就是启动成功了。

FAQ: 在拉镜像的过程中可能会出现拉不下来的情况

解决方案 :阿里云镜像加速服务 cr.console.aliyun.com/cn-hangzhou...

2.3、初始化 jenkins

2.3.1、查看密码

docker logs #{containerId} -- 查看日志

2.3.2、登录 jenkins 服务器

浏览器打开 jenkins 地址(http://127.0.0.1/):8080输入上一步复制的密码,进入到 jenkins 页面

2.3.3、插件安装

进入页面之后选择推荐插件安装,安装完成后创建系统管理员。 这里有可能全部安装失败,可以先跳过再到系统设置里面看看插件安装失败的原因,一般是因为 jenkins 版本不兼容导致的,可以在管理页升级 jenkins 版本。升级后一般就可以下载插件了。

2.4、jenkins 配置

2.4.1 任务创建

控制台页面选择新建任务,输入任务名称。

2.4.2 git 配置

在对应任务的设置里面找到源码管理,并配置对应的 git 信息。

2.4.3 maven 配置

1、maven 下载:在系统管理里面选择全局工具配置,maven 设置里面选择自动安装 maven,并选择 maven 版本。

ps:如果在打包的时候无法下载 maven 版本,也可以手动下载好 maven 后放置到对应目录下。

2、maven 配置:配置 root pom 以及项目构建参数,项目设置里面选择刚刚安装好的 maven 版本,配置 maven 执行命令并制定根 pom。

ps:如果不指定根 pom 后面部署的时候会报错。

2.4.4 配置系统环境变量

系统管理中全局工具配置设置 settings 目录

2.4.5 配置 ssh

插件中下载Publish Over SSH,下载完成后在系统管理的系统配置中配置 ssh 服务信息。

2.4.6 shell 脚本配置

本地启动的话可以直接在项目 Build step 中增加执行 shell 的步骤,不过由于这里是服务器部署,所以增加的步骤就是 send files or execute commands over ssh,需要前置安装 publish over ssh 插件这里才会有这个步骤。 shell 配置,这里不工作过多赘述,网上的配置脚本也有很多,copy 一个改改就行。

java 复制代码
cp /var/jenkins_home/workspace/zhangyl-club/zhangyl-club-subject/zhangyl-club-starter/target/zhangyl-club-starter-1.0-SNAPSHOT.jar /var/jenkins_home/jar/
#!/bin/bash
APP_NAME=zhangyl-club-starter.jar
LOG_NAME=zhangyl-club-starter.log

pid=`ps -ef | grep $APP_NAME | grep -v grep|awk '{print $2}'`

function is_exist(){
pid=`ps -ef | grep $APP_NAME | grep -v grep|awk '{print $2}'`
if [ -z ${pid} ]; then
String="notExist"
echo $String
else
String="exist"
echo $String
fi
}

str=$(is_exist)
if [ ${str} = "exist" ]; then
echo " 检测到已经启动的程序,pid 是 ${pid} "
kill -9 $pid
else
echo " 程序没有启动了 "
echo "${APP_NAME} is not running"
fi

str=$(is_exist)
if [ ${str} = "exist" ]; then
echo "${APP_NAME} 已经启动了. pid=${pid} ."
else
source /etc/profile
BUILD_ID=dontKillMe
nohup java -Xms300m -Xmx300m -jar /var/jenkins_home/jar/$APP_NAME   >$LOG_NAME 2>&1 &
echo "程序已重新启动..."
fi

3、项目部署

前面步骤均已完成后,可以在项目页面点击构建 如图,项目构建完成了

相关推荐
我叫黑大帅3 小时前
通过eino-ext如何正常indexer RAG?
后端·面试·go
Ava的硅谷新视界4 小时前
用了一天 Claude Opus 4.7,聊几点真实感受
开发语言·后端·编程
浪客川5 小时前
【百例RUST - 010】字符串
开发语言·后端·rust
无心水7 小时前
OpenClaw技术文档/代码评审/测试用例生成深度实战
网络·后端·架构·测试用例·openclaw·养龙虾
GetcharZp7 小时前
告别 CGO 噩梦!这款“纯 Go”神器让你不用 GCC 也能调 C 库,部署快到飞起!
后端
IT_陈寒7 小时前
Redis批量删除的大坑,差点让我加班到天亮
前端·人工智能·后端
lolo大魔王7 小时前
Go语言的反射机制
开发语言·后端·算法·golang
Postkarte不想说话9 小时前
使用vLLM本地部署大模型
后端
jserTang9 小时前
手撕 Claude Code-4: TodoWrite 与任务系统
前端·javascript·后端
jserTang9 小时前
手撕 Claude Code-5:Subagent 与 Agent Teams
前端·javascript·后端