# 测试机 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. 部署(在测试机) ```bash 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`](../../.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. 日常运维 ```bash 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. 验收 ```bash 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,构建应为绿色 ```