You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求可生成测试报告的Jenkins Pipeline脚本:Docker运行SeleniumBase测试

Jenkins Pipeline 执行SeleniumBase测试并生成报告(Docker环境)

针对本地Docker可运行但Jenkins Pipeline失败的问题,以下提供两种可生成测试报告的Pipeline脚本方案,分别适配官方镜像和自定义镜像场景:


方案1:使用SeleniumBase官方DockerHub镜像

无需自行构建镜像,直接使用官方预构建环境,快速验证测试流程:

pipeline {
    agent any
    stages {
        stage('拉取测试代码') {
            steps {
                git url: 'https://gitlab.com/username/repo.git', branch: 'main'
            }
        }
        stage('Docker容器执行测试') {
            steps {
                script {
                    // 拉取官方最新版SeleniumBase镜像
                    def sbaseImage = docker.image('seleniumbase/seleniumbase:latest')
                    
                    // 映射Jenkins工作区到容器,分配共享内存避免Chrome无头模式崩溃
                    sbaseImage.inside("-v ${env.WORKSPACE}:/test --shm-size=2g") {
                        // 切换到测试代码目录(根据项目结构调整路径)
                        sh 'cd /test'
                        // 执行测试命令,报告直接生成到Jenkins工作区的reports目录
                        sh '''pytest \
                            --var1=your_username \
                            --var2=your_password \
                            --dashboard \
                            --html=/test/reports/report.html \
                            --browser=chrome \
                            --headless \
                            --no-header'''
                    }
                }
            }
        }
        stage('归档测试报告') {
            steps {
                // 将报告归档到Jenkins,构建完成后可直接查看
                archiveArtifacts artifacts: 'reports/**/*', fingerprint: true
            }
        }
    }
    post {
        always {
            // 清理残留的容器(避免占用资源)
            sh 'docker rm -f $(docker ps -aq --filter "ancestor=seleniumbase/seleniumbase") 2>/dev/null || true'
        }
    }
}

关键说明

  • --shm-size=2g:Chrome无头模式需要足够共享内存,防止进程崩溃
  • 目录映射${env.WORKSPACE}:/test:让容器访问测试代码,同时将测试报告同步回Jenkins工作区
  • 报告路径/test/reports/report.html:对应Jenkins工作区下的reports目录,确保归档有效

方案2:自定义构建SeleniumBase镜像

如果需要添加自定义依赖或修改镜像配置,可基于官方Dockerfile构建私有镜像:

pipeline {
    agent any
    stages {
        stage('拉取测试代码') {
            steps {
                git url: 'https://gitlab.com/username/repo.git', branch: 'main'
            }
        }
        stage('构建自定义镜像') {
            steps {
                script {
                    // 基于项目根目录的Dockerfile构建镜像(需提前将官方Dockerfile复制到项目根目录并修改)
                    def customSbaseImage = docker.build('my-seleniumbase:latest', '.')
                    // 可选:推送镜像到私有仓库供后续复用
                    // customSbaseImage.push()
                }
            }
        }
        stage('自定义镜像执行测试') {
            steps {
                script {
                    def customSbaseImage = docker.image('my-seleniumbase:latest')
                    customSbaseImage.inside("-v ${env.WORKSPACE}:/test --shm-size=2g") {
                        sh 'cd /test'
                        sh '''pytest \
                            --var1=your_username \
                            --var2=your_password \
                            --dashboard \
                            --html=/test/reports/report.html \
                            --browser=chrome \
                            --headless'''
                    }
                }
            }
        }
        stage('归档测试报告') {
            steps {
                archiveArtifacts artifacts: 'reports/**/*', fingerprint: true
            }
        }
    }
    post {
        always {
            // 清理自定义镜像相关的残留容器
            sh 'docker rm -f $(docker ps -aq --filter "ancestor=my-seleniumbase") 2>/dev/null || true'
            // 可选:清理构建的镜像(不需要长期保留时启用)
            // sh 'docker rmi -f my-seleniumbase:latest 2>/dev/null || true'
        }
    }
}

关键说明

  • 需在项目根目录放置自定义Dockerfile(可从官方仓库复制后修改)
  • 构建镜像时指定上下文为.(项目根目录),确保Dockerfile能被读取

原脚本问题修正点

  1. 缺失目录映射:原脚本未将Jenkins工作区映射到容器,导致容器无法访问测试代码,报告也无法同步回Jenkins
  2. 命令语法错误:testCommand2中存在多余单引号(--var1=username'),且未正确拼接测试命令
  3. 容器执行冗余:container.run后嵌套inside的方式多余,直接使用image.inside()更简洁且参数传递更可靠
  4. 报告路径无效:原报告路径指向容器内部固定目录,未关联Jenkins工作区,导致构建后无法获取报告
  5. 平台兼容性:bat仅适用于Windows节点,Linux节点需替换为sh

内容的提问来源于stack exchange,提问作者mastafadhil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 21:43:17