From 97d73d835b2ac2bae0c0017ba6f5777f09ad9334 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Fri, 23 Oct 2026 15:27:49 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20Drone=20=E6=B5=81=E6=B0=B4=E7=BA=BF?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E8=87=AA=20clone=EF=BC=8C=E9=81=BF=E5=85=8D?= =?UTF-8?q?=E6=8B=89=E5=8F=96=20drone/git=20=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关闭默认 clone,使用预拉的 node:20-bookworm;文档补充 daoCloud 预拉步骤。 Co-authored-by: Cursor --- .drone.yml | 28 +++++++++++++++------------ 测试环境部署/drone/README.md | 5 +++++ 测试环境部署/drone/docker-compose.yml | 12 ++++++------ 3 files changed, 27 insertions(+), 18 deletions(-) diff --git a/.drone.yml b/.drone.yml index 7201d5b0..4d731395 100644 --- a/.drone.yml +++ b/.drone.yml @@ -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 diff --git a/测试环境部署/drone/README.md b/测试环境部署/drone/README.md index 99f8b045..e24ab357 100644 --- a/测试环境部署/drone/README.md +++ b/测试环境部署/drone/README.md @@ -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` diff --git a/测试环境部署/drone/docker-compose.yml b/测试环境部署/drone/docker-compose.yml index 20425e99..1349be63 100644 --- a/测试环境部署/drone/docker-compose.yml +++ b/测试环境部署/drone/docker-compose.yml @@ -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}