解决冲突,删除不必要的代码

This commit is contained in:
jiaojm
2025-11-20 18:25:32 +08:00
repo.diff.parent 74b0fb4912
repo.diff.commit 166113b07d
repo.diff.stats_desc%!(EXTRA int=8, int=11, int=138)

repo.diff.view_file

@@ -12,29 +12,21 @@ jobs:
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: make devstar
- name: 1.0 make devstar
run: |
make devstar
- name: 1.5 Clean Up Old Data & Containers
run: |
echo "正在清理旧环境..."
public/assets/install.sh clean
docker volume rm devstar_data_vol || true
- name: 2. Deploy DevStar Container
run: |
echo "===== 2. 正在启动容器... ====="
# 说明install.sh 默认使用宿主机路径 (~/devstar_data) 挂载。
# 在 CI 环境中,可能会导致严重的权限问题 ,比如之前写入文件失败导致容器一直重启。
# 解决方案:动态修改脚本副本,强制将其替换为 Docker 命名卷 。
# 这种修改仅在本次 CI 运行中生效,不会影响源码仓库。
sed -i 's|~/devstar_data|devstar_data_vol|g' public/assets/install.sh
public/assets/install.sh start --image=devstar-studio:latest
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/
@@ -47,7 +39,6 @@ jobs:
DEVSTAR_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $CONTAINER_NAME)
echo "Found DevStar Internal IP: $DEVSTAR_IP"
sleep 30
- name: 3. Run E2E Tests
run: |

repo.diff.view_file

@@ -944,13 +944,6 @@ docker:
docker build --disable-content-trust=false -t $(DOCKER_REF) .
# support also build args docker build --build-arg GITEA_VERSION=v1.2.3 --build-arg TAGS="bindata sqlite sqlite_unlock_notify"
ifeq ($(TARGET_URL),)
E2E_DEPS = devstar
else
E2E_DEPS =
endif
.PHONY: e2e-test
e2e-test: $(E2E_DEPS)
@echo "正在启动E2E-TEST..."

repo.diff.view_file

@@ -17,7 +17,7 @@ COPY playwright.config.ts ./
RUN npm install
# 5. 复制所有的测试代码到容器中
# (包括 playwright.config.ts, global-setup.ts 和 specs/ 目录)
# (包括 global-setup.ts 和 specs/ 目录)
COPY tests/e2e/global-setup.ts ./
COPY tests/e2e/specs/ ./specs/

repo.diff.view_file

@@ -1,5 +0,0 @@
services:
test-runner:
depends_on:
devstar:
condition: service_healthy

repo.diff.view_file

@@ -1,25 +1,7 @@
version: '3.8'
services:
# 服务: DevStar
devstar:
#现在make devstar负责构建镜像
image: devstar-studio:latest
pull_policy: never
ports:
- "80:3000"
- "2222:2222"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./test-data/devstar_data:/var/lib/gitea
- ./test-data/devstar_data:/etc/gitea
# 健康检查。test-runner 会等待这个检查通过
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:3000/ || exit 1"]
interval: 10s
timeout: 5s
retries: 30
# 服务二: Playwright
services:
# 服务: Playwright
test-runner:
# 从 'tests/' 目录下的 Dockerfile 构建
build:
@@ -27,7 +9,7 @@ services:
dockerfile: tests/e2e/Dockerfile
# 等待 devstar 的 "healthcheck" 通过后,才启动
user: "${CURRENT_UID}:${CURRENT_GID}"
network_mode: "${E2E_NETWORK_MODE:-bridge}"
network_mode: "host"
environment:
- DEVSTAR_URL=${DEVSTAR_URL}
- E2E_SKIP_INSTALL=${E2E_SKIP_INSTALL}

repo.diff.view_file

