Просмотр исходного кода

fix: Drone 分步构建并限制 Node 堆,避免测试机 OOM

Co-authored-by: Cursor <cursoragent@cursor.com>
zlwu 1 неделя назад
Родитель
Сommit
85f99ed757
1 измененных файлов с 44 добавлено и 29 удалено
  1. 44 29
      .drone.yml

+ 44 - 29
.drone.yml

@@ -1,9 +1,8 @@
 # zkxw:仅编译打包,不自动部署测试环境
 # 触发:push / tag
-# 产物:artifacts/*.tar.gz(日志打印 sha256)
+# 产物:各 step 日志打印 artifacts sha256
 #
-# 说明:关闭默认 clone(drone/git 在国内难拉),在 node 镜像内 git clone。
-# 构建镜像优先用已 tag 的 node:20-bookworm(部署时从 daoCloud 预拉)。
+# 说明:关闭默认 clone(drone/git 难拉);分步构建以降低 3.6G 机器峰值内存。
 
 kind: pipeline
 type: docker
@@ -21,7 +20,7 @@ trigger:
     - tag
 
 steps:
-  - name: build-and-package
+  - name: clone
     image: node:20-bookworm
     environment:
       GOGS_HTTP: http://101.35.245.122:3000
@@ -33,29 +32,47 @@ steps:
         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"
+
+  - name: build-web-admin
+    image: node:20-bookworm
+    environment:
+      NODE_OPTIONS: --max-old-space-size=1536
+    commands:
+      - set -eu
+      - cp web-admin/.env.docker web-admin/.env.test
+      - corepack enable
+      - corepack prepare pnpm@9.15.9 --activate
+      - cd web-admin
+      - pnpm install --frozen-lockfile
+      - pnpm build:test
+      - cd ..
+      - mkdir -p artifacts
+      - tar -C web-admin -czf artifacts/web-admin-dist.tar.gz dist
+      - sha256sum artifacts/web-admin-dist.tar.gz
+      - ls -lh artifacts/web-admin-dist.tar.gz
+
+  - name: build-oa-h5
+    image: node:20-bookworm
+    environment:
+      NODE_OPTIONS: --max-old-space-size=1024
+    commands:
+      - set -eu
+      - cp mobile-oa-h5/.env.docker mobile-oa-h5/.env.test
+      - cd mobile-oa-h5
+      - npm ci
+      - npm run build -- --mode test
+      - cd ..
+      - mkdir -p artifacts
+      - tar -C mobile-oa-h5 -czf artifacts/oa-h5-dist.tar.gz dist
+      - sha256sum artifacts/oa-h5-dist.tar.gz
+      - ls -lh artifacts/oa-h5-dist.tar.gz
+
+  - name: package-backend
+    image: node:20-bookworm
+    commands:
+      - set -eu
       - mkdir -p artifacts
       - |
-        echo "[CI] prepare env (tracked .env.docker → .env.test; .env.test is gitignored)"
-        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
-        corepack prepare pnpm@9.15.9 --activate
-        cd web-admin
-        pnpm install --frozen-lockfile
-        pnpm build:test
-        cd ..
-        tar -C web-admin -czf artifacts/web-admin-dist.tar.gz dist
-      - |
-        echo "[CI] mobile-oa-h5 build --mode test"
-        cd mobile-oa-h5
-        npm ci
-        npm run build -- --mode test
-        cd ..
-        tar -C mobile-oa-h5 -czf artifacts/oa-h5-dist.tar.gz dist
-      - |
-        echo "[CI] backend source package"
         tar -czf artifacts/backend-src.tar.gz \
           --exclude='backend/.venv' \
           --exclude='backend/venv' \
@@ -65,7 +82,5 @@ steps:
           --exclude='backend/.pytest_cache' \
           --exclude='backend/graphify-out' \
           backend
-      - |
-        echo "[CI] artifacts checksums"
-        sha256sum artifacts/*.tar.gz
-        ls -lh artifacts/
+      - sha256sum artifacts/backend-src.tar.gz
+      - ls -lh artifacts/backend-src.tar.gz