p1 教程简介
p2 jenkins在开发中的位置和作用
p3 jenkins+maven+git持续集成基础使用
三台服务器
p5 gitlab安装准备
p6 gitlab在ssh下安装
访问ip即可登陆,记得关防火墙
p07 docker下安装gitlab
p9 jenkins安装
下载war包 然后 java -jar jenkins.war 启动,即可访问jenkins
安装maven
这里安装的maven的jdk有坑,其实是jre
p10 jenkins配置maven+git自动构建jar包
安装maven插件
新建item
项目配置
在jenkins这台服务器上下载git,上面这个就不会报错了
yum install -y git
拉取分支设置
需要告诉jenkins maven安装在哪里
全局工具设置
设置完后继续返回设置我们的item
pom目录位置需要和我们的gitlab一样
构建项目
默认yum安装java的时候会显示安装的是openjdk1.8 实则实际上只安装了jre
yum install -y java-devel
安装完成后, 测试运行maven打包
测试运行编译打包后的jar包,成功运行了!
p11 自动化发布到测试服务器并自动运行
先配置测试服务器
配置完成之后,项目这里就可以选择测试服务器了
jenkins服务器上面构建好的jar包
再次构建,运行并传输成功了
目标服务器就收到jar包了
上面既然已经把jar传到测试服务器了,可以再执行命令,把jar包启动起来!
p12 ssh publishers 超时机制
上面的操作有2个问题:
1:之前的jar包服务没有先停止,再次构建时候会有问题
2:没有指定日志输出,可能也会导致卡住
针对问题2措施:
nohup java -jar /root/xxoo/testJenkins*.jar >mylog.log 2>&1 &
针对问题1 可以构建前执行脚本
p14 构建前置脚本
#! /bin/bash
echo "start..."
rm -rf xxoo
echo '删除xxoo成功'
#获取传入的参数
appname=$1
echo "arg:$appname"
# awk 处理文本输出第2列进程
pid=`ps -ef |grep $appname| grep 'java -jar'|awk '{printf $2}'`
echo "进程为:$pid"
#如果pid为空,提示一下,否则,执行kill命令
if [ -z $pid ];
then
echo "$appname not started"
else
kill -9 $pid
echo "$appname stoping..."
# 再次查找是否成功关闭进程 -w精确查找
check=`ps -ef|grep -w $pid|grep java`
if [ -z $check ];
then
echo "$appname is stop"
else echo "$appname stop failed"
fi
fi
p15 代码提交测试
界面上执行脚本加上项目参数
手动构建成功
p16 gitlab自动构建项目
下载免登录插件,用token构建
http://192.168.56.130:8080/buildByToken/build?job=first&token=123456
安装插件后访问地址,输入jenkins项目名和token ,即可触发构建
在gitlab中配置钩子
触发事件设置:
勾选[合并请求事件触发]时,当创建合并请求和正真合并都会触发!更新或提交时就触发时 太消耗资源,不建议勾选
这里的事件都不太好用,建议在jenkins中手动构建或者定时构建
设置网络允许调用
p17 几种常用的构建触发器
p19 poll scm触发构建
和前面不同,相反 jenkins定时去访问gitlab触发构建,需要设置cron表达式
p20 配置邮箱接收构建通知
配置163邮箱为发件人
p 21容器化构建的几种方式
p22 docker jar文件打包到镜像中
使用第二种
准备一台测试服务器 装有docker环境 这里我们使用之前安装docker版gitlab的这台服务器 192.168.56.129
准备jar包
准备dockerfile,里面包含了拉取jdk,结合jar包,打包成新的镜像,然后生成容器运行
# 拉取jdk镜像
FROM openjdk:11
EXPOSE 8080
# 宿主机工作目录/root
WORKDIR /root
# 左边是宿主机jar包目录 右边是镜像要运行在的容器目录
ADD jarfile/testJenkins*.jar /root/app.jar
ENTRYPOINT ["java","-jar","/root/app.jar"]
使用dockerfile构建镜像
docker build -t testjenkins .
配置国内镜像加速
修改/etc/docker/daemon.json
文件,没有的话创建一个
写入
{
"registry-mirrors": [
"https://ustc-edu-cn.mirror.aliyuncs.com",
"http://hub-mirror.c.163.com",
"https://registry.aliyuncs.com"
]
}
重启服务
systemctl daemon-reload
systemctl restart docker
构建之后,看到多出了2个镜像一个是拉取的jdk,一个是我们要运行的镜像
运行我们的镜像
容器启动就可以访问jar包的项目了
p23 使用外部jar包完成自动化部署
使用第一种
使用了jdk镜像运行容器,挂载jar包目录,也可以直接访问
docker run -d -p 8080:8080 --name testJenkins-out -v /root/jarfile/testJenkins-1.0-SNAPSHOT.jar:/app.jar openjdk:11 java -jar app.jar
为了自动部署,需要自动删除服务器旧的jar包,停止容器,重新生成jar包,把jar包推送至测试服务器,重新启动容器
修改测试服务器ip
p24 镜像方式自动化部署
上面的第二种,如何自动化部署
代码中有dockerfile
p 25jenkins集群并发构建
添加从节点