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

无需额外插件:在Jenkins流水线用Docker镜像运行Vue项目Cypress测试

无需Cypress Jenkins插件,用Docker运行Cypress测试完全可行

直接使用Cypress官方提供的Docker镜像就能在Jenkins流水线中运行集成测试,不需要额外安装Jenkins插件。这种方式的优势在于环境一致性强,镜像里已经预装好Cypress、Node.js及所有依赖,不用在Jenkins节点上手动配置环境。

实现步骤及示例

1. 前提准备

确保你的Jenkins节点已经配置好Docker环境(能执行docker命令),并且项目代码里已经写好Cypress测试用例,package.json中有对应的测试脚本(比如"cypress:run": "cypress run")。

2. Jenkins流水线示例(Declarative Pipeline)

下面是一个完整的Jenkins流水线片段,包含构建、Jest单元测试、Cypress集成测试步骤:

pipeline {
    agent any

    stages {
        stage('拉取代码') {
            steps {
                git url: '你的项目仓库地址', branch: 'main'
            }
        }

        stage('安装依赖') {
            steps {
                sh 'npm install'
            }
        }

        stage('Jest单元测试') {
            steps {
                sh 'npm run test:unit'
            }
            post {
                always {
                    junit '**/junit.xml' // 可选:生成测试报告
                }
            }
        }

        stage('构建生产包') {
            steps {
                sh 'npm run build'
            }
        }

        stage('启动应用服务') {
            steps {
                // 后台启动构建后的应用,比如用serve工具,需提前安装:npm install -g serve
                sh 'serve -s dist -l 8080 &'
                // 等待服务启动完成
                sh 'sleep 10'
            }
        }

        stage('Cypress集成测试') {
            steps {
                script {
                    // 使用Cypress官方Docker镜像,挂载项目目录到容器内
                    sh '''
                        docker run -it --rm \
                        -v $PWD:/e2e \
                        -w /e2e \
                        cypress/included:13.6.0 \
                        npm run cypress:run
                    '''
                }
            }
            post {
                always {
                    // 收集Cypress测试报告和截图,方便排查失败原因
                    archiveArtifacts artifacts: 'cypress/screenshots/**, cypress/videos/**', allowEmptyArchive: true
                }
            }
        }
    }

    post {
        always {
            // 停止后台运行的应用服务
            sh 'pkill -f "serve -s dist"'
        }
    }
}

3. 关键说明

  • 镜像选择:cypress/included镜像包含了Cypress二进制文件,无需额外安装即可运行测试。你可以根据项目使用的Cypress版本选择对应标签的镜像(比如cypress/included:12.17.4)。
  • 目录挂载:通过-v $PWD:/e2e把当前Jenkins工作目录挂载到容器内的/e2e目录,-w /e2e设置容器工作目录,确保容器能访问项目中的Cypress配置和测试用例。
  • 服务依赖:Cypress测试需要应用服务处于运行状态,测试前要确保服务启动完成。这里用sleep 10简单等待,也可以用更可靠的健康检查脚本(比如curl轮询服务地址直到返回200)。
  • 报告收集:通过archiveArtifacts保存Cypress的截图和视频,方便后续排查测试失败问题。

4. 替代方案:使用Docker Compose(适配多服务依赖场景)

如果你的Vue应用依赖数据库、后端API等其他服务,可以用Docker Compose编排应用和测试环境:

在项目根目录创建docker-compose.test.yml:

version: '3'
services:
  app:
    build: .
    ports:
      - "8080:8080"
    command: serve -s dist -l 8080
  cypress:
    image: cypress/included:13.6.0
    depends_on:
      - app
    volumes:
      - ./:/e2e
    working_dir: /e2e
    environment:
      - CYPRESS_BASE_URL=http://app:8080

然后在Jenkins流水线的Cypress步骤中执行:

sh 'docker-compose -f docker-compose.test.yml up --exit-code-from cypress'

这种方式会自动等待应用服务启动完成后再运行Cypress测试,测试结束后自动停止所有服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:39:18