【工程实战】第九篇:持续集成 —— Jenkins 与 GitLab CI:构建无人值守的自动化流水线

专栏进度:09 / 10 (自动化实战专题)

持续集成(Continuous Integration, CI) 的核心目标是:尽早发现集成错误。我们将实现"代码提交 -> 自动触发 -> 并行执行 -> 报告发布 -> 钉钉/邮件通知"的全闭环。

一、 核心流程:自动化脚本的 CI 旅程

在工业界,典型的测试流水线由以下四个阶段(Stages)组成:

Checkout (检出):从 Git 仓库拉取最新的自动化测试代码。

Environment (环境):拉取 Docker 镜像或激活虚拟环境,安装 requirements.txt 中的依赖。

Execution (执行):调用 Pytest 运行测试(通常配合分布式插件 xdist 加速)。

Publish (发布):解析 Allure 结果并推送到看板,发送通知。

二、 实战 1:Jenkins 自由风格任务配置

在 Jenkins 界面中,我们需要完成以下关键配置:

构建触发器:勾选 Poll SCM(定时检查代码更新)或配置 Webhook(代码推送即触发)。

构建步骤 (Execute Shell):

Bash

bash 复制代码
# 激活环境
source venv/bin/activate
# 运行测试并指定 Allure 结果路径
pytest --alluredir=${WORKSPACE}/allure-results
构建后操作:添加 Allure Report 插件,设置 Results Path 为 allure-results。

三、 实战 2:GitLab CI 声明式管道 (.gitlab-ci.yml)

如果你使用 GitLab,只需在项目根目录写一个 YAML 文件,系统就会自动调度。

YAML

yaml 复制代码
stages:
  - test
  - report

run_tests:
  stage: test
  image: python:3.9
  script:
    - pip install -r requirements.txt
    - pytest --alluredir=./allure-results
  artifacts:
    paths:
      - allure-results/
    expire_in: 1 week

generate_report:
  stage: report
  script:
    - allure generate ./allure-results -o ./allure-report --clean
  when: always

四、 关键环节:即时通知(钉钉/企业微信)

测试跑完后,必须第一时间"轰炸"负责人。

Python

python 复制代码
# common/notice_util.py
import requests

def send_dingtalk(msg, webhook_url):
    data = {
        "msgtype": "text",
        "text": {"content": f"【自动化测试告警】\n{msg}"}
    }
    requests.post(webhook_url, json=data)

提示:在 conftest.py 的 pytest_sessionfinish 钩子中调用此方法,即可实现测试结束自动发消息。

五、 避坑指南:CI 环境中的"幽灵问题"

Headless 模式:CI 服务器通常没有显示器。执行 UI 测试时,Playwright 必须开启 headless=True,或者使用 Docker 版的 Playwright(内置了 Xvfb 虚拟显示器)。

并发导致的冲突:如果在 CI 上开启并行执行(-n auto),多个线程可能会同时操作数据库同一个账号。对策:使用账号池管理,或者每个线程使用独立的测试环境。

权限地雷:Jenkins 执行脚本时常因为没有写文件夹权限而报错。对策:确保 Jenkins 账号拥有工作空间的 chown 权限。

相关推荐
野木香2 小时前
linux安装常用服务(不含jenkins)
linux·运维·jenkins
Mark108591 天前
Hexo + GitHub Pages + GitHub Actions:源码私有、站点公开的 CI/CD 教程
ci/cd·github
冬奇Lab2 天前
AI Native 时代的 CI/CD:从“手工流水线”到“智能驾驶舱”的范式演进
人工智能·ci/cd
没有口袋啦2 天前
《基于 GitOps 理念的企业级自动化 CI/CD 流水线》
阿里云·ci/cd·云原生·自动化·k8s
前端不太难2 天前
鸿蒙游戏的 CI/CD 方案
游戏·ci/cd·harmonyos
XmasWu12253 天前
【Hermes Agent集成】与CI/CD工作流结合
人工智能·ci/cd
Dotrust东信创智3 天前
面向SDV的在环测试深度解析——持续集成篇
ci/cd
信创DevOps先锋3 天前
国产CI/CD工具深度评测:安全合规时代的DevSecOps新选择
安全·ci/cd