Files
zkxw/测试环境部署/drone

测试机 Drone CI(对接 Gogs)

目标机:101.35.245.122
Gogs:http://101.35.245.122:3000(已有)
Drone UI:http://101.35.245.122:18088(云安全组未开 8080,改用已放行的 18088)
范围:编译打包 artifact,不自动部署到 /root/zkxw

1. 部署(在测试机)

mkdir -p /root/drone
# 从本仓库同步模板,或手工 scp 本目录
cp docker-compose.yml .env.example /root/drone/
cd /root/drone
cp .env.example .env
# 生成共享密钥
sed -i "s/replace-with-openssl-rand-hex-32/$(openssl rand -hex 32)/" .env
docker compose pull
# 预拉构建镜像(Docker Hub 慢时用 daoCloud,再 tag 成流水线里的名字)
docker pull docker.m.daocloud.io/library/node:20-bookworm
docker tag docker.m.daocloud.io/library/node:20-bookworm node:20-bookworm
docker compose up -d
docker compose ps
docker logs drone-runner 2>&1 | tail -20
# 期望看到:successfully pinged the remote server

云安全组 / 主机防火墙放行 TCP 18088(本方案默认端口;勿用未放行的 8080)。

流水线关闭了默认 drone/git clone(国内难拉),在 node:20-bookworm 内直接 git clone 本机 Gogs。

2. 登录与激活仓库

  1. 浏览器打开 http://101.35.245.122:18088
  2. 使用 Gogs 用户名/密码 登录(Gogs 无 OAuth)
  3. Sync 仓库 → 激活 wuzilong/zkxw
  4. 在 Gogs 该仓 Settings → Webhooks 确认存在 Drone 回调,例如:
    http://101.35.245.122:18088/hook

云安全组 / 本机 YJ 防火墙需放行 TCP 18088(本机已按此端口部署)。

3. 流水线

仓库根目录 .drone.yml:

  • web-admin:pnpm build:test → artifacts/web-admin-dist.tar.gz
  • mobile-oa-h5:npm run build -- --mode test → artifacts/oa-h5-dist.tar.gz
  • backend:源码打包(排除 venv/logs)→ artifacts/backend-src.tar.gz

因 .env.test 未入库,流水线构建前会用已跟踪的 .env.docker 复制为 .env.test(仅保证能编过;若需与线上测试配置一致,可在 Drone 仓库 Secrets 中自行注入后再 printf 写入)。

不会 rsync、不会执行 start-test.sh。

4. 日常运维

cd /root/drone
docker compose ps
docker compose logs -f --tail=100 drone
docker compose logs -f --tail=100 drone-runner
docker compose restart
docker compose down    # 停止(保留 volume drone-data)

5. 验收

curl -sI http://101.35.245.122:18088 | head -5
curl -sI http://101.35.245.122:3000 | head -5
# push 到 wuzilong/zkxw 或在 Drone UI 点 Rebuild,构建应为绿色