linux系统下docker中部署python+jenkins+gitlab+pytest+allure实现自动化测试问题汇总

问题1

gitlab占用cpu内容过高

修改配置文件,有挂载就在容器内部修改,没有的话就修改宿主机中的文件

1. 编辑配置文件(养成习惯,修改前先备份)
cd /etc/gitlab

cp gitlab.rb gitlab.rbbak
vi gitlab.rb  

2. 配置文件中调整参数如下:
gitlab_rails['time_zone'] = 'Asia/Shanghai'
puma['worker_processes'] = 2
puma['worker_memory_limit_min'] = "100 * 1 << 20"
puma['worker_memory_limit_max'] = "250 * 1 << 20"
sidekiq['concurrency'] = 8
postgresql['shared_buffers'] = "128MB"
postgresql['max_worker_processes'] = 4
prometheus_monitoring['enable'] = false

3. 应用更改后的配置、重启gitlab
gitlab-ctl reconfigure
gitlab-ctl restart
 

问题2

测试用例中既有api又有ui,但是在用例中可能会遇到有些python的库只适用于windows系统),实际操作过程中我们运行自动化的环境是linux系统,这个问题主要有两个方向去规避:1.jenkins有提供节点管理,添加一个从节点(windows系统)2.修改代码使用linux和windows都通用的库去实现自动化

这种主要针对的是第一种方式提供解决方法

1.配置全局变量jdk和allure(windows系统)(路径只需要选到bin目录的上一层就够了)

2.jenkins系统管理>>节点管理>>新建节点

修改下图标记的地方,工具选择已配置的全局变量相对应的就行了

linux系统下docker中部署python+jenkins+gitlab+pytest+allure实现自动化测试问题汇总_第1张图片

端口可以不填,默认为50000(jenkins容器要开放50000端口) 

如何开放已创建容器的端口参照这篇文章

运行中的Docker容器添加映射端口_954L的博客-CSDN博客_docker新增端口映射

linux系统下docker中部署python+jenkins+gitlab+pytest+allure实现自动化测试问题汇总_第2张图片

linux系统下docker中部署python+jenkins+gitlab+pytest+allure实现自动化测试问题汇总_第3张图片

配置完节点管理展示 

linux系统下docker中部署python+jenkins+gitlab+pytest+allure实现自动化测试问题汇总_第4张图片

3.点击左侧节点名称,进入相应节点的管理界面,下载代理的jar包(agent.jar)丢到本地

4.jar所在目录敲下cmd进入命令行模式

linux系统下docker中部署python+jenkins+gitlab+pytest+allure实现自动化测试问题汇总_第5张图片

copy一下jenkins界面的命令

linux系统下docker中部署python+jenkins+gitlab+pytest+allure实现自动化测试问题汇总_第6张图片

又看到connected就表示连接成功了

linux系统下docker中部署python+jenkins+gitlab+pytest+allure实现自动化测试问题汇总_第7张图片

3.jenkins流水线风格集成钉钉,构建通知

Jenkinsfile脚本如下:

pipeline {
    agent {node('xxxx')}
    stages {
         stage('UI测试'){
            steps {
                //下载代码文件
                checkout scm
                echo '执行UI测试用例'
                script{
                    try {
                       bat "pytest  -vs --alluredir=report/temp  --clean-alluredir"
                       bat "copy report\\environment.properties report\\temp"
                        }
                    catch(Exception err) {
                       println(err);}}

                                        }}
//         stage('api测试'){
//             steps {
//
//                 echo "执行api测试用例"
//                 script{
//                     try{
//                         bat "pytest test_case/api -vs --alluredir=report/temp"}
//                     catch(Exception err){println(err);}}
//
//         //         sh "cp ./report/environment.properties ./allure-report/environment.properties"
//             }}
        stage('测试报告'){
            steps {
                echo '生成测试报告'
        //         allure includeProperties: false, jdk: '',results: [[path: 'report/temp']]
                allure commandline: 'allure_win', jdk: 'java_win', results: [[path: 'report/temp']]
            }}
    }
    post {
        success {
            dingtalk (
                robot: "111",
                type:'MARKDOWN',
                atAll: false,
                title: "${env.JOB_NAME}",
                messageUrl: '${env.JOB_URL}',
                text: [
                    "### [${env.JOB_NAME}](${env.JOB_URL}) ",
                    '---',
                    "- 构建编号:${env.BUILD_NUMBER}",
                    "- 构建节点:${env.NODE_NAME}",
                    "- 构建结果:${currentBuild.result}",
                    "- 持续时间:${currentBuild.durationString}".split('and counting')[0],
                    "- 执行人:${currentBuild.buildCauses.shortDescription}",
                    "- 日志:${env.BUILD_URL}console",
                    "- 测试报告:${env.BUILD_URL}allure"
                ]
           )
        }
        failure {
            dingtalk (
                robot: "111",
                type:'MARKDOWN',
                atAll: false,
                title: "${env.JOB_NAME}",
                messageUrl: '${env.JOB_URL}',
                text: [
                    "### [${env.JOB_NAME}](${env.JOB_URL}) ",
                    '---',
                    "- 构建编号:${env.BUILD_NUMBER}",
                    "- 构建节点:${env.NODE_NAME}",
                    "- 构建结果:${currentBuild.result}",
                    "- 持续时间:${currentBuild.durationString}".split('and counting')[0],
                    "- 执行人:${currentBuild.buildCauses.shortDescription}",
                    "- 日志:${env.BUILD_URL}console",

                ]
           )
        }
        unstable {
            dingtalk (
                robot: "111",
                type:'MARKDOWN',
                atAll: false,
                title: "${env.JOB_NAME}",
                messageUrl: '${env.JOB_URL}',
                text: [
                    "### [${env.JOB_NAME}](${env.JOB_URL}) ",
                    '---',
                    "- 构建编号:${env.BUILD_NUMBER}",
                    "- 构建节点:${env.NODE_NAME}",
                    "- 构建结果:${currentBuild.result}",
                    "- 持续时间:${currentBuild.durationString}".split('and counting')[0],
                    "- 执行人:${currentBuild.buildCauses.shortDescription}",
                    "- 日志:${env.BUILD_URL}console",
                    "- 测试报告:${env.BUILD_URL}allure"

                ]
           )
        }
    }

}

---其中robot和执行的脚本需根据自己实际情况修改

jenkins配置钉钉通知实现步骤:

钉钉端:

1.选择自定义机器人

linux系统下docker中部署python+jenkins+gitlab+pytest+allure实现自动化测试问题汇总_第8张图片

 2.创建机器人设置,其中关键词和加签要与jenkins中关键字和加密一致

linux系统下docker中部署python+jenkins+gitlab+pytest+allure实现自动化测试问题汇总_第9张图片

 3.点击完成会生产webhook地址,复制到jenkins中钉钉配置项webhook地址中

linux系统下docker中部署python+jenkins+gitlab+pytest+allure实现自动化测试问题汇总_第10张图片

 jenkins端:

1.jenkins安装钉钉插件(dingtalk)

2.配置钉钉机器人,其中id随便填写,唯一就行(关键字、加密和webhook从钉钉中复制)

 

linux系统下docker中部署python+jenkins+gitlab+pytest+allure实现自动化测试问题汇总_第11张图片

 3.测试一下,一切正常钉钉会收到通知

linux系统下docker中部署python+jenkins+gitlab+pytest+allure实现自动化测试问题汇总_第12张图片

 

你可能感兴趣的:(jenkins,自动化)