fix(worker): ffmpeg下载脚本改为纯sh兼容,修复dash数组语法错误
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 40s
AI Code Review / AI Code Review (pull_request) Successful in 2m10s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m23s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 3m24s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 20s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 1363h11m2s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 1363h11m38s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 1363h11m38s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 1363h11m40s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 1363h11m40s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 1363h11m42s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 1363h11m42s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 1363h11m44s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 1363h11m44s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 1363h11m44s
CI/CD Pipeline / Check if frontend-only change (pull_request) Has been skipped
CI/CD Pipeline / Validate Code Quality And Tests (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 / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1363h43m54s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 1363h43m54s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 1363h43m52s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 40s
AI Code Review / AI Code Review (pull_request) Successful in 2m10s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m23s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 3m24s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 20s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 1363h11m2s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 1363h11m38s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 1363h11m38s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 1363h11m40s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 1363h11m40s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 1363h11m42s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 1363h11m42s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 1363h11m44s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 1363h11m44s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 1363h11m44s
CI/CD Pipeline / Check if frontend-only change (pull_request) Has been skipped
CI/CD Pipeline / Validate Code Quality And Tests (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 / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1363h43m54s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 1363h43m54s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 1363h43m52s
问题:#686引入了bash数组语法 FFMPEG_SOURCES=(...),但worker基础镜像
的/bin/sh是dash,不支持数组,导致Worker Build报
Syntax error: "(" unexpected
修复:
- 移除数组,改用 for src in "url1" "url2" "url3"; do 的纯sh写法
- 所有语法保持POSIX sh兼容,确保dash下能正常运行
- 保留所有原有功能:三源重试、tar校验、坏包清缓存、二进制校验
This commit is contained in:
@@ -26,18 +26,17 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# ---- 下载静态编译 ffmpeg(带缓存+完整性校验+多源重试)----
|
||||
# 问题背景:johnvansickle.com 偶尔返回损坏文件,缓存命中坏包后反复失败
|
||||
# 注意:必须用纯sh语法(dash兼容),不能用bash数组、[[ ]]等特性
|
||||
# 修复策略:1.三源下载 2.tar完整性校验 3.损坏删缓存重试 4.二进制可执行校验
|
||||
RUN --mount=type=cache,target=/tmp/ffmpeg-cache,sharing=locked \
|
||||
cd /tmp \
|
||||
&& FFMPEG_FILE="/tmp/ffmpeg-cache/ffmpeg-release-amd64-static.tar.xz" \
|
||||
&& FFMPEG_SOURCES=( \
|
||||
&& download_ok=0 \
|
||||
&& for src in \
|
||||
"https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz" \
|
||||
"https://mirrors.tuna.tsinghua.edu.cn/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz" \
|
||||
"https://mirrors.ustc.edu.cn/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz" \
|
||||
) \
|
||||
&& download_ok=0 \
|
||||
&& for src in "${FFMPEG_SOURCES[@]}"; do \
|
||||
"https://mirrors.ustc.edu.cn/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz"; \
|
||||
do \
|
||||
if [ $download_ok -eq 0 ] && [ -f "$FFMPEG_FILE" ] && tar -tf "$FFMPEG_FILE" >/dev/null 2>&1; then \
|
||||
echo "[ffmpeg] cache valid, skip download"; \
|
||||
download_ok=1; \
|
||||
|
||||
Reference in New Issue
Block a user