• 软件测试之持续集成


    作者:chu.qingqing[ZSK]

    软件测试历史模式

            说到软件测试,自然就会联想到持续集成。测试工作繁琐,如果测试人员仍然坚持按照旧的模式,开发人员提交代码至svn》测试人员检出源码》编译打包》上传服务器》部署启动,十分耗时,且过程中都需要测试人员进行操作,易造成人力资源的浪费。

    软件测试集成工具jenkins

            针对这种情况,持续集成工具jenkins被引入到测试工作中,协助测试人员进行“自动化部署、启动”。

            Jenkins,基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

            当开发人员完成一个阶段性的研发工作或修复完一个周期的bug后,所有代码均已提交到svn,测试人员只需要登入jenkins,对已创建好的工程(工程如何创建会在下面进行描述)进行构建,jenkins会自动将svn最新代码进行检出、编译并打包,部署到远程服务器启动,测试人员不需要进行任何其他操作,jenkins构建全程有日志,当构建成功后,测试人员看到的就是最新的应用程序。

            搭建上述持续集成环境可以把整个构建、部署过程自动化,很大程度上减轻测试人员工作量。

            Jenkins的安装教程网上可以搜索到,此处不再进行赘述。今天主要是结合具体项目来讲解,如何通过jenkins实现其自动化部署及启动。 

    Jenkins基础环境配置

            1)基础插件配置:登录jenkins,jenkins【系统管理】》【插件管理】,安装Maven Integration plugin、Deploy to container Plugin

            2)基础参数配置:jenkins【系统管理】》【全局工具配置】,配置好jenkins所在服务器的maven和jdk路径

            3)修改maven全局配置:jenkins【系统管理】》【系统设置】,修改Maven项目配置

    全局MAVEN_OPTS:-Xms128m -Xmx512m
    Local Maven Repository :Local to the executor

            全局MAVEN_OPTS:-Xms128m -Xmx512mLocal Maven Repository :Local to the executor

    Jenkins构建项目

            1) 新建项目:构建一个自由风格的软件项目

            2) 配置源码路径并添加权限用户,源码路径及依赖包需要按照次序进行添加

    Local module directory:这是让你自己设置代码存储到本地工作区的自定义目录
    如果为“.”,则码直接放在当前工作区目录下;
    如果自定义目录,则会在工作区创建这个目录结构,然后代码存储到这个目录下
     

            3) 添加构建脚本

    export JAVA_HOME=/home/qingqing/jdk8
    export JRE_HOME=$JAVA_HOME/jre
    export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
    cd $WORKSPACE
    cd bdp-parent
    MAVEN_BIN=/home/qingqing/maven3/bin
    $MAVEN_BIN/mvn clean install -Dmaven.test.skip=true
    cd ../bdp-transfer
    $MAVEN_BIN/mvn clean install -Dmaven.test.skip=true
    $WORKSPACE: Job的工作空间路径,这里就是/home/qingqing/.jenkins/workspace/bdp-console


            4) 先保存应用,到此构建该项目,代码没有问题的前提下,能够编译成功并打成war包,到这里只能算是自动化打包,那么自动化部署和启动,还需要在打包完成后进行操作 

    Jenkins配置SSH

            1) 保存完毕后,进入【系统管理】》【系统设置】,定位到Publish over SSH

    Passphrase:全局的ssh密码
    SSH Servers : 远程服务器信息设置区
    Name:当前SSH Server的名称(随意取)
    Hostname:远程服务器ip地址
    Username:远程服务器的用户名
    Remote Directory :连接远程服务器路径(绝对路径),也是在此路径下执行shell命令,默认为/home/admin(根据每台服务器用户名而改变)。

    Passphrase:全局的ssh密码 SSH Servers : 远程服务器信息设置区 Name:当前SSH Server的名称(随意取) Hostname:远程服务器ip地址 Username:远程服务器的用户名 Remote Directory :连接远程服务器路径(绝对路径),也是在此路径下执行shell命令,默认为/home/admin(根据每台服务器用户名而改变)。

    点击“高级”,勾选“Use password authentication, or use a different key”,在“Passphrase / Password”中输入远程服务器用户名的密码,比如该处输入用户名为“usieip”的密码。使用“Test Configuration”进行校验该配置是否通过,如下图:

     

    Jenkins通过shell脚本远程启动工程

            1) 此时再次进入初始构建的项目,bdp-console中,找到“构建后操作”,点击“增加构建后操作步骤”,选择“Send build artifacts over SSH”

            说明:此操作的目的,主要是将jenkins服务器上面打好的war包上传到远程服务器,并执行远程服务器的脚本(脚本中会进行停止在运行进程、换包、替换配置文件、重启工程)

    (1)Source files:这是一个相对路径,相对于该job的工作区的路径(存放源码的路径);(2)Remove prefix :移除Source files中的前缀;
    (2)Remote directory:远程服务器的目标位置,相对路径,相对于在“系统设置”中的“Publish over SSH”里的“SSH Server”设置里的“Remote Directory”的路径。
    (3)Exec command:此处写在远程服务器上执行的shell脚本
     

    Start.sh脚本内容:

    #tomcat路径
    TOMCAT_HOME=/home/usieip/bdp-console-8081

    #查看进程并杀掉进程
    ID=`ps -ef | grep "$TOMCAT_HOME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
    echo $ID
    for id in $ID
    do
    kill -9 $id
    echo "killed $id"
    done

    #删除旧的war包等
    cd $TOMCAT_HOME/webapps
    rm -rf bdp*

    #拷贝新war包到Tomcat下
    cd ../../war/
    cp bdp-transfer-console-3.0.0.war $TOMCAT_HOME/webapps
    mkdir bdp-transfer-console-3.0.0
    cp bdp-transfer-console-3.0.0.war bdp-transfer-console-3.0.0/
    cd bdp-transfer-console-3.0.0/
    unzip bdp-transfer-console-3.0.0.war
    cp /home/usieip/web_config/bdp.yml WEB-INF/classes/

    #启动tomcat
    "$TOMCAT_HOME"/bin/startup.sh

    Worker.sh脚本内容:

    #tomcat路径
    TOMCAT1_HOME=/home/usieip/bdp-worker-8020

    #查看进程并杀掉进程
    ID=`ps -ef | grep "$TOMCAT1_HOME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
    echo $ID
    for id in $ID
    do
    kill -9 $id
    echo "killed $id"
    done

    #删除旧的war包等
    cd $TOMCAT1_HOME/webapps
    rm -rf bdp*

    #拷贝新war包到Tomcat下
    cd ../../war/
    cp bdp-transfer-worker-3.0.0.war $TOMCAT1_HOME/webapps
    cd $TOMCAT1_HOME/webapps
    mkdir bdp-transfer-worker-3.0.0
    cp bdp-transfer-worker-3.0.0.war bdp-transfer-worker-3.0.0/
    cd bdp-transfer-worker-3.0.0
    unzip bdp-transfer-worker-3.0.0.war
    cp /home/usieip/worker_config/bdp.yml WEB-INF/classes/

    #启动tomcat
    "$TOMCAT1_HOME"/bin/startup.sh
     

            至此,一个基本的自动化部署工程已经创建完毕。jenkins中,直接对该工程进行构建,将对此工程进行编译,打包、部署、启动,浏览器直接输入访问地址就可以进行访问,如果构建失败,则需要查看构建日志,查看报错,解决问题,最终迎来自动化的“春天”~(当然,如果您在使用jenkins构建过程中有任何疑问,也可以联系我)

     

  • 相关阅读:
    Nginx之负载均衡配置(二)
    Nginx之负载均衡配置(一)
    Nginx之反向代理配置(二)
    Nginx之反向代理配置(一)
    Nginx之常用基本配置(三)
    Nginx之常用基本配置(二)
    Nginx之常用基本配置(一)
    Linux系统WEB服务之Nginx基础入门
    Linux系统之LVS+Keepalived实现
    Linux系统之网络文件共享与数据实时同步实践
  • 原文地址:https://www.cnblogs.com/ustcinfo-qc/p/12124482.html
Copyright © 2020-2023  润新知