fix: Drone 流水线改为自 clone,避免拉取 drone/git 失败

关闭默认 clone,使用预拉的 node:20-bookworm;文档补充 daoCloud 预拉步骤。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
zlwuandCursor committed 2026-10-23 15:27:49 +08:00
1 parent a51d4e10aa
commit 97d73d835b
3 files changed
+27 -18

No files matched your search

+16 -12
View File
@@ -1,6 +1,9 @@
# zkxw:仅编译打包,不自动部署测试环境
# 触发:push / tag
# 产物:artifacts/*.tar.gz(日志打印 sha256)
#
# 说明:关闭默认 clone(drone/git 在国内难拉),在 node 镜像内 git clone。
# 构建镜像优先用已 tag 的 node:20-bookworm(部署时从 daoCloud 预拉)。
kind: pipeline
type: docker
@@ -9,6 +12,9 @@ name: build-package
concurrency:
limit: 1
clone:
disable: true
trigger:
event:
- push
@@ -17,23 +23,21 @@ trigger:
steps:
- name: build-and-package
image: node:20-bookworm
environment:
GOGS_HTTP: http://101.35.245.122:3000
commands:
- set -euo pipefail
- apt-get update -qq && apt-get install -y -qq git ca-certificates >/dev/null
- |
BRANCH="${DRONE_SOURCE_BRANCH:-${DRONE_BRANCH:-master}}"
echo "[CI] clone $GOGS_HTTP/wuzilong/zkxw.git branch=$BRANCH commit=${DRONE_COMMIT}"
git clone --depth 50 --branch "$BRANCH" "$GOGS_HTTP/wuzilong/zkxw.git" .
git checkout -q "$DRONE_COMMIT"
- mkdir -p artifacts
- |
echo "[CI] prepare env (tracked .env.docker → .env.test; .env.test is gitignored)"
if [ -f web-admin/.env.docker ]; then
cp web-admin/.env.docker web-admin/.env.test
else
echo "missing web-admin/.env.docker" >&2
exit 1
fi
if [ -f mobile-oa-h5/.env.docker ]; then
cp mobile-oa-h5/.env.docker mobile-oa-h5/.env.test
else
echo "missing mobile-oa-h5/.env.docker" >&2
exit 1
fi
cp web-admin/.env.docker web-admin/.env.test
cp mobile-oa-h5/.env.docker mobile-oa-h5/.env.test
- |
echo "[CI] web-admin pnpm build:test"
corepack enable
+5
View File
@@ -16,6 +16,9 @@ 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
@@ -24,6 +27,8 @@ docker logs drone-runner 2>&1 | tail -20
云安全组 / 主机防火墙放行 **TCP 18080**(本方案默认端口;勿用未放行的 8080)。
流水线关闭了默认 `drone/git` clone(国内难拉),在 `node:20-bookworm` 内直接 `git clone` 本机 Gogs。
## 2. 登录与激活仓库
1. 浏览器打开 `http://101.35.245.122:18080`
+6 -6
View File
@@ -3,9 +3,11 @@
# cp .env.example .env # 填写 DRONE_RPC_SECRET
# docker compose up -d
#
# 访问:http://101.35.245.122:8080 (用 Gogs 用户名/密码登录)
# 访问:http://101.35.245.122:18080 (用 Gogs 用户名/密码登录)
# Gogs:http://101.35.245.122:3000
# Runner 不对外暴露端口(避免与 Gogs :3000 冲突)
#
# Runner 不对外暴露端口。构建镜像请预先 docker pull(见 README),
# 流水线使用国内可达的 node 镜像,并关闭默认 drone/git clone。
services:
drone:
@@ -13,7 +15,7 @@ services:
container_name: drone
restart: always
ports:
# 云安全组未放行 8080;18080 已在主机防火墙放行且外网可达
# 云安全组未放行 8080;18080 已放行且外网可达
- '18080:80'
volumes:
- drone-data:/data
@@ -22,10 +24,9 @@ services:
DRONE_GOGS_SERVER: ${DRONE_GOGS_SERVER:-http://101.35.245.122:3000}
DRONE_GOGS_SKIP_VERIFY: ${DRONE_GOGS_SKIP_VERIFY:-false}
DRONE_RPC_SECRET: ${DRONE_RPC_SECRET}
DRONE_SERVER_HOST: ${DRONE_SERVER_HOST:-101.35.245.122:8080}
DRONE_SERVER_HOST: ${DRONE_SERVER_HOST:-101.35.245.122:18080}
DRONE_SERVER_PROTO: ${DRONE_SERVER_PROTO:-http}
DRONE_GIT_ALWAYS_AUTH: ${DRONE_GIT_ALWAYS_AUTH:-false}
# 容器访问宿主机 Gogs:把公网 IP 指回宿主机,避免云主机 hairpin 失败
extra_hosts:
- '101.35.245.122:host-gateway'
- 'host.docker.internal:host-gateway'
@@ -40,7 +41,6 @@ services:
- /var/run/docker.sock:/var/run/docker.sock
environment:
DRONE_RPC_PROTO: ${DRONE_RPC_PROTO:-http}
# 同一 compose 网络内走服务名;勿映射 runner:3000
DRONE_RPC_HOST: ${DRONE_RPC_HOST:-drone:80}
DRONE_RPC_SECRET: ${DRONE_RPC_SECRET}
DRONE_RUNNER_CAPACITY: ${DRONE_RUNNER_CAPACITY:-1}