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

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

相关推荐
墨香幽梦客15 分钟前
API集成技术规范:RESTful与GraphQL在企业系统对接中的应用对比
后端·restful·graphql
刀法如飞1 小时前
AI编程时代,为什么35岁以上程序员会更吃香?
人工智能·后端·ai编程
小码哥_常2 小时前
Spring Boot 遇上 HMAC-SHA256,API 安全大升级!
后端
小码哥_常2 小时前
10分钟极速掌握!SpringBoot+Vue3整合SSE实现实时消息推送
后端
大黄说说3 小时前
深入 Go 语言 GMP 调度模型:高并发的秘密武器
后端
云原生指北4 小时前
Omnipub E2E 测试文章 - 自动化验证
后端
IT_陈寒4 小时前
SpringBoot自动配置揭秘:5个让开发效率翻倍的隐藏技巧
前端·人工智能·后端
添尹4 小时前
Go语言基础之数组
后端·golang
luom01026 小时前
SpringBoot - Cookie & Session 用户登录及登录状态保持功能实现
java·spring boot·后端
黄俊懿6 小时前
【架构师从入门到进阶】第二章:系统衡量指标——第一节:伸缩性、扩展性、安全性
分布式·后端·中间件·架构·系统架构·架构设计