docker+playwright+python+Jenkins跑web自动化

# Docker部署Jenkins以及安装Playwright跑Web自动化的那些坑

在使用Docker部署Jenkins以及安装Playwright进行Web自动化测试的过程中,我遇到了不少问题。这里分享一下我的经验和解决方法,希望能帮助到同样在探索这条技术路线的朋友们。

## 一、云主机上部署Docker的坑

### 1.1 默认安装Docker的问题
在云主机上部署Docker时,我发现默认安装的Docker版本可能会带来各种问题。例如,我最初安装的Docker版本较旧,导致后续操作中出现了不少奇怪的错误。(tips:由于我是在云主机上部署了一个docker,在这一步的时候就遇到很多的坑,如下:

云主机版本:)

默认去 install 安装docker,安装的docker版本是:

然后遇到各种奇奇怪怪的问题,这里就不在赘述。安装最新的docker,假如你之前存在一些镜像容器,可以按照图下去备份:

### 1.2 升级Docker的建议
如果之前已经安装了Docker,可以按照以下步骤进行升级:
- **备份现有镜像和容器**:在升级之前,建议备份现有的镜像和容器,以防止数据丢失。
- **升级Docker**:可以直接在现有基础上升级Docker,无需卸载。升级后的Docker版本应为最新稳定版。

