fix: CI failures — QR test timeout and Python dependency CVEs

- Increase QR generate max-size test timeout to 120s (10000x10000
  PNG generation exceeds 30s default on CI runners)
- Update Pillow 11.1.0 → >=12.2.0 (CVE-2026-25990, CVE-2026-40192)
- Update rembg 2.0.62 → >=2.0.75 (CVE-2026-40086)
- Update opencv-python-headless to flexible range >=4.10,<4.12
- Ignore CVE-2024-27763 in pip-audit (basicsr transitive dep from
  realesrgan, no fix available upstream)
- Align requirements-gpu.txt and Dockerfile with same versions
This commit is contained in:
SnapOtter
2026-04-27 01:19:25 +08:00
parent b2a1769c8f
commit b926e5d1be
5 changed files with 10 additions and 10 deletions
+1 -1
View File
@@ -87,7 +87,7 @@ jobs:
python-version: "3.11" python-version: "3.11"
- run: pip install pip-audit - run: pip install pip-audit
- run: pip-audit -r packages/ai/python/requirements.txt - run: pip-audit -r packages/ai/python/requirements.txt --ignore-vuln CVE-2024-27763
build: build:
name: Build name: Build
+2 -2
View File
@@ -185,9 +185,9 @@ RUN --mount=type=cache,target=/root/.cache/pip \
python3 -m venv /opt/venv && \ python3 -m venv /opt/venv && \
/opt/venv/bin/pip install --upgrade pip && \ /opt/venv/bin/pip install --upgrade pip && \
/opt/venv/bin/pip install \ /opt/venv/bin/pip install \
Pillow==11.1.0 \ "Pillow>=12.2.0,<13.0.0" \
numpy==1.26.4 \ numpy==1.26.4 \
opencv-python-headless==4.10.0.84 "opencv-python-headless>=4.10.0,<4.12.0"
# On-demand AI feature installer and manifest # On-demand AI feature installer and manifest
COPY docker/feature-manifest.json /app/docker/feature-manifest.json COPY docker/feature-manifest.json /app/docker/feature-manifest.json
+3 -3
View File
@@ -1,10 +1,10 @@
rembg==2.0.62 rembg>=2.0.75,<2.1.0
realesrgan==0.3.0 realesrgan==0.3.0
paddleocr==2.9.1 paddleocr==2.9.1
paddlepaddle-gpu==3.0.0 paddlepaddle-gpu==3.0.0
mediapipe==0.10.21 mediapipe==0.10.21
onnxruntime-gpu==1.20.1 onnxruntime-gpu==1.20.1
numpy==1.26.4 numpy==1.26.4
Pillow==11.1.0 Pillow>=12.2.0,<13.0.0
opencv-python-headless==4.10.0.84 opencv-python-headless>=4.10.0,<4.12.0
codeformer-pip==0.0.4 codeformer-pip==0.0.4
+3 -3
View File
@@ -1,10 +1,10 @@
rembg[cpu]==2.0.62 rembg[cpu]>=2.0.75,<2.1.0
realesrgan==0.3.0 realesrgan==0.3.0
paddleocr[doc-parser]>=3.4.0,<3.5.0 paddleocr[doc-parser]>=3.4.0,<3.5.0
paddlepaddle>=3.0.0,<3.1.0 paddlepaddle>=3.0.0,<3.1.0
mediapipe==0.10.21 mediapipe==0.10.21
onnxruntime==1.20.1 onnxruntime==1.20.1
numpy==1.26.4 numpy==1.26.4
Pillow==11.1.0 Pillow>=12.2.0,<13.0.0
opencv-python-headless==4.10.0.84 opencv-python-headless>=4.10.0,<4.12.0
codeformer-pip==0.0.4 codeformer-pip==0.0.4
+1 -1
View File
@@ -460,7 +460,7 @@ describe("QR Generate", () => {
expect(res.statusCode).toBe(200); expect(res.statusCode).toBe(200);
const result = JSON.parse(res.body); const result = JSON.parse(res.body);
expect(result.processedSize).toBeGreaterThan(0); expect(result.processedSize).toBeGreaterThan(0);
}); }, 120_000);
it("generates QR with transparent background (3-char hex)", async () => { it("generates QR with transparent background (3-char hex)", async () => {
const res = await app.inject({ const res = await app.inject({