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、项目部署

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

相关推荐
Cosolar7 小时前
不收费、不加水印、数据归你:我做了个开源的在线简历工具
后端·面试·前端框架
小蒜学长9 小时前
基于Spring Boot+Vue3的在线医疗咨询系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·在线问诊·在线医疗咨询系统
陈随易9 小时前
下载神器!Motrix 停更三年后重写回归
前端·后端·程序员
每天一道题9 小时前
CAP、Raft 与多数派:分布式系统如何达成一致?
分布式·后端·微服务
前端的日常10 小时前
一个人+AI做情侣食谱小程序,0 费用的服务器
前端·后端
IT_陈寒10 小时前
Vue的v-for里用了个临时变量,页面直接挂了
前端·人工智能·后端
ServBay11 小时前
本地模型已经跑起来了,Copilot Fusion 为什么还要联网?
后端·ai编程·github copilot
武子康12 小时前
H3-World 的动作没按时发生,先检查时间线变成了什么
人工智能·后端·agent
苍何12 小时前
腾讯 Buddy One 来了,办公全家桶一键打通WorkBuddy(附教程)
后端
GIS数据转换器12 小时前
基于CIM的城市智慧供热监管服务平台
java·大数据·开发语言·人工智能·后端·物联网·struts