### 1.3 推荐的系统和联网环境
根据我的经验,CentOS 7维护的Docker版本较旧,建议在OpenEuler或BCLinux系统上部署Docker。联网环境也很重要,联网可以避免很多麻烦。如果需要最新Docker版本,可以访问以下链接:[Docker Packages for CentOS](https://download.docker.com/linux/centos/7/x86_64/stable/Packages/)

## 二、拉取和使用Playwright镜像

### 2.1 官方文档的坑
根据Playwright官方文档安装的镜像可能存在一些问题。我建议使用以下特定版本的Playwright镜像:mcr.microsoft.com/playwright/python:v1.57.0-noble

目前我是根据官方文档安装的playwright镜像,但这个版本存在一些问题,建议使用如下图圈出来的红色部分的镜像:


### 2.2 创建并启动Playwright容器
以下是创建并启动Playwright容器的命令:
```bash
docker run -it --rm \
  --pids-limit=-1 \
  --cpus=4 \
  --memory=4g \
  --env PIP_NO_CACHE_DIR=1 \
  --env PIP_DEFAULT_TIMEOUT=120 \
  -v /root/code:/root \
  mcr.microsoft.com/playwright/python:v1.57.0-noble \
  sh -c "pip install --no-cache-dir --progress-bar off --retries 5 --timeout 120 playwright==1.57.0 ddddocr loguru -i https://mirrors.aliyun.com/pypi/simple/&&/bin/bash"

(这段命令是创建这个容器的时候遇到各种坑,ai问出来的可以执行,如果需要测试你的python脚本,可以将你的代码放到指定目录(可能会遇到权限问题,具体问题具体分析问ai
),会打印如下图片(创建这个容器用途主要是用来测试这个容器是否可用,这个镜像是否存在问题):)

## 三、部署Jenkins

###3.1  拉取Jenkins镜像

第一次拉取Jenkins镜像时,我没有指定版本,导致出现很多问题。后来我重新拉取了长期支持版本:docker pull jenkins:lts

###3.2 创建并启动Jenkins容器

docker run -d \
  --name zjjenkins \
  -p 8001:8080 \
  -p 50001:50000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /usr/bin/docker:/usr/bin/docker \
  -v /home/jenkins:/var/jenkins_home \
  -v /etc/localtime:/etc/localtime:ro \
  jenkins/jenkins:lts

###3.3 权限问题的解决

# 以root用户进入容器
docker exec -u root -it zjjenkins bash

# 在容器内修改权限
chmod 755 /usr/bin/docker

# 退出容器
exit

## 四、Jenkins流水线配置

###4.1 创建流水线任务

在Jenkins中创建流水线任务,命名为test

###4.2 配置流水线脚本

pipeline {
   agent { 
      docker { 
         image 'mcr.microsoft.com/playwright/python:v1.57.0-noble'
         args '-v ${WORKSPACE}:/workspace -w /workspace --user root'
      } 
   }

   stages {
      stage('e2e-tests') {
         steps {
            sh '''
               # 安装依赖
               pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

               # 修正包名(原文有拼写错误)
               pip uninstall -y pytest-playwright || true

               # 安装allure-pytest
               pip install allure-pytest -i https://pypi.tuna.tsinghua.edu.cn/simple/

               # 关键修改:使用 python -m pytest 而不是 pytest
               python -m pytest testcases/ -v -s
            '''
         }
      }
   }
}

###4.3 测试失败的处理

如果测试用例中有断言失败的情况,Pipeline任务会失败。如果希望测试失败时Pipeline不失败,可以使用pytest--tb=no-x选项。

## 五、生成测试报告

最后一步是在Jenkins中生成测试报告,具体操作可以根据项目的需要进行配置。

Read more

Ubuntu 24.04 安装 Docker

Ubuntu 24.04 安装 Docker

一、环境说明 * 虚拟机:VMware Workstation Pro 17 * 系统:Ubuntu 24.04.2 服务器版 * SSH:FinalShell 4.5.12 当前系统状态为刚完成安装,进行一些基础配置。 当前登录用户为普通用户,因此所有命令都需要添加 sudo 命令来临时获得 root 权限。至于需要输入密码的问题,通过修改 /etc/sudoers 来解决。 因为当前使用的是 VMware,考虑到安装过程可能出现意外,建议对当前系统环境拍摄快照,以便后期恢复。 拍摄快照:VMware 选中当前计算机 - 右键选中「快照」 - 「拍摄快照」。 官方安装文档:在 Ubuntu 上安装 Docker Engine

By Ne0inhk

Flutter 三方库 web_ffi 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、透明、全场景的 Web 浏览器 FFI(外部函数接口)与 WebAssembly 跨平台调用引擎

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 web_ffi 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、透明、全场景的 Web 浏览器 FFI(外部函数接口)与 WebAssembly 跨平台调用引擎 在鸿蒙(OpenHarmony)系统的 Web 浏览器环境(Webview/Ohos Browser)开发高性能 Web 应用时,如何调用现有的 C/C++ 算法库(Wasm 格式)且能保持与原生 HAP 环境下的 dart:ffi 接口完全一致?web_ffi 为开发者提供了一套工业级的、基于 JS 绑定的

By Ne0inhk
Flutter 组件 ignorium 的适配 鸿蒙Harmony 实战 - 驾驭代码生成忽略审计、实现鸿蒙端构建产物精准管理与资源泄露防护方案

Flutter 组件 ignorium 的适配 鸿蒙Harmony 实战 - 驾驭代码生成忽略审计、实现鸿蒙端构建产物精准管理与资源泄露防护方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 ignorium 的适配 鸿蒙Harmony 实战 - 驾驭代码生成忽略审计、实现鸿蒙端构建产物精准管理与资源泄露防护方案 前言 在鸿蒙(OpenHarmony)生态的超大规模工程开发中,代码生成(Code Generation)技术(如 build_runner)是提效的利器,但同时也带来了一个令人头疼的并发症:构建产物的急剧膨胀。面对动辄数千个生成的 .g.dart、.fb.dart 以及各种缓存占位文件。如果缺乏一套严密的忽略审计机制,不仅会导致 IDE 索引变慢、IDE 搜索结果被垃圾信息淹没,更严重的是,某些带有敏感信息的生成代码可能会被误提交到仓库中。 我们需要一种“逻辑可控”的构建过滤器。 ignorium 是一套专为代码生成与静态分析设计的忽略路径审计引擎。它允许你通过定义严密的模式规则。精确控制哪些生成文件应该被存留,哪些应该在构建后立即从宿主机环境抹除。

By Ne0inhk
Flutter for OpenHarmony:Flutter 三方库 gql_http_link — 开启鸿蒙端的 GraphQL 高效请求链路(适配鸿蒙 HarmonyOS Next ohos)

Flutter for OpenHarmony:Flutter 三方库 gql_http_link — 开启鸿蒙端的 GraphQL 高效请求链路(适配鸿蒙 HarmonyOS Next ohos)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net。 Flutter for OpenHarmony:Flutter 三方库 gql_http_link — 开启鸿蒙端的 GraphQL 高效请求链路(适配鸿蒙 HarmonyOS Next ohos) 前言 在现代前端开发中,相比于传统的 RESTful API,GraphQL 以其精准的数据获取能力(Query exactly what you need)极大地提升了前后端数据交互的效率。尤其是在需要频繁对接复杂后端、减少网络负载的鸿蒙跨平台应用中,GraphQL 更是不可或缺。 在 Flutter for OpenHarmony 开发中,构建一条稳定、高效的请求链路是成功的基石。gql_http_link 库作为 gql 生态的核心组件,

By Ne0inhk