运行ci脚本的相关修改
This commit is contained in:
64
.gitea/workflows/devstar-studio-e2e.yaml
Normal file
64
.gitea/workflows/devstar-studio-e2e.yaml
Normal 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' 容器日志。"
|
||||
@@ -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"]
|
||||
|
||||
@@ -23,7 +23,8 @@ services:
|
||||
test-runner:
|
||||
# 从 'tests/' 目录下的 Dockerfile 构建
|
||||
build:
|
||||
context: .
|
||||
context: ../../
|
||||
dockerfile: tests/e2e/Dockerfile
|
||||
# 等待 devstar 的 "healthcheck" 通过后,才启动
|
||||
user: "${CURRENT_UID}:${CURRENT_GID}"
|
||||
environment:
|
||||
|
||||
@@ -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 \
|
||||
|
||||
Reference in New Issue
Block a user