2.6 KiB
2.6 KiB
测试机 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. 登录与激活仓库
- 浏览器打开
http://101.35.245.122:18088 - 使用 Gogs 用户名/密码 登录(Gogs 无 OAuth)
- Sync 仓库 → 激活
wuzilong/zkxw - 在 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.gzmobile-oa-h5:npm run build -- --mode test→artifacts/oa-h5-dist.tar.gzbackend:源码打包(排除 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,构建应为绿色