zoukankan      html  css  js  c++  java
  • 自动化必备:自动化持续集成环境搭建(上):git + maven + jenkins

    前言

    当前,自动化已经是测试必备技能之一了,除了要会设计、开发自动化测试框架,搭建自动化持续集成环境也是必须的,本篇,将演示如何搭建自动化持续集成环境;

    因为大多数公司是java项目,所以,我在idea中使用springboot开发了几个简单的mock接口,接口自动化测试框架使用【接口自动化测试实战】中实战3的框架,代码仓库我用gitee演示,如果你的是github或者gitlab,也是可以的;

    思路介绍

    想必部分公司的情况是:开发先把代码提交到代码仓库、测试再通过jenkins去拉取对应的分支、然后测试运行自动化测试框架执行测试脚本、最后查看报告。。。

    可否开发提交了代码,后续的任务都自动执行呢?当然是可以的,即:(docker版后续更新

      1、开发提交代码

      2、jenkins自动从代码仓库(gitee)拉取对应分支的代码

      3、自动打包

      4、自动部署

      5、自动从gitee拉取接口自动化测试框架及脚本

      6、自动执行测试脚本

      7、生成测试报告

      8、把报告发布在一个服务下大家通过浏览器访问(也可以发送邮件);

    下面就介绍这个流程的具体实现。

    环境准备

    安装jdk、tomcat、jenkins、maven、git

      jdk:https://www.cnblogs.com/uncleyong/p/10732951.html

      tomcat:https://www.cnblogs.com/uncleyong/p/10742650.html

      jenkins:https://www.cnblogs.com/uncleyong/p/10742867.html

      maven:https://www.cnblogs.com/uncleyong/p/10743181.html

      git(务必源码安装git,yum安装的版本低,会出问题):https://www.cnblogs.com/uncleyong/p/10767747.html

    jenkins安装插件

    安装gitee插件(因为我的代码仓库是gitee)

    maven插件和git插件在安装jenkins的时候已经自动安装好了

    maven插件

    git插件

    jenkins全局工具配置

    系统管理→全局工具配置

    git

     maven

     

     jdk

     

    jenkins和gitee通讯方式

    这里演示使用https,如果你要使用ssh,需要做配置,即提前将Jenkins所在服务器的key添加到gitee上,配置免密登录

    先生成秘钥

    把公钥添加到gitee

    详细请参考:https://www.cnblogs.com/uncleyong/p/6891958.html

    jenkins任务创建及配置

    输入任务名称、选择【创建一个maven项目】

    源码管理选择Git、输入远程仓库地址 

    远程仓库地址获取方式如下:

    点击添加→Jenkins

    输入gitee的账号密码

    或者提前在下面通过账号密码添加,依次点击【系统】--【全局凭据】

    选择类型为用户名和密码、输入你自己gitee的用户名和密码 

    如果是ssh方式,Private Key填写Jenkins主机的root用户私钥(/root/.ssh/id_rsa),用户是启动tomcat服务的用户,我是用root安装、启动的

    选择刚刚添加的认证、选择master分支

    构建

    创建一个存放jar包的目录

     

     构建成功执行shell脚本(里面部分命令是调试用的,可以自行删除,比如:显示当前路径pwd)

     

     点击【应用】、【保存】

    现在没项目服务

    【立即构建】

    失败了

    查看控制台输出

     

     错误信息

    解决方案:https://stackoverflow.com/questions/59763531/maven-dependencies-are-failing-with-501-error

    上面提示,自2020年1月15日起,中央存储库不再支持通过纯HTTP进行的不安全通信,并且要求对存储库的所有请求都通过HTTPS进行加密。

    于是我们在构建过程中所依赖的settings文件中,加入以下配置:

    内容

    参考:https://www.cnblogs.com/flashfish/p/12202305.html

            <mirror>
                    <id>central</id>
                    <name>Maven Repository Switchboard</name>
                    <url>https://repo1.maven.org/maven2/</url>
                    <mirrorOf>central</mirrorOf>
            </mirror>

    重新构建,构建成功

     

    放jar包的目录下可以看到已经有jar包,且服务也启动起来了

    浏览器访问成功了

    触发构建项目

    上面,是我们手动点击构建后,jenkins去gitee拉取的代码,这一小节,演示触发构建,即开发提交代码后就自动化拉取代码、构建。。。

    先把之前的服务停了,jar包删了

    点击【配置】

    构建触发器,可以看到在Gitee webhook中要填写的url

     点击【生成】

    生成密码 

     

    点击【应用】、【保存】

     gitee中配置,在演示的java项目中,【管理】--【WebHooks】--【添加】

     

     填入上面jenkins中的url和密码

    上面点击【添加】后,点击下方【测试】

     

     可以看到,jenkins自动构建了

     

     构建成功

     服务也启动起来了

    浏览器访问成功

    下面我们模拟开发提交代码

    先把之前的服务停了,jar包删了

    我们将部门改为“持续集成部” 

    add--commit--push代码,另外,git基础请参考:https://www.cnblogs.com/uncleyong/p/10854115.html

    代码仓库可以看到更新

     jenkins自动构建

    服务也启动了

    url访问,可以看到部门变成了“持续集成部”

    持续集成shell脚本优化

    现在遗留的问题是,每次需要先手动停止服务、手动删除jar包

    我们可以写一个简单的shell脚本

    内容如下(里面部分命令是调试用的,可以自行删除,比如:显示当前路径pwd):

    命令中,改为执行这个shell脚本

    性别改为“女”

    add--commit--push

     

    自动构建成功

    日志

    服务启动起来了

    浏览器请求,性别显示是“女”

    下一篇,将集成自动化测试框架,自动运行测试脚本、生成测试报告、发布报告。

    自动化必备:自动化持续集成环境搭建(下):git + maven + jenkins

    https://www.cnblogs.com/uncleyong/p/12229900.html

  • 相关阅读:
    查找路径php.ini文件到底在哪里?
    对象androidandroid 开发中 如何取得ListView 的 每条Item 的对象
    文件内容红帽子数据库.profile文件内容详解
    思维流程对测试认识的三个阶段
    磁盘修改RHEL6使用udev修改asm磁盘名
    环境错误Unable to add window token android.app.LocalActivityManager$LocalActivityRecord@435def20 is not v
    deployconfigurationJboss remote access
    数据级别[Oracle] 事务隔离级别(Oracle的实现方式)
    Linux 基本命令
    PostThreadMessage
  • 原文地址:https://www.cnblogs.com/uncleyong/p/10821832.html
Copyright © 2011-2022 走看看