栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

使用 Jenkins + 企微机器人 + docker + cypress + allure 完成自动化测试及结果通知

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用 Jenkins + 企微机器人 + docker + cypress + allure 完成自动化测试及结果通知

CI 镜像

镜像定义文件: ssoor/cypress:yk-test

FROM ubuntu:latest

RUN sed -i s@/archive.ubuntu.com/@/mirrors.tuna.tsinghua.edu.cn/@g /etc/apt/sources.list

RUN apt-get update && 
    DEBIAN_FRONTEND=noninteractive apt-get install -y curl && 
    apt-get clean all && rm -rf /var/lib/apt/listsmaster']], extensions: [], userRemoteConfigs: [[credentialsId: '02007fe4-2bff-4989-98a1-1503397b03ea', url: 'https://github.com/ssoor/allure-report.git']]])
                dir("${CI_PROJECT_PATH}") {
                    echo "Install cypress dependency"
                    sh """
                        yarn install --production
                    """

                    echo "Generate cypress results"
                    sh """
                        rm -rf "results/allure"
                        npx cypress run -s cypress/integration/judge.spec.js
                    """
                }
                
                withCredentials([gitUsernamePassword(credentialsId: '02007fe4-2bff-4989-98a1-1503397b03ea', gitToolName: 'Default')]) {
                    sh 'git checkout origin/master'
                }  

                dir("${CI_PROJECT_PATH}") {
                    echo "Generate allure-report results from cypress"
                    sh """
                        mkdir -p "reports/allure/history"
                        cp -r "reports/allure/history" "results/allure"
                        allure generate "results/allure" -o "results/allure-report" --clean
                    """
                }
            }
        }
        stage("保存测试报告"){
            agent {
                docker { image 'ssoor:gitlab-runner' }
            }
            steps{
                dir("${CI_PROJECT_PATH}") {
                    // Jenkins 如果设置 Jenkinsfile 通过 GIT 仓库拉取
                    // 则每个 stage 都会触发 fetch 操作导致之前 stage 对仓库已有文件的修改丢失
                    // 所以在这里才真正修改仓库已有文件
                    echo "Save allure-report to git reports"
                    sh """
                        rm -rf "reports/allure"
                        mv "results/allure-report" "reports/allure"
                    """

                    echo "Commit allure-report to gitlab"
                    withCredentials([gitUsernamePassword(credentialsId: '02007fe4-2bff-4989-98a1-1503397b03ea', gitToolName: 'Default')]) {
                        sh """
                            git config --global user.name "gitlab-ci"
                            git config --global user.email "gitlab-ci@mail.com"
                        """
                        
                        sh """
                            git add .
                            git commit -m "Gitlab generate by ${BUILD_ID}"
                            git fetch origin master
                            git rebase origin/master 
                            git push -u origin HEAD:master
                        """
                    }
                }
            }
        }
        stage("发送测试结果通知"){
            agent {
                docker { image 'ssoor:gitlab-runner' }
            }
            environment {
                QYWX_ROBOT_URL = "${QYWX_ROBOT_URL}"
                CI_PROJECT_PATH = "${CI_PROJECT_PATH}"
                CI_COMMIT_BRANCH = "${CI_COMMIT_BRANCH}"
            }
            steps{
                dir("${CI_PROJECT_PATH}") {
                    echo "Send test repost to QYWX"
                    sh '''
                        RESULT_ALL=`cat reports/allure/history/history-trend.json | jq .[0].data`
                        RESULT_TOTAL=`echo $RESULT_ALL | jq .total`
                        RESULT_PASSED=`echo $RESULT_ALL | jq .passed`
                        RESULT_FAILED=`echo $RESULT_ALL | jq .failed`
                        RESULT_SKIPPED=`echo $RESULT_ALL | jq .skipped`
                        cat | bash << EOF
                        curl --location --request POST '${QYWX_ROBOT_URL}' 
                        --header 'Content-Type: application/json' 
                        --data-raw '{
                            "msgtype": "markdown",
                            "markdown": {
                            "content": "# 仓库:*[${CI_PROJECT_PATH}](https://github.com/${CI_PROJECT_PATH})*\n\n\n\n本次执行用例 ${RESULT_TOTAL} 例,执行分支:**${CI_COMMIT_BRANCH}**\n> 成功:${RESULT_PASSED}例\n> 失败:${RESULT_FAILED}例\n> 跳过:${RESULT_SKIPPED}例\n\n点击查看详情:[Allure-report](http://10.9.40.75:4480/${CI_PROJECT_PATH})"
                            }
                        }'
                    '''
                }
            }
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/964499.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号