Len's Study-Log

集中一点,登峰造极!

0%

Jenkins+Gitee+Docker+maven自动化构建Springboot项目

jenkins安装

环境:

  • CentOS 7.5 64位
  • Docker version 19.03.5
  • Java version “1.8.0_241”
  • Maven version 3.6.3

项目代码存放在gitee,不是github

war方式文件安装jenkins:

1
2
3
4
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key

yum install jenkins

线上的linux服务器下载可能会很慢。我们可以自己下载好rpm包,上传上去再安装。
安装命令:

1
yum install ./jenkins-2.250-1.1.noarch.rpm

安装完成之后,我希望可以把jenkins默认的8080端口改为8010:

1
vi /etc/sysconfig/jenkins

找到8080,修改成8010。

1104

检查jenkins是否配置jdk,在candidates后面加上自己的jdk路径:

1
vi /etc/rc.d/init.d/jenkins

1103

启动jenkins:

1
service jenkins start

访问jenkins:http://ip:8010
first
然后就是按照提示去找初始密码解锁jenkins,选择安装推荐的插件,创建一个管理员帐号。

jenkins插件安装

7.1plugin

1. Gitee插件

trigger1.0

插件安装之后,打开“系统管理” —> “系统设置”,找到Gitee 配置,配置如下:

gitee1.0

https://gitee.com/profile/personal_access_tokens

gitee1.1

gitee1.2

2. Docker插件

7.2plugin

安装完插件记得重启一下才会生效。http://ip:8010/restart

jenkins设置

1. 设置用户权限
选择“系统管理”-“全局安全配置”
1qjaqsz

按下图设置用户权限。Anonymous Users和Authenticated Users设置为只读,刚刚新建的用户设置为管理者权限。(如果没有刚刚新建的用户点击下方的“Add user or group…”,输入你的用户名即可)
2user_authen

2. 配置JDK、Maven、Git、Docker
选择“系统管理”-“全局工具配置”
3qjgjpz
a. 配置JDK
4jdk
b. 配置Maven
5maven
c. 配置Git
6git
d. 配置Docker
如果没有docker配置选项。去“插件管理”中搜索安装“docker build step”。(插件安装完记得restart)
7.5docker
3. 设置通知邮件
选择“系统管理”-“系统配置”
【记得要先设置“系统管理员邮箱地址”!!!】不然后面配置了也测试不通过
8.0msg
设置邮件默认内容:
8.01msg

1
2
3
4
5
6
7
8
9
10
11
<hr/>
(本邮件是程序自动下发的,请勿回复!)<br/><hr/>
项目名称:$PROJECT_NAME<br/><hr/>
构建编号:$BUILD_NUMBER<br/><hr/>
svn版本号:${SVN_REVISION}<br/><hr/>
构建状态:$BUILD_STATUS<br/><hr/>
触发原因:${CAUSE}<br/><hr/>
构建日志地址:<a href="${BUILD_URL}console">${BUILD_URL}console</a><br/><hr/>
构建地址:<a href="$BUILD_URL">$BUILD_URL</a><br/><hr/>
变更集:${JELLY_SCRIPT,template="html"}<br/><hr/>

配置发送邮箱信息:
8.1msg


8.2msg

4. 创建任务
a. 新建任务

10.1task

10.2task

10.3task

b. 配置项目代码路径、git帐号密码
10.4task

10.5task

c. 配置远程触发器

trigger1.1

【注意】配置webhooks的时候,需要你输入一个POST的地址,这个地址在上图会给出,复制过去就行。

trigger2.0

d. 配置maven构建参数
每次构建前,删除工作空间
10.7task

配置maven构建参数

10.8task

10.9task

11.1task

11.2task

/home/project/postman/bin目录要在服务器上先创建好,run.sh文件要放到bin目录中。

run.sh文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#操作/项目路径(Dockerfile存放的路劲)
BASE_PATH=/home/project/postman
# 源jar路径
SOURCE_PATH=/var/lib/jenkins/workspace/postman/target
# jar包名称
JAR_NAME=postman-1.0-SNAPSHOT
#容器id
CID=$(docker ps | grep "postman" | awk '{print $1}')

DATE=`date +%Y%m%d%H%M`

# 最新构建代码 移动到项目环境
function transfer(){
echo "最新构建代码 $SOURCE_PATH/$JAR_NAME.jar 迁移至 $BASE_PATH ...."
sudo cp $SOURCE_PATH/$JAR_NAME.jar $BASE_PATH
echo "迁移完成"
}

# 备份
function backup(){
if [ -f "$BASE_PATH/$JAR_NAME.jar" ]; then
echo "$JAR_NAME.jar 备份..."
sudo cp $BASE_PATH/$JAR_NAME.jar $BASE_PATH/backup/$JAR_NAME-$DATE.jar
sleep 3
sudo rm -rf $BASE_PATH/$JAR_NAME.jar
echo "备份 $JAR_NAME.jar 完成"
else
echo "$BASE_PATH/$JAR_NAME.jar不存在,跳过备份"
fi
}

# 构建docker镜像
function build(){
echo "开始构建镜像..."
cd $BASE_PATH
sudo docker build -t postman .
}

# 运行docker容器
function run(){
backup
transfer
build
if [ -n "$CID" ]; then
echo "存在postman容器,CID=$CID,重启docker容器 ..."
sudo docker stop $CID
sudo docker rm $CID
sudo docker run --name postman -d -p 8091:8091 postman
echo "postman容器重启完成"
else
echo "不存在postman容器,docker run创建容器..."
sudo docker run --name postman -d -p 8091:8091 postman
echo "postman容器创建完成"
fi
}

#入口
run

e. 配置构建后操作
配置邮件通知:
11.3task

在以下红框部分加入想要通知的成员邮箱,多个邮箱以“,”或空格进行分割:
11.4task


开始构建

第一次构建:
发生错误:sudo: no tty present and no askpass program specified

20error
原因:Jenkins服务器在执行sudo命令时的上下文有误,导致这个命令执行的异常。

解决办法:

1
2
3
4
5
sudo visudo
# 在文件的末尾加上一行
jenkins ALL=(ALL) NOPASSWD: ALL
# 重启Jenkins服务
/etc/init.d/jenkins restart

第二次构建:
发生错误:sudo: ./bin/run.sh: command not found

21error

可能原因:文件是从winodws搬过来的会显示dos格式,要把它改成unix格式
vim编辑文件,利用:set ff命令查看文件格式
可以看到如下信息:
fileformat=dos 或 fileformat=unix
解决办法:

1
2
3
4
5
6
7
cd /home/project/postman/bin/
vim run.sh

# 设置文件格式为unix
:set ff=unix
# 保存退出
:wq

第三次构建:
发生错误:sudo: ./bin/run.sh: command not found

25error

可能原因:jenkins没有权限读取文件
解决办法:

1
chmod a+x run.sh

第四次构建:
101success


102success


》》》END

END

参考文章:
https://blog.csdn.net/June_D/article/details/84563662

https://www.cnblogs.com/wfd360/p/11314697.html

https://www.cnblogs.com/ming-blogs/p/10903408.html