删除dockerfile,把数据挂载放在脚本里使用
This commit is contained in:
@@ -12,32 +12,17 @@ jobs:
|
||||
steps:
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v4
|
||||
- name: 1.0 make devstar
|
||||
- name: 1. Build Devstar image
|
||||
run: |
|
||||
make devstar
|
||||
- name: 1.5 Clean Up Old Data & Containers
|
||||
run: |
|
||||
echo "正在清理旧环境..."
|
||||
public/assets/install.sh clean
|
||||
- name: 2. Deploy DevStar Container
|
||||
- name: 2. start 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. Get IP & Wait for DevStar (Health Check)
|
||||
run: |
|
||||
echo "===== 2.8. 获取 DevStar IP 并等待就绪... ====="
|
||||
CONTAINER_NAME=$(docker ps -a --filter "ancestor=devstar-studio:latest" --format "{{.Names}}" | head -n 1)
|
||||
echo "Found Container Name: $CONTAINER_NAME"
|
||||
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: |
|
||||
TARGET_URL="http://localhost:80"
|
||||
@@ -45,3 +30,6 @@ jobs:
|
||||
env:
|
||||
GITEA_I_AM_BEING_UNSAFE_RUNNING_AS_ROOT: "true"
|
||||
##TODO 如何输出一份可读的测试报告,现在成功的输出了一些截图和日志
|
||||
- name: report E2E TESTS results
|
||||
run: |
|
||||
##TODO 这里后续完善测试报告的生成和上传到指定的pr评论中
|
||||
|
||||
2
.gitignore
repo.diff.vendored
2
.gitignore
repo.diff.vendored
@@ -69,6 +69,8 @@ cpu.out
|
||||
/tests/e2e/gitea-e2e-*
|
||||
/tests/e2e/indexers-*
|
||||
/tests/e2e/reports
|
||||
/tests/e2e/node_modules/
|
||||
/tests/e2e/package-lock.json
|
||||
/tests/e2e/test-data
|
||||
/tests/e2e/test-artifacts
|
||||
/tests/e2e/test-snapshots
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
# 1. 忽略 Node.js 依赖目录
|
||||
/node_modules
|
||||
# 2. 忽略本地的测试报告和结果
|
||||
/reports
|
||||
/test-data
|
||||
/test-artifacts
|
||||
/Readme.md
|
||||
/utils_e2e.ts
|
||||
/utils_e2e_test.go
|
||||
/e2e_test.go
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
#
|
||||
# 这是 "test-runner" 服务的 Dockerfile
|
||||
#
|
||||
|
||||
# 1. 使用微软官方的 Playwright 镜像
|
||||
# 它已经内置了所有浏览器 (Chromium, Firefox, WebKit) 和操作系统依赖
|
||||
FROM mcr.microsoft.com/playwright:v1.53.2-jammy
|
||||
|
||||
# 2. 设置工作目录
|
||||
WORKDIR /app
|
||||
|
||||
# 3. 复制 "依赖清单" 文件
|
||||
COPY tests/e2e/package*.json ./
|
||||
COPY playwright.config.ts ./
|
||||
|
||||
# 4. 安装npm 依赖 (即 @playwright/test)
|
||||
RUN npm install
|
||||
|
||||
# 5. 复制所有的测试代码到容器中
|
||||
# (包括 global-setup.ts 和 specs/ 目录)
|
||||
COPY tests/e2e/global-setup.ts ./
|
||||
COPY tests/e2e/specs/ ./specs/
|
||||
|
||||
# 6. 默认命令
|
||||
CMD ["npx", "playwright", "test"]
|
||||
@@ -15,4 +15,3 @@ make e2e-test TARGET_URL="..." E2E_USERNAME="your_name" E2E_PASSWORD="your_passw
|
||||
##说明:测试的用法
|
||||
1.通过make devstar 本地代码构建镜像,public/assets/install.sh start --image=devstar-studio:latest 通过install.sh脚本创建容器,并在make e2e-test TARGET_URL="..."中输入devstar容器的url,如果首次安装会执行安装脚本,如果已经安装过,请输入你的账号,密码,否则按默认账号和密码登录。
|
||||
2.测试用例的添加方法:所有的测试按照功能分组:devcontainer,appstore,runner等等,每一个test函数对应一组或一个测试用例,按照流程增加对应的测试用例和测试脚本。
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ export CURRENT_UID=$(id -u)
|
||||
export CURRENT_GID=$(id -g)
|
||||
# 切换到项目根目录
|
||||
cd "$PROJECT_ROOT"
|
||||
echo "===== [1/4] 清理旧的测试环境... ====="
|
||||
echo "===== [1/3] 清理旧的测试环境... ====="
|
||||
#删除旧的e2e-runner
|
||||
if [ "$(docker ps -aq -f name=e2e-test-runner-container)" ]; then
|
||||
docker rm -f e2e-test-runner-container
|
||||
@@ -25,10 +25,20 @@ rm -rf ./tests/e2e/reports ./tests/e2e/test-data
|
||||
mkdir -p ./tests/e2e/reports/html ./tests/e2e/test-data/devstar_data
|
||||
#赋予目录权限,防止挂载后容器无权写入
|
||||
chmod -R 777 ./tests/e2e/reports
|
||||
#这里添加的代码是因为需要执行npm install,我们以当前用户启动测试容器,避免root权限冲突,所以先预构建文件夹,也作为缓存,缓存npm install.
|
||||
echo "处理 node_modules 权限..."
|
||||
mkdir -p ./tests/e2e/node_modules
|
||||
chmod 777 ./tests/e2e/node_modules
|
||||
LOCK_FILE="./tests/e2e/package-lock.json"
|
||||
if [ ! -f "$LOCK_FILE" ]; then
|
||||
echo "{}" > "$LOCK_FILE"
|
||||
fi
|
||||
# 给它满权限,让 npm 能改
|
||||
chmod 666 "$LOCK_FILE"
|
||||
echo "清理完成。"
|
||||
echo ""
|
||||
|
||||
echo "===== [2/4] 准备环境变量... ====="
|
||||
echo "===== [2/3] 准备环境变量... ====="
|
||||
# 检查从 Makefile 传来的 TARGET_URL 变量是否为空
|
||||
echo " 检查devstar位置:TARGET_URL"
|
||||
export DEVSTAR_URL=$TARGET_URL
|
||||
@@ -53,12 +63,7 @@ else
|
||||
fi
|
||||
echo ""
|
||||
|
||||
echo "===== [3/4] 构建测试镜像... ====="
|
||||
|
||||
docker build -t e2e-test-runner -f tests/e2e/Dockerfile .
|
||||
echo ""
|
||||
|
||||
echo "===== [4/4] 启动容器并运行测试... ====="
|
||||
echo "===== [3/3] 启动容器并运行测试... ====="
|
||||
set +e
|
||||
|
||||
docker run --rm --init --ipc=host \
|
||||
@@ -81,12 +86,23 @@ docker run --rm --init --ipc=host \
|
||||
`# 挂载 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 HOME=/tmp \
|
||||
\
|
||||
`# 镜像名` \
|
||||
e2e-test-runner \
|
||||
\
|
||||
mcr.microsoft.com/playwright:v1.53.2-jammy \
|
||||
`# 运行命令` \
|
||||
npx playwright test
|
||||
bash -c "echo '正在安装依赖...' && npm install --no-package-lock&& echo '依赖安装完成,开始测试...' && npx playwright test"
|
||||
|
||||
# 捕获 test-runner 的退出码
|
||||
EXIT_CODE=$?
|
||||
|
||||
Reference in New Issue
Block a user