• Jenkins配置单元测试(pipeline+Allure)


    条件:Jenkins安装pipeline插件和Allure插件

    1、基础pipeline脚本

      拉取代码=》执行clean操作=》执行单元测试=》执行打包部署=》执行其他

    (1)图示

    jenkins执行阶段视图
    gitlab中单元测试的对应结果

    jenkins单元测试报告的入口单元测试报告展示

    (2)脚本

    pipeline脚本 
    pipeline {
     2     agent any  //在可用的节点运行
     3     environment {
     4         //git配置
     5         git_url = 'http://gitlab.***' //git的url地址
     6         git_key = 'XXXXX-XXXX-XXX' //git的访问key--流水线语法生成
     7         git_branch = 'release' //git的branch分支
     8     }
     9     stages{
    10         //拉取git代码
    11         stage('GetCode'){
    12             steps{
    13                 echo "get source codes from git"
    14                 git branch: env.git_branch, credentialsId: env.git_key, url: env.git_url
    15            }
    16        }
    17        //执行mvn clean
    18        stage('Clean'){
    19             steps{
    20                 echo "Execute Clean"
    21                 withMaven(jdk: 'jdk_1.8', maven: 'maven3') {
    22                     sh "mvn clean"
    23                 }
    24             }
    25         }
    26         //执行单元测试
    27         stage('UnitTest'){
    28             steps{
    29                 echo "Execute unittest"
    30                 withMaven(jdk: 'jdk_1.8', maven: 'maven3') {
    31                     sh "mvn test"
    32                 }
    33  
    34             }
    35             //执行单元测试后的处理
    36             post
    37             {
    38                 always{
    39                     //生成单元测试结果
    40                     junit 'target/surefire-reports/*.xml'
    41                              
    42                     //生成allure报告
    43                     allure includeProperties: false, jdk: '', results: [[path: 'target/allure-results']]
    44                 }
    45                 success {//成功时,发送success状态给gitlab
    46                     updateGitlabCommitStatus name:'jenkins-unittest',state:'success'
    47                 }
    48                 failure {//失败时,发送failed状态给gitlab
    49                     updateGitlabCommitStatus name:'jenkins-unittest',state:'failed'
    50                 }
    51             }
    52         }
    53         //执行打包部署
    54         stage('Make Package'){
    55             steps{
    56                 echo "Execute deploy"
    57                 withMaven(jdk: 'jdk_1.8', maven: 'maven3') {
    58                     sh "mvn package -Dmaven.test.skip=true -Ptest"
    59                 }
    60  
    61             }
    62         }
    63         //部署前
    64         stage('before_Deploy'){
    65             steps{
    66                 echo "部署前处理"
    67                 //todo 使用“流水线语法”转换处理内容(例如ssh处理等等)
    68             }
    69         }
    70         
    71         //部署
    72         stage('Deploy'){
    73             steps{
    74                 echo "部署处理"
    75                 //todo 使用“流水线语法”转换处理内容(例如ssh处理等等)
    76             }
    77         }
    78     }
    79     options{
    80         gitLabConnection('gitlab')
    81     }
    82      
    83 }
    2、包含邮件发送的pipeline(可选择)

    (1)图示

    (2)脚本

    邮件配置 
    pipeline {
        agent any  //在可用的节点运行
        environment {
            to_list = 'zhangsan@wifi.com' //收件人,多人时用'逗号'分隔
        }
        stages{
        }
        post{
            failure {//失败时
                script{
                    //判断是否要发邮件
                    if (failure_isSendmail=='true'){
                        emailext subject: '$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!('+ env.git_branch+' branch)',
                            body:
                            '''<!DOCTYPE html>   
                            <html>   
                            <head>   
                            <meta charset="UTF-8">   
                            <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>   
                            </head>   
                                 
                            <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"   
                                offset="0">   
                                <table width="95%" cellpadding="0" cellspacing="0"  style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">   
                                    <tr>   
                                        本邮件由系统自动发出,无需回复!<br/>           
                                        各位同事,大家好,以下为${PROJECT_NAME }项目构建信息</br>
                                        <td><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></td>  
                                    </tr>   
                                    <tr>   
                                        <td><br />   
                                        <b><font color="#0B610B">构建信息</font></b>   
                                        <hr size="2" width="100%" align="center" /></td>   
                                    </tr>   
                                    <tr>   
                                        <td>   
                                            <ul>   
                                                <li>项目名称: ${PROJECT_NAME}</li>   
                                                <li>构建编号: 第${BUILD_NUMBER}次构建</li>   
                                                <li>触发原因: ${CAUSE}</li>   
                                                <li>构建状态: ${BUILD_STATUS}</li>   
                                                <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>   
                                                <li>项目  Url: <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>   
                                            </ul>   
             
                            <h4><font color="#0B610B">单元测试结果(total:${TEST_COUNTS,var="total"},pass:${TEST_COUNTS,var="pass"},fail:<font color="#FF0000">${TEST_COUNTS,var="fail"}</font>)</font></h4>
                            <hr size="2" width="100%" />
                            <font color="#FF00FF">测试报告:</font> <a href="${BUILD_URL}allure">${BUILD_URL}allure</a>
                            <br/> <br/>
             
                            <h4><font color="#0B610B">最近提交</font></h4>
                            <hr size="2" width="100%" />
                            <ul>
                            ${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}
                            </ul>
                            详细提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/>
             
                                        </td>   
                                    </tr>   
                                </table>   
                            </body>   
                            </html>''', 
                            to: env.to_list
                    }
                }
            }
        }
    }

    3、其他说明及注意点

    (1)Git拉取代码时使用的key,需要通过通过"流水线语法"页面获取,如下图。

    (2)pipeline一旦有一步执行出错,后续步骤会终止

    (3)由于代码中有前端代码,需要做一些处理(只需执行一次),否则会导致打包错误(具体错误未截获)

    • 找到项目所在的工作区(比如:/usr/local/tomcat-9.0.20/webapps/jenkins/workspace/project_new)
    • 在“/src/main/webclient”目录下,执行以下代码:

              npm install -g cnpm --registry= https://registry.npm.taobao.org

              cnpm install

    三十六般武艺,七十二般变化,修练出个人品牌并发出光芒
  • 相关阅读:
    2016/3/28 大三下第一月
    hihoCoder1284机会渺茫(唯一分解定理 + 约分)
    瞬沐队小组会议
    本周编程
    团队简介及团队课题
    本周编程
    Python环境的配置
    疫情图表
    本周编程
    返回一个数组中和最大的子数组
  • 原文地址:https://www.cnblogs.com/deeptester-vv/p/14777422.html
Copyright © 2020-2023  润新知