@@ -39,34 +39,8 @@ async function globalSetup(config: FullConfig) {
await page.screenshot({ path: 'playwright-report/global-setup-login-failure.png' });
throw error;
}
} else if (mode === 'compose') {
console.log('[GlobalSetup] 模式: 构建(Compose). 正在执行构建模式的安装脚本...');
try {
const hostGateway = env.DOCKER_HOST_GATEWAY || '172.17.0.1';
const giteaBaseURL = `http://${hostGateway}:80`;
const serverDomain = hostGateway;
const browser = await chromium.launch();
await page.goto(baseURL, { timeout: 15000 });
console.log('[GlobalSetup] 检测到安装界面!正在开始自动化安装...');
await page.getByRole('textbox', { name: 'Server Domain *' }).fill(serverDomain);
await page.getByRole('textbox', { name: 'Gitea Base URL *' }).fill(giteaBaseURL);
await page.getByText('Server and Third-Party Service Settings').click();
await page.getByRole('checkbox', { name: 'Enable user sign-in via Wechat QR Code.' }).uncheck();
await page.getByRole('checkbox', { name: 'Require a CAPTCHA for user' }).uncheck();
await page.getByText('Administrator Account Settings').click();
await page.getByRole('textbox', { name: 'Administrator Username' }).fill('testuser');
await page.getByRole('textbox', { name: 'Email Address' }).fill('ilovcatlyn750314@gmail.com');
await page.getByRole('textbox', { name: 'Password', exact: true }).fill('12345678');
await page.getByRole('textbox', { name: 'Confirm Password' }).fill('12345678');
await page.getByRole('button', { name: 'Install Gitea'}).click();
console.log("安装中,请耐心等待");
await page.waitForTimeout(90000);
} catch (error) {
console.error('[GlobalSetup] "构建模式" 安装失败:', error);
await page.screenshot({ path: 'playwright-report/global-setup-failure.png' });
throw error;
}
} else {
}
else {
throw new Error(`[GlobalSetup] 未知的 E2E_MODE: "${mode}"`);
}
await browser.close();

repo.diff.view_file

@@ -21,46 +21,8 @@ mkdir -p ./tests/e2e/reports/html ./tests/e2e/test-data/devstar_data
echo "清理完成。"
echo ""
echo "===== [2/5] 设置权限... ====="
# 容器内的用户需要写入数据目录
chmod -R 777 ./tests/e2e/test-data/devstar_data
# 【关键】允许容器访问宿主机的 Docker Socket
if [ -z "$TARGET_URL" ]; then
sudo chmod 666 /var/run/docker.sock
echo "权限设置完成。"
echo ""
else
echo "跳过docker.sock权限修改 ====="
fi
if [ -z "$TARGET_URL" ]; then
echo "===== [3/5] 构建模式: 构建/拉取依赖镜像... ====="
#现在make devstar 处理镜像的构建
docker pull mengning997/webterminal:latest
docker tag mengning997/webterminal:latest devstar.cn/devstar/webterminal:latest
echo "===== 现在检测Docker宿主机网关====="
DOCKER_HOST_GATEWAY="172.17.0.1"
if [ "$OS_TYPE" = "Darwin" ]; then
DOCKER_HOST_GATEWAY="host.docker.internal"
elif [ "$OS_TYPE" = "Linux" ]; then
LINUX_IP=$(ip addr show docker0 | grep -Po 'inet \K[\d\.]+')
if [ -n "$LINUX_IP" ]; then
DOCKER_HOST_GATEWAY=$LINUX_IP
else
echo "警告: 无法动态检测 'docker0' IP, 回退到 172.17.0.1"
fi
fi
export DOCKER_HOST_GATEWAY
else
echo "===== [3/5] URL 模式: 跳过依赖镜像和网关检测。 ====="
fi
echo "===== [4/5] 启动并运行测试... ====="
echo "===== [2/3] 启动并运行测试... ====="
# 检查从 Makefile 传来的 TARGET_URL 变量是否为空
if [ -n "$TARGET_URL" ]; then
# --- [A] URL 模式 ---
echo " 模式: [URL模式]. 目标: $TARGET_URL"
export DEVSTAR_URL=$TARGET_URL
export E2E_MODE="url"
@@ -90,30 +52,13 @@ if [ -n "$TARGET_URL" ]; then
--build \
--exit-code-from test-runner \
test-runner
else
# --- [B] 构建模式 ---
echo "==> 模式: [构建模式]. 正在本地启动 devstar..."
# 1. 导出内部 URL
export DEVSTAR_URL="http://devstar:3000"
export E2E_MODE="compose"
export E2E_SKIP_INSTALL="false"
echo "即将执行: docker compose -f tests/e2e/docker-compose.test.yml up --build --wait --exit-code-from test-runner"
# 2. 启动所有服务
command docker compose \
-f tests/e2e/docker-compose.test.yml \
-f tests/e2e/docker-compose.override.yml \
up \
--build \
--abort-on-container-exit \
--exit-code-from test-runner
fi
# 捕获 test-runner 的退出码
EXIT_CODE=$?
echo ""
echo ""
echo "===== [5/5] 测试运行完成 ====="
echo "===== [3/3] 测试运行完成 ====="
echo "HTML 报告已生成在: ./reports/html"
ls -l ./tests/e2e/reports/html
echo ""

repo.diff.view_file

@@ -65,11 +65,4 @@ if(mode === 'url'){
);
}
}
else if(mode=='compose'){
await page.fill('#user_name',username);
await page.fill('#password', password);
await page.getByRole('button', { name: '登录' }).click();
await expect(page).toHaveURL(env.DEVSTAR_URL+ '/');
console.log(`[LoginHelper] 登录成功!`);
}
}