jenkins持续集成
1 DockerMaven插件
微服务通过Maven插件自动部署。
基础镜像jdk1.8的制作请参考docker入门。
Maven插件自动部署步骤:
(1)修改宿主机的docker配置,让其可以远程访问
vi /lib/systemd/system/docker.service
其中ExecStart=后添加配置
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
(2)刷新配置,重启服务
systemctl daemon-reload
systemctl restart docker
docker start registry
(3)在工程pom.xml 增加配置
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- docker的maven插件,官网:https://github.com/spotify/docker-maven-plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>
<configuration>
<imageName>192.168.220.129:5000/${project.artifactId}:${project.version}</imageName>
<baseImage>jdk1.8</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<dockerHost>http://192.168.220.129:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
以上配置会自动生成Dockerfile
FROM jdk1.8
ADD app.jar /
ENTRYPOINT ["java","-jar","/app.jar"]
(5)在windows打开cmd,进入项目pom.xml所在的目录
mvn package
进入pom.xml 所在的目录,输入以下命令,进行打包和上传镜像
mvn docker:build -DpushImage
执行后,会有如下输出,代码正在上传
(6)进入宿主机 , 查看镜像
docker images
输出如上内容,表示微服务已经做成镜像
浏览器访问 http://192.168.220.129:5000/v2/_catalog ,输出
{"repositories":["demo3"]}
(7) 启动容器:
docker run -di --name=demo3 -p 50000:50000 192.168.220.129:5000/demo3:0.0.1-SNAPSHOT
即可访问项目
2 持续集成工具-Jenkins
2.1 什么是持续集成
持续集成 Continuous integration ,简称CI
随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。
持续集成正是针对这一类问题的一种软件开发实践。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。
持续集成具有的特点:
- 它是一个自动化的周期性的集成测试过程,从检出代码、编译构建、运行测试、结果记录、测试统计等都是自动完成的,无需人工干预;
- 需要有专门的集成服务器来执行集成构建;
- 需要有代码托管工具支持,我们下一小节将介绍Git以及可视化界面Gogs的使用
持续集成的作用:
- 保证团队开发人员提交代码的质量,减轻了软件发布时的压力;
- 持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;
2.2 Jenkins简介
Jenkins,原名Hudson,2011年改为现在的名字,它 是一个开源的实现持续集成的软件工具。官方网站:http://jenkins-ci.org/。
Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。
特点:
- 易安装:仅仅一个 java -jar jenkins.war,从官网下载该文件后,直接运行,无需额外的安装,更无需安装数据库;
- 易配置:提供友好的GUI配置界面;
- 变更支持:Jenkins能从代码仓库(Subversion/CVS)中获取并产生代码更新列表并输出到编译输出信息中;
- 支持永久链接:用户是通过web来访问Jenkins的,而这些web页面的链接地址都是永久链接地址,因此,你可以在各种文档中直接使用该链接;
- 集成E-Mail/RSS/IM:当完成一次集成时,可通过这些工具实时告诉你集成结果(据我所知,构建一次集成需要花费一定时间,有了这个功能,你就可以在等待结果过程中,干别的事情);
- JUnit/TestNG测试报告:也就是用以图表等形式提供详细的测试报表功能;
- 支持分布式构建:Jenkins可以把集成构建等工作分发到多台计算机中完成;
- 文件指纹信息:Jenkins会保存哪次集成构建产生了哪些jars文件,哪一次集成构建使用了哪个版本的jars文件等构建记录;
- 支持第三方插件:使得 Jenkins 变得越来越强大
2.3 Jenkins安装
2.3.1 JDK安装
(1)将jdk-8u171-linux-x64.rpm上传至服务器(虚拟机)
(2)执行安装命令
rpm -ivh jdk-8u171-linux-x64.rpm
RPM方式安装JDK,其根目录为:/usr/java/jdk1.8.0_171-amd64
2.3.2 Jenkins安装与启动
(1)下载jenkins
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.249-1.1.noarch.rpm
(2)安装jenkins
rpm -ivh jenkins-2.249-1.1.noarch.rpm
(3)配置jenkins
vi /etc/sysconfig/jenkins
修改用户和端口
JENKINS_USER="root"
JENKINS_PORT="8888"
vi /etc/init.d/jenkins
添加如下最后一行(jdk的路径)
candidates="
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/bin/java
/usr/local/java/jdk/bin/java #jdk的安装目录
"
(4)启动服务
systemctl daemon-reload
systemctl start jenkins
(5)访问链接 http://192.168.220.129:8888
按提示找到密码输入, 点击继续
出现该jenkins似乎已离线
点击 跳过插件安装(后边插件全部手动上传安装)
然后创建用户, 下一步, 就到首页
(6)安装插件
点击 系统管理 - 插件管理
然后安装maven插件
安装失败, 这个错误查了很多文章都不管用, 所以点开每个detail 手动下载所有插件, 在插件管理中上传安装(按照失败的顺序安装)
然后搜索git, 安装git插件
修改admin密码(可以不修改, 用创建的账户就行):
find / -name config.xml
vim /var/lib/jenkins/users/admin_1769376840817810947/config.xml
#打开该配置文件找到节点
123456加密后:#jbcrypt:$2a
10
10
10MiIVR0rr/UhQBqT.bBq0QehTiQVqgNpUGyWW2nJObaVAM/2xSQdSq
#替换密码,重启 systemctl restart jenkins
完全卸载jenkins(弄错了就卸载重来)
systemctl stop jenkins.service
rpm -qa | grep jenkins
rpm -e 上边查询到的
rm -rf /etc/sysconfig/jenkins.rpmsave
rm -rf /var/cache/jenkins/
rm -rf /var/lib/jenkins/
rm -rf /var/log/jenkins
rm -rf /usr/lib/jenkins
2.5 全局工具配置
2.5.1 安装Maven与本地仓库
(1)将Maven压缩包上传至服务器
http://maven.apache.org/download.cgi 官网下载tar.gz包
(2)解压
tar zxvf apache-maven-3.6.3-bin.tar.gz
(3)移动目录
mv apache-maven-3.6.3 /usr/local/maven
(4)编辑setting.xml配置文件vi /usr/local/maven/conf/settings.xml
,配置本地仓库目录,内容如下
仓库地址
<localRepository>/usr/local/repository</localRepository>
阿里镜像仓库
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
2.5.2 全局工具配置
选择系统管理,全局工具配置
(1)JDK配置
(2)Git配置 (本地已经安装了Git软件)
git安装
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install git
whereis git
git --version
(3)Maven配置
2.6 任务的创建与执行
(1)回到首页,点击新建按钮 .如下图,输入名称,选择创建一个Maven项目,点击OK
选择git, 填写项目地址
填写pom.xml的位置, 填写命令, 用于清除、打包,构建docker镜像
clean package docker:build -DpushImage
点击save, 执行任务
构建成功, 服务器上就能看到镜像了