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

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

相关推荐
GoFly开发者23 分钟前
GoFly快速开发框架/Go语言封装的图像相似性比较插件使用说明
开发语言·后端·golang
苹果酱056731 分钟前
通过springcloud gateway优雅的进行springcloud oauth2认证和权限控制
java·开发语言·spring boot·后端·中间件
豌豆花下猫1 小时前
Python 潮流周刊#70:微软 Excel 中的 Python 正式发布!(摘要)
后端·python·ai
芯冰乐2 小时前
综合时如何计算net delay?
后端·fpga开发
用户673559885615 小时前
数据驱动,实时监控显威力 —— 淘宝商品详情API助力商家精准营销
后端·api·fastapi
lucifer3115 小时前
线程池与最佳实践
java·后端
用户673559885615 小时前
天猫店铺商品列表API返回值中的商品视频与图文详情
前端·javascript·后端
程序员大金5 小时前
基于SSM+Vue+MySQL的酒店管理系统
前端·vue.js·后端·mysql·spring·tomcat·mybatis
程序员大金6 小时前
基于SpringBoot的旅游管理系统
java·vue.js·spring boot·后端·mysql·spring·旅游
Pandaconda6 小时前
【计算机网络 - 基础问题】每日 3 题(十)
开发语言·经验分享·笔记·后端·计算机网络·面试·职场和发展