运行ci脚本的相关修改

This commit is contained in:
jiaojm
2025-11-19 17:05:27 +08:00
repo.diff.parent cfffaa1960
repo.diff.commit c03be52914
repo.diff.stats_desc%!(EXTRA int=4, int=81, int=11)

repo.diff.view_file

@@ -0,0 +1,64 @@
name: DevStar E2E Debug Workflow
on:
workflow_dispatch:
jobs:
e2e-test-standalone:
runs-on: ubuntu-latest
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: Make Devstar
run : |
make devstar
- name: 2. Deploy DevStar Container
run: |
echo "===== 2. 正在启动容器... ====="
public/assets/install.sh start --image=devstar-studio:latest
- name: 2.5. Create Report Directory
run: |
echo "===== 2.5. 正在创建报告目录... ====="
mkdir -p tests/e2e/reports/
sudo chmod -R 777 tests/e2e/reports/
- name: 2.8. Wait for DevStar to be Ready
run: |
echo "===== 2.8. 正在等待 DevStar (Gitea) 启动... ====="
echo "强制等待 60 秒..."
sleep 40
echo "等待完成,假设 DevStar 已就绪。"
- name: 3. Run E2E Tests (and allow failure)
run: |
make e2e-test TARGET_URL="http://host.docker.internal:80" || true
env:
GITEA_I_AM_BEING_UNSAFE_RUNNING_AS_ROOT: "true"
- name: 3.5. Rescue Screenshot from Container
if: always()
run: |
CONTAINER_ID=$(docker ps -a --filter "name=test-runner" --format "{{.ID}}" | head -n 1)
if [ -z "$CONTAINER_ID" ]; then
echo "::warning:: 未找到 'test-runner' 容器。无法抢救截图。"
else
echo "正在从容器 $CONTAINER_ID 中复制..."
docker cp $CONTAINER_ID:/tmp/DEBUG-install-page.png ./tests/e2e/reports/DEBUG-install-page.png || echo "Docker CP 失败或截图文件不存在。"
echo "复制完成。"
fi
- name: 4. Upload E2E Test Report
if: always()
uses: actions/upload-artifact@v3
with:
name: e2e-test-report
path: tests/e2e/reports/
- name: 5. Display DevStar Container Logs
if: always()
run: |
echo "===== 5. 正在抓取 DevStar (Gitea) 容器日志... ====="
# 'devstar-studio' 是 install.sh 启动的容器的默认名称
docker logs Devstar-Studio || echo "::warning:: 未能获取 'devstar-studio' 容器日志。"

repo.diff.view_file

@@ -10,14 +10,15 @@ FROM mcr.microsoft.com/playwright:v1.53.2-jammy
WORKDIR /app
# 3. 复制 "依赖清单" 文件
COPY package*.json ./
COPY tests/e2e/package*.json ./
# 4. 安装npm 依赖 (即 @playwright/test)
RUN npm install
# 5. 复制所有的测试代码到容器中
# (包括 playwright.config.ts, global-setup.ts 和 specs/ 目录)
COPY . .
COPY tests/e2e/global-setup.ts ./tests/e2e/
COPY tests/e2e/specs/ ./tests/e2e/specs/
# 6. 默认命令
CMD ["npx", "playwright", "test"]

repo.diff.view_file

@@ -23,7 +23,8 @@ services:
test-runner:
# 从 'tests/' 目录下的 Dockerfile 构建
build:
context: .
context: ../../
dockerfile: tests/e2e/Dockerfile
# 等待 devstar 的 "healthcheck" 通过后,才启动
user: "${CURRENT_UID}:${CURRENT_GID}"
environment:

repo.diff.view_file

@@ -64,21 +64,25 @@ if [ -n "$TARGET_URL" ]; then
echo " 模式: [URL模式]. 目标: $TARGET_URL"
export DEVSTAR_URL=$TARGET_URL
export E2E_MODE="url"
echo " 正在检查安装状态..."
PATH_TO_CHECK="/user/login"
EXPECTED_CODE_IF_INSTALLED="200"
PROBE_URL="${TARGET_URL}${PATH_TO_CHECK}"
HTTP_CODE=$(curl -L -s -o /dev/null -w "%{http_code}" "$PROBE_URL")
if [ "$HTTP_CODE" -eq "$EXPECTED_CODE_IF_INSTALLED" ]; then
if [ -n "$CI" ] || [ "$CI" = "true" ]; then
echo " [CI环境] 检测到 CI 环境,跳过 curl 安装状态检查..."
export E2E_SKIP_INSTALL="false"
else
echo " 正在检查安装状态..."
PATH_TO_CHECK="/user/login"
EXPECTED_CODE_IF_INSTALLED="200"
PROBE_URL="${TARGET_URL}${PATH_TO_CHECK}"
HTTP_CODE=$(curl -L -s -o /dev/null -w "%{http_code}" "$PROBE_URL")
if [ "$HTTP_CODE" -eq "$EXPECTED_CODE_IF_INSTALLED" ]; then
echo " 探测结果: 目标已安装 (在 ${PROBE_URL} 收到 HTTP ${HTTP_CODE})."
export E2E_SKIP_INSTALL="true"
export E2E_USERNAME
export E2E_PASSWORD
export E2E_ADMIN_ID
else
else
echo "没有安装,下面执行安装脚本! "
export E2E_SKIP_INSTALL="false"
fi
fi
command docker compose \
-f tests/e2e/docker-compose.test.yml \