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

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

相关推荐
毕设源码_钟学姐16 分钟前
计算机毕业设计springboot宿舍管理信息系统 基于Spring Boot的高校宿舍管理平台设计与实现 Spring Boot框架下的宿舍管理系统开发
spring boot·后端·课程设计
方圆想当图灵1 小时前
ScheduledFutureTask 踩坑实录
后端
全栈凯哥1 小时前
16.Spring Boot 国际化完全指南
java·spring boot·后端
M1A11 小时前
Java集合框架深度解析:LinkedList vs ArrayList 的对决
java·后端
31535669132 小时前
Springboot实现一个接口加密
后端
Linn4 小时前
Spring WebSocket 服务实现的主流方案与最佳实践
spring boot·后端·spring
M1A14 小时前
企业信息化管理(EIM):数字化转型的核心引擎
后端
我是老孙5 小时前
Spring Boot 应用中,配置的加载优先级
spring boot·后端·pycharm
风象南5 小时前
基于 SpringBoot 的 REST API 与 RPC 调用的统一封装
java·spring boot·后端
陈随易5 小时前
Kimi k2不行?一个小技巧,大幅提高一次成型的概率
前端·后端·程序员