修改挂载方式

This commit is contained in:
jiaojm
2025-11-25 17:47:49 +08:00
repo.diff.parent c3b8d4612b
repo.diff.commit 2795a67741

repo.diff.view_file

@@ -66,48 +66,42 @@ echo ""
echo "===== [3/3] 启动容器并运行测试... =====" echo "===== [3/3] 启动容器并运行测试... ====="
set +e set +e
docker run --rm --init --ipc=host \ docker run -d --rm --init --ipc=host \
--name e2e-test-runner-container \ --name e2e-test-runner-container \
\
`# 网络模式host` \
--network host \ --network host \
\ -u "root" \
`# 用户权限映射` \
-u "$CURRENT_UID:$CURRENT_GID" \
\
`# 环境变量注入` \
-e DEVSTAR_URL="$DEVSTAR_URL" \ -e DEVSTAR_URL="$DEVSTAR_URL" \
-e E2E_SKIP_INSTALL="$E2E_SKIP_INSTALL" \ -e E2E_SKIP_INSTALL="$E2E_SKIP_INSTALL" \
-e E2E_USERNAME="$E2E_USERNAME" \ -e E2E_USERNAME="$E2E_USERNAME" \
-e E2E_PASSWORD="$E2E_PASSWORD" \ -e E2E_PASSWORD="$E2E_PASSWORD" \
-e E2E_MODE="$E2E_MODE" \ -e E2E_MODE="$E2E_MODE" \
-e CI="$CI" \ -e CI="$CI" \
\
`# 挂载 Volume ` \
-v /var/run/docker.sock:/var/run/docker.sock \
-v "$(pwd)/tests/e2e/reports":/app/playwright-report \
-v "$(pwd)/tests/e2e/package.json":/app/package.json \
-v "$(pwd)/playwright.config.ts":/app/playwright.config.ts \
-v "$(pwd)/tests/e2e/global-setup.ts":/app/global-setup.ts \
-v "$(pwd)/tests/e2e/specs":/app/specs \
-v "$(pwd)/tests/e2e/node_modules":/app/node_modules \
-v "$(pwd)/tests/e2e/package-lock.json":/app/package-lock.json \
\
-w /app \
\
`# 临时 npm 缓存目录,防止权限问题` \
-e npm_config_cache=/tmp/npm-cache \ -e npm_config_cache=/tmp/npm-cache \
-e HOME=/tmp \ -e HOME=/tmp \
\ -w /app \
`# 镜像名` \ -v /var/run/docker.sock:/var/run/docker.sock \
mcr.microsoft.com/playwright:v1.53.2-jammy \ mcr.microsoft.com/playwright:v1.53.2-jammy \
`# 运行命令` \ tail -f /dev/null
bash -c "echo '正在安装依赖...' && npm install --no-package-lock&& echo '依赖安装完成,开始测试...' && npx playwright test" echo "容器已启动,正在使用 docker cp 注入代码..."
docker cp "$(pwd)/tests/e2e/package.json" e2e-test-runner-container:/app/package.json
docker cp "$(pwd)/playwright.config.ts" e2e-test-runner-container:/app/playwright.config.ts
docker cp "$(pwd)/tests/e2e/global-setup.ts" e2e-test-runner-container:/app/global-setup.ts
docker cp "$(pwd)/tests/e2e/specs" e2e-test-runner-container:/app/specs
docker exec e2e-test-runner-container bash -c "
# 确保 node_modules 目录存在
mkdir -p /app/node_modules
echo '正在安装依赖...'
npm install --no-package-lock
echo '依赖安装完成,开始测试...'
npx playwright test
"
# 捕获 test-runner 的退出码 # 捕获 test-runner 的退出码
EXIT_CODE=$? EXIT_CODE=$?
set -e set -e
docker cp e2e-test-runner-container:/app/playwright-report/. "$(pwd)/tests/e2e/reports/"
docker rm -f e2e-test-runner-container
echo "========================================" echo "========================================"
if [ $EXIT_CODE -eq 0 ]; then if [ $EXIT_CODE -eq 0 ]; then
echo "测试执行成功!" echo "测试执行成功!"