Jenkins持续集成

1.1 持续集成介绍

 

1.1.1问题描述

传统的软件开发流程如下:

1、项目经理分配模块给开发人员

2、每个模块的开发人员并行开发,并进行单元测试

3、开发完毕,将代码集成部署到测试服务器,测试人员进行测试。

4、测试人员发现bug,提交bug、开发人员修改bug

5、bug修改完毕再次集成、测试。

问题描述:

1、模块之间依赖关系复杂,在集成时发现大量bug

2、测试人员等待测试时间过长

3、软件交付无法保障

解决上述问题的思考:

1、能否把集成测试时间提前?

2、能否使用自动化工具代替人工集成部署的过程?

1.1.2 什么是持续集成

image.png

持续集成(Continuous integration)简称CI,持续集成的思想是每天要多次将代码合并到主干,并进行集成、测

试,这样就可以提早发现错误,进行修正。持久集成也属于DevOps

持续集成的好处:

1、自动化集成部署,提高了集成效率。

2、更快的修复问题。

3、更快的进行交付。

4、提高了产品质量。

1.1.3 本项目持续集成流程

image.png

2.2 搭建环境

2.1 安装 Jenkins

Jenkins是一个领先的开源自动化服务器,可用于自动化构建,测试,部署软件等相关任务。

官网地址:https://jenkins.io

image.png

image.png

安装方法见“Jenkins安装文档”。

2.2 安装GitLab

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。

GitLab与GitHub的功能相似,通常企业使用GitLab在局域网搭建自己的Git代码管理仓库。

image.png

安装方法见“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.org/POM/4.0.0"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema‐instance"

        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0

http://maven.apache.org/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创建构建任务

 

创建学成在线的构建任务:

image.png

3.1.2 配置git仓库

1、配置git凭证

此凭证用于远程从git仓库克隆工程源代码

输入git仓库的账号和密码,这里如果使用码云,下边需要配置码云的账号和密码。

image.png

2、配置git仓库地址,此地址即xc-edu项目的地址

image.png

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

image.png

2、执行maven构建:

image.png

执行如下maven指令:

clean package ‐f basicpro-‐govern‐center/pom_docker_registry.xml ‐DskipTests docker:build

3、拉取镜像,创建容器,启动容器

从docker私有仓库拉取镜像并创建容器,启动容器

显示容器运行日志

image.png

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、进入任务页面,点击“立即构建”

image.png

2、开始构建,查看日志

image.png

3.1.5 自动构建

使用Gitlab提供的webhook功能可以实现开发人员将代码push到Git仓库自动进行构建。

1、设置webhook

参考“GitLab安装文档”配置webhook

2、在Idea中修改项目代码,push到GitLab。

3、Jenkins任务收到GitLab通知自动执行构建。

扫描下方二维码获取Jetbrins获取全家桶和Navicat激活

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值