Bootstrap

Jenkins + Gitlab 实现项目自动化构建及部署

通俗来讲就是本地项目 push 到 gitlab 后, Jenkins 能够识别到项目的更新并自动构建部署;
 本文以实际操作的方式来表述详细配置过程及避开配置 Jenkins 时的坑. 默认电脑已经安装了虚拟机, 默认gitlab 上已经有了你想要部署的项目, 部署了 maven 和 jdk 并配置了环境变量!!!

第一步: 检查环境


1 执行指令 java -version 检查是否已安装了 java 环境:

在这里插入图片描述

2 执行指令 mvn -v 检查是否已经安装了 maven:

在这里插入图片描述

3 执行指令 echo $JAVA_HOME 检查 java 环境变量是否已经配置好, 这里的地址后面会用到:
在这里插入图片描述

4 执行指令 echo $MAVEN_HOME 检查 maven 环境变量是否已经配置好, 这里的地址后面也会用到:
在这里插入图片描述

5 虚拟机也要安装 git, 执行指令 which git 查看位置, 后面会用到;

在这里插入图片描述

第二步: 下载 jenkins 镜像并部署


1 需要注意如果是 jdk 8 需要下载对应 jdk 8 对应的版本,链接: 🔗下载地址, 提交到虚拟机:

在这里插入图片描述

2 执行指令 rpm -ivh jenkins-2.346.3-1.1.noarch.rpm 部署 jenkins;

3 执行指令 find / -name jenkins 检查是否已经安装成功:

在这里插入图片描述

4 配置一下端口号, 指令: vi /usr/lib/systemd/system/jenkins.service, 修改如下:

在这里插入图片描述
这里我改成了 8090;

5 重新加载配置文件, 指令: systemctl daemon-reload.

6 启动指令: systemctl start jenkins; 重新启动指令: systemctl restart jenkins; 停止指令: systemctl stop jenkins.

7 启动成功后, 初次登录要输入管理员密码, 指令: cat /var/lib/jenkins/secrets/initialAdminPassword.
在这里插入图片描述

第三步: 启动成功后, 配置 jdk / git / maven


在这里插入图片描述

1 配置 jdk: 别名可以随便写, JAVA_HOME 就是虚拟机 java 的环境变量, 前面有指令;

在这里插入图片描述

2 配置 git;

在这里插入图片描述

3 配置 maven, 地址就是虚拟机 maven 环境变量的地址;

在这里插入图片描述

第四步: 新建一个 item; 如果你的项目是一个 maven 项目可以如下选择


在这里插入图片描述

对项目进行配置:

在这里插入图片描述

1 建议限制构建项目的缓存记录, 否则构建记录多了后会导致空间不足, 这里我设置的是两天会自动清理缓存, 构建记录不会超过 5 个;

在这里插入图片描述

2 git 源码管理进行配置:

在这里插入图片描述

如果报以下错误需要在 url 链接加上您的 gitlab 用户名和密码, 格式为 http://用户名:密码@*******.54:7000/Li/yuan.git

在这里插入图片描述
添加 Credentials 证书凭证, 用户名和密码就是 gitlab 的账号和密码;
在这里插入图片描述

查看 gitlab 上项目分支, 我的是 main:
在这里插入图片描述

3 构建触发器

在这里插入图片描述

格式:

每天凌晨3:00 跑一次: H 3 * * *
每隔5分钟构建一次: H/5 * * * *
每五小时构建一次: H H/5 * * *
每天中午12点定时构建一次: H 12 * * *
每天下午 17点前 定时构建一次: H 17 * * *
每15分钟构建一次: H/15 * * * *

4 编写执行脚本; 可以当做模板来写, 只不过需要修改以下信息:
在这里插入图片描述
执行脚本如下,方便复制:

#!/bin/bash
# #!/bin/bash是指此脚本使用/bin/bash来解释执行。其中,#!是一个特殊的表示符,其后,跟着解释此脚本的shell路径。bash只是shell的一种,还有很多其它shell,如:sh,csh,ksh,tcsh,...
# #!/bin/bash只能放在第一行,如果后面还有#!,那么只能看成是注释。
 
#服务名称
 
SERVER_NAME=SpringBoot_AutotTest
 
#源jar路径,mm打包完成之后,target目录下的jar包名称,也可选择成为war包,war包 可移动到Tomcat的。
JAR_NAME=swaggerdemo1-0.0.1-SNAPSHOT
 
 
#target打包生成jar包的目录
 
JAR_PATH=/var/lib/jenkins/workspace/Yuan/swaggerdemo1/target    # 以具体的打包位置为准,可以先构建一次项目,通过日志查看打包的目录
 
#打包完成之后,把iar包移动到运行jar包的目录
JAR_WORK_PATH=/var/lib/jenkins/workspace/Yuan/swaggerdemo1/target
 
# echo "查询进程id-->$SERVER_NAME"
# PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $2}'`
# echo"得到进程ID: $PID"
# echo"结束进程"
# for id in $PID
# do
# kill -9 $id
# echo "killed $id" 
# done
# echo"结束进程完成"
 
#复制jar包到执行目录_
 
echo" 复制jar包到执行目录:cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH"
cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH
echo"复 制jar包完成"
cd $JAR_WORK_PATH
#修改文件权限
chmod 755 $JAR_NAME.jar
 
#前台启动
#java -jar $JAR_NAME.jar
 
#后台启动
BUILD_ID=dontKillMe nohup java -jar $JAR_NAME.jar &

这三处的信息可以查看虚拟机上的信息直接复制过来即可, 操作如下:
在这里插入图片描述
进入到此目录下, 这里的 JAR_NAME 就是 target 目录下包的名称, 如果没有此包的话可以先在虚拟机上跑一下, 这样地址等信息可以直接复制过来, 方便至极!!!
在这里插入图片描述

5 修改 pom 文件; 这个路径就是上面 workspace 中项目中的 pom.xml 文件路径, 直接从虚拟机上拷贝过来路径即可;
在这里插入图片描述
6 配置邮箱通知;
在这里插入图片描述
配置邮箱时可能出现的问题及解决办法:

Default Recipients

  • 通过Manage Jenkins进入Configure System
  • 查看Default Recipients这一栏是否填写了收件人

Project Recipient List

  • 进入具体的Job
  • 查看Post-build Actions里有没有添加Editable Email Notification这个功能
  • 不要勾选Disable Extended Email Publisher这个选项栏
  • 查看Project Recipient List这一栏有没有填写收件人

Recipient List

  • 还是进入Editable Email Notification这一栏
  • 点击进入右下角Advanced Settings…
  • 查看Triggers这一栏有没有设置对应触发条件,比如Failure-Any和Success
  • 默认的Developers不会发送给收件人,需要选择Recipient List.

第五步: 项目跑起来, 可以收到短信通知

在这里插入图片描述

;