admin管理员组文章数量:1564185
1.1 持续集成介绍
1.1.1问题描述
传统的软件开发流程如下:
1、项目经理分配模块给开发人员
2、每个模块的开发人员并行开发,并进行单元测试
3、开发完毕,将代码集成部署到测试服务器,测试人员进行测试。
4、测试人员发现bug,提交bug、开发人员修改bug
5、bug修改完毕再次集成、测试。
问题描述:
1、模块之间依赖关系复杂,在集成时发现大量bug
2、测试人员等待测试时间过长
3、软件交付无法保障
解决上述问题的思考:
1、能否把集成测试时间提前?
2、能否使用自动化工具代替人工集成部署的过程?
1.1.2 什么是持续集成
持续集成(Continuous integration)简称CI,持续集成的思想是每天要多次将代码合并到主干,并进行集成、测
试,这样就可以提早发现错误,进行修正。持久集成也属于DevOps
持续集成的好处:
1、自动化集成部署,提高了集成效率。
2、更快的修复问题。
3、更快的进行交付。
4、提高了产品质量。
1.1.3 本项目持续集成流程
2.2 搭建环境
2.1 安装 Jenkins
Jenkins是一个领先的开源自动化服务器,可用于自动化构建,测试,部署软件等相关任务。
官网地址:https://jenkins.io
安装方法见“Jenkins安装文档”。
2.2 安装GitLab
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
GitLab与GitHub的功能相似,通常企业使用GitLab在局域网搭建自己的Git代码管理仓库。
安装方法见“GitLab安装文档”
2.3 编写Pom.xml
本例子将basicpro-govern-center工程使用Jenkins进行构建。
在basicpro-govern-center工程根目录编写pom_docker_registry.xml
此文件相比工程原有pom.xml增加了docker-maven-plugin插件,其作用是构建docker镜像并将镜像推送到
Docker私有仓库(192.168.101.64:5000)。
<?xml version="1.0" encoding="UTF‐8"?>
<project xmlns="http://maven.apache/POM/4.0.0"
xmlns:xsi="http://www.w3/2001/XMLSchema‐instance"
xsi:schemaLocation="http://maven.apache/POM/4.0.0
http://maven.apache/xsd/maven‐4.0.0.xsd">
<parent>
<artifactId>xc‐framework‐parent</artifactId>
<groupId>com.xuecheng</groupId>
<version>1.0‐SNAPSHOT</version>
<relativePath>../xc‐framework‐parent/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>xc‐govern‐center</artifactId>
<version>1.0‐SNAPSHOT</version>
<dependencies>
<!‐‐ 导入Eureka服务的依赖 ‐‐>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring‐cloud‐starter‐netflix‐eureka‐server</artifactId>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}‐${project.version}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring‐boot‐maven‐plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker‐maven‐plugin</artifactId>
<version>1.0.0</version>
<!‐‐docker镜像相关的配置信息‐‐>
<configuration>
<!‐‐镜像名,这里用工程名‐‐>
<imageName>${project.artifactId}‐${project.version} </imageName>
<!‐‐Dockerfile文件所在目录‐‐>
<dockerDirectory>${project.basedir}/src/main/resources</dockerDirectory>
<!‐‐TAG,这里用工程版本号‐‐>
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
<registryUrl>192.168.101.64:5000</registryUrl>
<pushImage>true</pushImage>
<imageName>192.168.101.64:5000/${project.artifactId}:${project.version}
</imageName>
<!‐‐构建镜像的配置信息‐‐>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.artifactId}‐${project.version}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
</project>
3.1 创建持续集成任务
3.1.1创建构建任务
创建学成在线的构建任务:
3.1.2 配置git仓库
1、配置git凭证
此凭证用于远程从git仓库克隆工程源代码
输入git仓库的账号和密码,这里如果使用码云,下边需要配置码云的账号和密码。
2、配置git仓库地址,此地址即xc-edu项目的地址
3.1.3 maven构建配置
目标:
使用jenkins重复构建不要产生重复镜像
使用jekins停止容器、删除容器、删除镜像之间进行判断
构建过程分为三步:
本例子以构建basicpro--govern-center工程为例,其它工程构建方式类似。
1、使用shell脚本停止容器、删除容器、删除镜像
远程登录192.168.101.64(测试服务器)
停止basicpro--govern-center容器
删除basicpro--govern-center容器
删除192.168.101.64:5000/basicpro--govern-center:1.0-SNAPSHOT镜像
shell脚本如下:
#!/bin/bash
result=$(docker ps | grep "192.168.101.64:5000/basicpro-‐govern‐center")
if [[ "$result" != "" ]]
then
echo "stop basicpro-‐govern‐center"
docker stop basicpro-‐govern‐center
fi
result1=$(docker ps ‐a | grep "192.168.101.64:5000/basicpro-‐govern‐center")
if [[ "$result1" != "" ]]
then
echo "rm basicpro-‐govern‐center"
docker rm basicpro-‐govern‐center
fi
result2=$(docker images | grep "192.168.101.64:5000/basicpro-‐govern‐center")
if [[ "$result2" != "" ]]
then
echo "192.168.101.64:5000/basicpro-‐govern‐center:1.0‐SNAPSHOT"
docker rmi 192.168.101.64:5000/basicpro-‐govern‐center:1.0‐SNAPSHOT
fi
2、执行maven构建:
执行如下maven指令:
clean package ‐f basicpro-‐govern‐center/pom_docker_registry.xml ‐DskipTests docker:build
3、拉取镜像,创建容器,启动容器
从docker私有仓库拉取镜像并创建容器,启动容器
显示容器运行日志
docker run ‐‐name basicpro‐govern‐center ‐p 50101:50101 ‐idt 192.168.101.64:5000/xc‐govern‐center:1.0‐
SNAPSHOT
docker logs ‐f basicpro-govern‐center
3.1.4 执行任务
1、进入任务页面,点击“立即构建”
2、开始构建,查看日志
3.1.5 自动构建
使用Gitlab提供的webhook功能可以实现开发人员将代码push到Git仓库自动进行构建。
1、设置webhook
参考“GitLab安装文档”配置webhook
2、在Idea中修改项目代码,push到GitLab。
3、Jenkins任务收到GitLab通知自动执行构建。
扫描下方二维码获取Jetbrins获取全家桶和Navicat激活
本文标签: Jenkins
版权声明:本文标题:Jenkins持续集成 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1727467287a1115899.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论