ea51a8af26
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (push) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (push) Successful in 2s
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 3s
CI/CD Pipeline / Check push changed paths (push) Successful in 3s
CI/CD Pipeline / Frontend Lint (push) Has been skipped
CI/CD Pipeline / PR Build API Image (push) Has been skipped
CI/CD Pipeline / PR Build Web Image (push) Has been skipped
CI/CD Pipeline / Validate - Style (pull_request) Has been skipped
CI/CD Pipeline / Validate - Security (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (push) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 3m5s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 4m59s
CI/CD Pipeline / Build Staging Web Image (push) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 3s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 5m36s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (push) Successful in 2m35s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 1m53s
CI/CD Pipeline / Validate - Python (mypy + alembic) (push) Successful in 7m34s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 7m54s
CI/CD Pipeline / Validate - Style (push) Successful in 7m56s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 9m17s
CI/CD Pipeline / Retag skipped Staging API Image (push) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (push) Has been skipped
CI/CD Pipeline / Validate - Security (push) Successful in 10m53s
AI Code Review / AI Code Review (pull_request) Failing after 11m0s
CI/CD Pipeline / Integration Tests (push) Successful in 11m10s
CI/CD Pipeline / Retag skipped Staging Web Image (push) Successful in 3m25s
CI/CD Pipeline / Unit Tests (push) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (push) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (push) Has been cancelled
CI/CD Pipeline / Build Production API Image (push) Has been cancelled
CI/CD Pipeline / Build Production Web Image (push) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (push) Has been cancelled
CI/CD Pipeline / Deploy Production (push) Has been cancelled
CI/CD Pipeline / Production Browser E2E (push) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (push) Has been cancelled
CI/CD Pipeline / Canary Release to Production (push) Has been cancelled
CI/CD Pipeline / CI Gate (push) Has been cancelled
unit-tests job 跑在全新容器里,ci-base 镜像未预装 ffmpeg, step_install_ffmpeg.sh 每次都 apt-get update + install ffmpeg, ffmpeg 拉取 x264/aom/systemd 等数百个编解码依赖,固定耗时约 24 分钟, pytest 本身 21-23 分钟,导致该 job 每次 45-50 分钟。 把 ffmpeg 预装到 ci-base 镜像后,step_install_ffmpeg.sh 检测到 ffmpeg 已存在会立即退出(exit 0),unit-tests 直接省掉 ~24 分钟。 注:ci-base 镜像需重建并推送 registry 后生效。
57 lines
2.2 KiB
Docker
57 lines
2.2 KiB
Docker
FROM git.xiaoxiajianji.com/xiaoxia/base/python:3.12-slim
|
|
|
|
ENV PIP_DISABLE_PIP_VERSION_CHECK=1 \
|
|
PIP_NO_CACHE_DIR=0 \
|
|
PIP_INDEX_URL=https://mirrors.aliyun.com/pypi/simple/ \
|
|
PIP_TRUSTED_HOST=mirrors.aliyun.com \
|
|
VIRTUAL_ENV=/opt/xiaoxia-ci-venv \
|
|
PATH=/opt/xiaoxia-ci-venv/bin:$PATH
|
|
|
|
WORKDIR /workspace
|
|
|
|
# Change Debian mirrors to Aliyun for faster download
|
|
RUN sed -i 's|deb.debian.org|mirrors.aliyun.com|g' /etc/apt/sources.list.d/debian.sources 2>/dev/null || true
|
|
|
|
# System deps + Docker CLI
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
curl \
|
|
git \
|
|
libpq-dev \
|
|
nodejs \
|
|
npm \
|
|
ca-certificates \
|
|
gnupg \
|
|
&& install -m 0755 -d /etc/apt/keyrings \
|
|
&& curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg -o /etc/apt/keyrings/docker.asc \
|
|
&& chmod a+r /etc/apt/keyrings/docker.asc \
|
|
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.aliyun.com/docker-ce/linux/debian $(. /etc/os-release && echo $VERSION_CODENAME) stable" > /etc/apt/sources.list.d/docker.list \
|
|
&& apt-get update \
|
|
&& apt-get install -y --no-install-recommends docker-ce-cli docker-buildx-plugin \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Pre-bake ffmpeg: unit-tests run in fresh containers each time; installing ffmpeg
|
|
# on every job cost ~24 min (apt update + hundreds of codec deps). Bake it into the
|
|
# image so step_install_ffmpeg.sh detects it and exits instantly.
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends ffmpeg \
|
|
&& ffmpeg -version | head -1 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Pre-install base deps (layer cache)
|
|
COPY requirements-base.txt ./
|
|
RUN python -m venv "$VIRTUAL_ENV" \
|
|
&& python -m pip install --retries 10 --timeout 120 -r requirements-base.txt
|
|
|
|
# Install dev/CI deps
|
|
COPY requirements-dev.txt ./
|
|
RUN python -m pip install --retries 10 --timeout 120 -r requirements-dev.txt \
|
|
&& python -m black --version \
|
|
&& python -m isort --version-number \
|
|
&& ruff --version \
|
|
&& bandit --version \
|
|
&& pytest --version
|
|
|
|
# Verify npm and docker work
|
|
RUN npm --version && docker --version
|