一、安装内容
Jenkins(本文主要安装)、Maven、Git、JDK
Jenkins与Github配合实现持续集成需要注意以下几点:
- ①Jenkins要部署到外网,因为内网Github是无法访问到的(走过的坑!),这里我租用的是阿里云的服务器实现。
- ②Jenkins所在的主机需要安装Git,通过Git程序从Github上clone代码
- ③在Jenkins中需要指定Git、Maven、JDK,路子都是相同的。
- ④在Github上使用每一个repository的webhook方式远程触发jenkins构建
- ⑤在Jenkins内关闭 “防止跨站点请求伪造”
二、实现过程
1、不使用Jenkins
- ①我们开发人员需要编写代码,提交到版本控制服务器(Svn、Git)
- ②我们开发人员需要手动拉取最新代码,构建maven工程,进行打包(war或jar)
- ③我们开发人员手动部署war或jar至应用服务器
- ④一旦项目上线,bug修改等小改动问题都要重复以上过程
2、使用Jenkins
- ①同样,业务代码还是需要开发人员来编写并commit或push至版本控制自服务器(SVN、Git)
- ②通过以上图,我们发现,Jenkins帮我们做了:拉取最新代码、打包、部署
- ③我们开发人员只需专注于:业务代码的编写
- ④一旦项目上线,bug修改等小改动问题,我们开发人员只需提交最新代码即可,另一边的测试或最终用户就能看到最终效果,大大减少我们开发人员的工作量
三、准备工作
1、Github仓库准备测试项目
使用老师给的资料即可
2、安装java环境(jdk环境)
3、安装maven环境
4、安装Git环境
5、安装Docker
四、Jenkins的下载安装
下载地址:https://jenkins.io/download/(下载速度极慢),这里我推荐使用国外的镜像,亲测可用,下载地址如下:
http://mirrors.jenkins.io/war-stable/latest/jenkins.war
若提示不安全,直接选择保留即可
1、war包安装
2、安装jenkins
(1)把jenkins的war包上传到linux系统中
(2)启动war包,使用命令 java –jar
nohup java -jar /usr/local/jenkins/jenkins.war >/usr/local/jenkins/jenkins.out &
- 启动出现下面界面
- 再次点击回车
(3)查看启动进程
ps -ef | grep jenkins
(3)访问jenkins管理页面
- 使用当前linux系统ip地址:8080端口号
- 首先进入初始化界面,需要多等一会,之后进入到下面界面
(4)解锁操作
- 找到管理员密码进行输入
- 查看提示文件内容,复制默认密码到输入框里面
- 输入正确密码,点击继续。
点击继续,进入如下界面。
注意:进入安装插件页面,不要往下进行了,下载插件会很慢,配置国内镜像,为了提高下载速度,关掉浏览器,去配置镜像
(5)杀死Jenkins进程
(6)配置国内镜像
cd /root/.jenkins/updates #进入更新配置位置
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
- 重启jenkins,运行管理界面,安装插件
- 安装插件之后,插件管理员用户名和密码
- 实例配置
- 安装完成
三、Jenkins配置
1、配置自动化部署需要环境
2、配置jdk环境
3、配置maven环境
4、配置git环境
四、Jenkins自动化过程
1、准备工作
(1)需要项目工程,需要做修改
第一:项目需要Dockerfile文件
文件内容:
FROM openjdk:8-jdk-alpine VOLUME /tmp COPY ./target/demojenkins.jar demojenkins.jar ENTRYPOINT ["java","-jar","/demojenkins.jar", "&"]
第二:在项目pom文件添加打包类型 和 maven插件
2、在jenkins管理界面创建自动化任务
(1)
(2)
(3)把代码提交码云Git仓库里面
此时不会的可以查看https://blog.csdn.net/weixin_45606067/article/details/109536927
(4)在作业创建页面指定代码位置
添加git用户,git的用户名与密码
选择添加的用户,上面的红色提示信息消失,说明连接成功。
(5)
(6)修改脚本路径,进行复制
#!/bin/bash
#maven打包
mvn clean package
echo 'package ok!'
echo 'build start!'
cd ./infrastructure/eureka_server
service_name="eureka-server"
service_prot=8761
#查看镜像id
IID=$(docker images | grep "$service_name" | awk '{print $3}')
echo "IID $IID"
if [ -n "$IID" ]
then
echo "exist $SERVER_NAME image,IID=$IID"
#删除镜像
docker rmi -f $service_name
echo "delete $SERVER_NAME image"
#构建
docker build -t $service_name .
echo "build $SERVER_NAME image"
else
echo "no exist $SERVER_NAME image,build docker"
#构建
docker build -t $service_name .
echo "build $SERVER_NAME image"
fi
#查看容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
echo "CID $CID"
if [ -n "$CID" ]
then
echo "exist $SERVER_NAME container,CID=$CID"
#停止
docker stop $service_name
#删除容器
docker rm $service_name
else
echo "no exist $SERVER_NAME container"
fi
#启动
docker run -d --name $service_name --net=host -p $service_prot:$service_prot $service_name
#查看启动日志
docker logs -f $service_name
- 保存上面的构建作业
构建结构说明:
(7)执行作业(任务)
- 需要docker启动起来
service docker start
(8)看到控制台日志输出
成功后的效果