From 53d6cc56201d546e30c90febb016a3761ae82dbf Mon Sep 17 00:00:00 2001 From: pywee Date: Wed, 1 Jul 2026 17:12:52 +0800 Subject: [PATCH 1/5] ok --- 20260701_front.yaml | 8 +-- docker-compose-test.yaml | 124 +++++++++++++++++++++++++++------------ 2 files changed, 90 insertions(+), 42 deletions(-) diff --git a/20260701_front.yaml b/20260701_front.yaml index 22d5f24..666cd5a 100644 --- a/20260701_front.yaml +++ b/20260701_front.yaml @@ -66,9 +66,9 @@ steps: if docker compose -p "$PROJECT_NAME" config --services | grep -q "^$svc$"; then echo ">>>>>> 开始增量构建部署服务: $svc <<<<<<" cp /bluetti/frontend_project/bluetti-shop-configs/"$svc"-development.env apps/$svc/.env.development - docker compose -p "$PROJECT_NAME" up -d "$svc" --build fi done + docker compose --parallel 8 -p "$PROJECT_NAME" up -d --build $build_list volumes: - name: pnpm_store @@ -106,7 +106,7 @@ type: docker name: TEST-frontend-monorepo-ci clone: - depth: 50 + depth: 22 steps: - name: build-and-run-apps @@ -204,7 +204,7 @@ type: docker name: RC-frontend-monorepo-ci clone: - depth: 50 + depth: 22 steps: - name: build-and-push-apps @@ -365,7 +365,7 @@ type: docker name: PROD-frontend-monorepo-ci clone: - depth: 50 + depth: 22 steps: - name: build-and-push-apps diff --git a/docker-compose-test.yaml b/docker-compose-test.yaml index 93a8b8f..ce9d7e5 100644 --- a/docker-compose-test.yaml +++ b/docker-compose-test.yaml @@ -1,63 +1,111 @@ services: shopify-america: - build: - context: . - dockerfile: apps/shopify-america/Dockerfile - image: shopify-america:test - container_name: shopify-america-test - restart: always - ports: - - '3032:3002' + image: harbor.bluettipower.com/bluetti-frontend/shopify-america:${COMMIT_SHA} + container_name: shopify-america + restart: unless-stopped + user: "0:0" labels: - - traefik.http.routers.shoptestqaus.rule=Host(`shop-test-us.bluettipower.com`) - - traefik.http.routers.shoptestqaus.middlewares=shoptestqaus-cors - - traefik.http.middlewares.shoptestqaus-cors.headers.accesscontrolallowmethods=* - - traefik.http.middlewares.shoptestqaus-cors.headers.accesscontrolallowheaders=* - - traefik.http.middlewares.shoptestqaus-cors.headers.accesscontrolalloworiginlist=* - - traefik.http.middlewares.shoptestqaus-redirect.redirectscheme.scheme=https - - traefik.http.middlewares.shoptestqaus-redirect.redirectscheme.permanent=true - - traefik.http.services.shoptestqaus.loadbalancer.server.port=3002 - - traefik.http.routers.shoptestqaus.tls=true - - traefik.http.routers.shoptestqaus.tls.certresolver=myresolver + - traefik.http.routers.shopus-http.rule=Host(`shop-rc-us.bluettipower.com`) + - traefik.http.routers.shopus-http.entrypoints=http + + - traefik.enable=true + - traefik.http.routers.shopus-https.rule=Host(`shop-rc-us.bluettipower.com`) + - traefik.http.routers.shopus-https.entrypoints=https + - traefik.http.routers.shopus-https.tls=true + - traefik.http.routers.shopus-https.tls.certresolver=myresolver + - traefik.http.routers.shopus-https.middlewares=shopus-cors + - traefik.http.services.shopus.loadbalancer.server.port=3002 + + - traefik.http.middlewares.shopus-cors.headers.accesscontrolallowmethods=* + - traefik.http.middlewares.shopus-cors.headers.accesscontrolallowheaders=* + - traefik.http.middlewares.shopus-cors.headers.accesscontrolalloworiginlist=* + - traefik.http.middlewares.shopus-redirect.redirectscheme.scheme=https + - traefik.http.middlewares.shopus-redirect.redirectscheme.permanent=true networks: - traefik env_file: - - apps/shopify-america/.env.test + - /bluetti/frontend_project/bluetti-shop-configs/shopify-america-production.env logging: driver: json-file options: max-size: '10m' max-file: '3' + command: sh -c "npm start 2>&1 | tee -a /app/logs/app.log" + volumes: + - /var/log/shopify-america:/app/logs:rw + shopify-australia: - build: - context: . - dockerfile: apps/shopify-australia/Dockerfile - image: shopify-australia:test - container_name: shopify-australia-test - restart: always - ports: - - '3031:3001' + image: harbor.bluettipower.com/bluetti-frontend/shopify-australia:${COMMIT_SHA} + container_name: shopify-australia + restart: unless-stopped + user: "0:0" labels: - - traefik.http.routers.shoptestqaau.rule=Host(`shop-test-au.bluettipower.com`) - - traefik.http.routers.shoptestqaau.middlewares=shoptestqaau-cors - - traefik.http.middlewares.shoptestqaau-cors.headers.accesscontrolallowmethods=* - - traefik.http.middlewares.shoptestqaau-cors.headers.accesscontrolallowheaders=* - - traefik.http.middlewares.shoptestqaau-cors.headers.accesscontrolalloworiginlist=* - - traefik.http.middlewares.shoptestqaau-redirect.redirectscheme.scheme=https - - traefik.http.middlewares.shoptestqaau-redirect.redirectscheme.permanent=true - - traefik.http.services.shoptestqaau.loadbalancer.server.port=3001 - - traefik.http.routers.shoptestqaau.tls=true - - traefik.http.routers.shoptestqaau.tls.certresolver=myresolver + # 移除 http 跳转相关的 middleware,即不要为 http 路由配置 redirectscheme + - traefik.http.routers.shopau-http.rule=Host(`shop-rc-au.bluettipower.com`) + - traefik.http.routers.shopau-http.entrypoints=http + + - traefik.enable=true + - traefik.http.routers.shopau-https.rule=Host(`shop-rc-au.bluettipower.com`) + - traefik.http.routers.shopau-https.entrypoints=https + - traefik.http.routers.shopau-https.tls=true + - traefik.http.routers.shopau-https.tls.certresolver=myresolver + - traefik.http.routers.shopau-https.middlewares=shopau-cors + - traefik.http.services.shopau.loadbalancer.server.port=3001 + + - traefik.http.middlewares.shopau-cors.headers.accesscontrolallowmethods=* + - traefik.http.middlewares.shopau-cors.headers.accesscontrolallowheaders=* + - traefik.http.middlewares.shopau-cors.headers.accesscontrolalloworiginlist=* + - traefik.http.middlewares.shopau-redirect.redirectscheme.scheme=https + - traefik.http.middlewares.shopau-redirect.redirectscheme.permanent=true networks: - traefik env_file: - - apps/shopify-australia/.env.test + - /bluetti/frontend_project/bluetti-shop-configs/shopify-australia-production.env logging: driver: json-file options: max-size: '10m' max-file: '3' + command: sh -c "npm start 2>&1 | tee -a /app/logs/app.log" + volumes: + - /var/log/shopify-australia:/app/logs:rw + + shopify-europe: + image: harbor.bluettipower.com/bluetti-frontend/shopify-europe:${COMMIT_SHA} + container_name: shopify-europe + restart: unless-stopped + user: "0:0" + labels: + # 移除 http 跳转相关的 middleware,即不要为 http 路由配置 redirectscheme + - traefik.http.routers.shopeu-http.rule=Host(`shop-rc-eu.bluettipower.com`) + - traefik.http.routers.shopeu-http.entrypoints=http + + - traefik.enable=true + - traefik.http.routers.shopeu-https.rule=Host(`shop-rc-eu.bluettipower.com`) + - traefik.http.routers.shopeu-https.entrypoints=https + - traefik.http.routers.shopeu-https.tls=true + - traefik.http.routers.shopeu-https.tls.certresolver=myresolver + - traefik.http.routers.shopeu-https.middlewares=shopeu-cors + - traefik.http.services.shopeu.loadbalancer.server.port=3005 + + - traefik.http.middlewares.shopeu-cors.headers.accesscontrolallowmethods=* + - traefik.http.middlewares.shopeu-cors.headers.accesscontrolallowheaders=* + - traefik.http.middlewares.shopeu-cors.headers.accesscontrolalloworiginlist=* + - traefik.http.middlewares.shopeu-redirect.redirectscheme.scheme=https + - traefik.http.middlewares.shopeu-redirect.redirectscheme.permanent=true + networks: + - traefik + env_file: + - /bluetti/frontend_project/bluetti-shop-configs/shopify-europe-production.env + logging: + driver: json-file + options: + max-size: '10m' + max-file: '3' + command: sh -c "npm start 2>&1 | tee -a /app/logs/app.log" + volumes: + - /var/log/shopify-europe:/app/logs:rw networks: traefik: -- 2.49.1 From 89fc6d65f96e3f6fef7bb65e7b6e1c0d08f5e410 Mon Sep 17 00:00:00 2001 From: pywee Date: Thu, 2 Jul 2026 12:00:07 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E9=A1=BA=E5=88=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 20260701_front.yaml | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/20260701_front.yaml b/20260701_front.yaml index 666cd5a..5390db3 100644 --- a/20260701_front.yaml +++ b/20260701_front.yaml @@ -7,18 +7,16 @@ clone: steps: - name: build-and-run-apps - image: docker:dind + image: docker:cli pull: if-not-exists volumes: - name: docker_sock path: /var/run/docker.sock - - name: docker_lib - path: /var/lib/docker - name: configs_dir path: /bluetti/frontend_project/bluetti-shop-configs environment: - DOCKER_BUILDKIT: 1 - COMPOSE_DOCKER_CLI_BUILD: 1 + DOCKER_BUILDKIT: "1" + COMPOSE_DOCKER_CLI_BUILD: "1" DRONE_COMMIT: ${DRONE_COMMIT} DRONE_COMMIT_BEFORE: ${DRONE_COMMIT_BEFORE} DRONE_COMMIT_AFTER: ${DRONE_COMMIT_AFTER} @@ -26,6 +24,9 @@ steps: PROJECT_NAME: from_secret: PROJECT_NAME commands: + - docker version + - docker info + - docker buildx version || true - | if [ "${DRONE_BUILD_EVENT}" = "pull_request" ] || [ "${DRONE_BUILD_EVENT}" = "merge_request" ]; then # 如果是 MR,直接对比目标分支(假设是 dev) @@ -110,14 +111,12 @@ clone: steps: - name: build-and-run-apps - image: docker:dind + image: docker:cli volumes: - name: docker_sock path: /var/run/docker.sock # 允许在容器内调用宿主机的 Docker - name: configs_dir path: /bluetti/frontend_project/bluetti-shop-configs - - name: docker_lib - path: /var/lib/docker environment: DRONE_COMMIT: ${DRONE_COMMIT} DRONE_COMMIT_BEFORE: ${DRONE_COMMIT_BEFORE} @@ -162,10 +161,10 @@ steps: if docker compose -f "$COMPOSE_FILE" -p "$PROJECT_NAME_TEST" config --services | grep -q "^$svc$"; then echo ">>>>>> 构建服务: $svc $PROJECT_NAME_TEST <<<<<<" cp /bluetti/frontend_project/bluetti-shop-configs/"$svc"-test.env apps/$svc/.env.test - # docker compose -f "$COMPOSE_FILE" -p "$PROJECT_NAME_TEST" build "$svc" - docker compose -f "$COMPOSE_FILE" -p "$PROJECT_NAME_TEST" up -d "$svc" --build + # docker compose -f "$COMPOSE_FILE" -p "$PROJECT_NAME_TEST" up -d "$svc" --build fi done + docker compose --parallel 8 -f "$COMPOSE_FILE" -p "$PROJECT_NAME_TEST" up -d --build $build_list volumes: - name: pnpm_store @@ -208,10 +207,8 @@ clone: steps: - name: build-and-push-apps - image: docker:dind + image: docker:cli volumes: - - name: docker_lib - path: /var/lib/docker - name: docker_sock path: /var/run/docker.sock - name: configs_dir @@ -369,10 +366,8 @@ clone: steps: - name: build-and-push-apps - image: docker:dind + image: docker:cli volumes: - - name: docker_lib - path: /var/lib/docker - name: docker_sock path: /var/run/docker.sock - name: configs_dir -- 2.49.1 From d4f9607034a70ef6a059c18d55876ddc5e445d4f Mon Sep 17 00:00:00 2001 From: pywee Date: Fri, 3 Jul 2026 11:06:25 +0800 Subject: [PATCH 3/5] bak --- 20260701_front.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/20260701_front.yaml b/20260701_front.yaml index 5390db3..d967949 100644 --- a/20260701_front.yaml +++ b/20260701_front.yaml @@ -69,7 +69,7 @@ steps: cp /bluetti/frontend_project/bluetti-shop-configs/"$svc"-development.env apps/$svc/.env.development fi done - docker compose --parallel 8 -p "$PROJECT_NAME" up -d --build $build_list + docker compose --parallel 1 -p "$PROJECT_NAME" up -d --build $build_list volumes: - name: pnpm_store @@ -139,7 +139,7 @@ steps: echo "本次变更文件:" echo "$changed_files" - full_build_changes=$(echo "$changed_files" | grep -E "^(package\.json|pnpm-lock\.yaml|pnpm-workspace\.yaml|turbo\.json|docker-compose.*\.ya?ml|packages/|patches/)" | wc -l) + full_build_changes=$(echo "$changed_files" | grep -E "^(package\.json|pnpm-lock\.yaml|.dockerignore|pnpm-workspace\.yaml|turbo\.json|docker-compose.*\.ya?ml|packages/|patches/)" | wc -l) PROJECT_NAME_TEST="${PROJECT_NAME}test" COMPOSE_FILE="docker-compose-test.yml" if [ "$full_build_changes" -gt 0 ]; then @@ -155,7 +155,6 @@ steps: exit 0 fi - # 3. test 环境 export BUILD_ENV="test" for svc in $build_list; do if docker compose -f "$COMPOSE_FILE" -p "$PROJECT_NAME_TEST" config --services | grep -q "^$svc$"; then @@ -164,7 +163,7 @@ steps: # docker compose -f "$COMPOSE_FILE" -p "$PROJECT_NAME_TEST" up -d "$svc" --build fi done - docker compose --parallel 8 -f "$COMPOSE_FILE" -p "$PROJECT_NAME_TEST" up -d --build $build_list + docker compose --parallel 1 -f "$COMPOSE_FILE" -p "$PROJECT_NAME_TEST" up -d --build $build_list volumes: - name: pnpm_store @@ -195,6 +194,7 @@ trigger: - "pnpm-workspace.yaml" - "turbo.json" - "docker-compose*.yml" + - ".dockerignore" --- -- 2.49.1 From 9293fe4e59547eccc6da9014c1c0790949d6f579 Mon Sep 17 00:00:00 2001 From: pywee Date: Fri, 3 Jul 2026 14:10:48 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E5=AE=8C=E7=BE=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 20260701_front.yaml | 146 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 123 insertions(+), 23 deletions(-) diff --git a/20260701_front.yaml b/20260701_front.yaml index d967949..33cbd79 100644 --- a/20260701_front.yaml +++ b/20260701_front.yaml @@ -52,6 +52,24 @@ steps: build_list=$(echo "$changed_files" | grep "^apps/" | cut -d/ -f2 | sort -u) fi + compose_services=$(docker compose -p "$PROJECT_NAME" config --services) + original_build_list="$build_list" + build_list="" + skipped_list="" + for svc in $original_build_list; do + if echo "$compose_services" | grep -q "^$svc$"; then + build_list="$build_list $svc" + else + skipped_list="$skipped_list $svc" + fi + done + build_list=$(echo "$build_list" | xargs) + skipped_list=$(echo "$skipped_list" | xargs) + + if [ -n "$skipped_list" ]; then + echo "以下 apps 变更未在 docker-compose 中定义,已跳过: $skipped_list" + fi + if [ -z "$build_list" ]; then echo "未命中可构建服务(仅文档或非关键文件改动),跳过构建。" exit 0 @@ -64,10 +82,8 @@ steps: export TRAEFIK_PREFIX="shoptest" for svc in $build_list; do - if docker compose -p "$PROJECT_NAME" config --services | grep -q "^$svc$"; then - echo ">>>>>> 开始增量构建部署服务: $svc <<<<<<" - cp /bluetti/frontend_project/bluetti-shop-configs/"$svc"-development.env apps/$svc/.env.development - fi + echo ">>>>>> 开始增量构建部署服务: $svc <<<<<<" + cp /bluetti/frontend_project/bluetti-shop-configs/"$svc"-development.env apps/$svc/.env.development done docker compose --parallel 1 -p "$PROJECT_NAME" up -d --build $build_list @@ -150,6 +166,24 @@ steps: build_list=$(echo "$changed_files" | grep "^apps/" | cut -d/ -f2 | sort -u) fi + compose_services=$(docker compose -f "$COMPOSE_FILE" config --services) + original_build_list="$build_list" + build_list="" + skipped_list="" + for svc in $original_build_list; do + if echo "$compose_services" | grep -q "^$svc$"; then + build_list="$build_list $svc" + else + skipped_list="$skipped_list $svc" + fi + done + build_list=$(echo "$build_list" | xargs) + skipped_list=$(echo "$skipped_list" | xargs) + + if [ -n "$skipped_list" ]; then + echo "以下 apps 变更未在 docker-compose 中定义,已跳过: $skipped_list" + fi + if [ -z "$build_list" ]; then echo "未命中可构建服务(仅文档或非关键文件改动),跳过构建。" exit 0 @@ -157,11 +191,9 @@ steps: export BUILD_ENV="test" for svc in $build_list; do - if docker compose -f "$COMPOSE_FILE" -p "$PROJECT_NAME_TEST" config --services | grep -q "^$svc$"; then - echo ">>>>>> 构建服务: $svc $PROJECT_NAME_TEST <<<<<<" - cp /bluetti/frontend_project/bluetti-shop-configs/"$svc"-test.env apps/$svc/.env.test - # docker compose -f "$COMPOSE_FILE" -p "$PROJECT_NAME_TEST" up -d "$svc" --build - fi + echo ">>>>>> 构建服务: $svc $PROJECT_NAME_TEST <<<<<<" + cp /bluetti/frontend_project/bluetti-shop-configs/"$svc"-test.env apps/$svc/.env.test + # docker compose -f "$COMPOSE_FILE" -p "$PROJECT_NAME_TEST" up -d "$svc" --build done docker compose --parallel 1 -f "$COMPOSE_FILE" -p "$PROJECT_NAME_TEST" up -d --build $build_list @@ -239,6 +271,24 @@ steps: build_list=$(echo "$changed_files" | grep "^apps/" | cut -d/ -f2 | sort -u) fi + compose_services=$(docker compose -f docker-compose.yml config --services) + original_build_list="$build_list" + build_list="" + skipped_list="" + for svc in $original_build_list; do + if echo "$compose_services" | grep -q "^$svc$"; then + build_list="$build_list $svc" + else + skipped_list="$skipped_list $svc" + fi + done + build_list=$(echo "$build_list" | xargs) + skipped_list=$(echo "$skipped_list" | xargs) + + if [ -n "$skipped_list" ]; then + echo "以下 apps 变更未在 docker-compose 中定义,已跳过: $skipped_list" + fi + if [ -z "$build_list" ]; then echo "未命中可构建服务(仅文档或非关键文件改动),跳过构建。" exit 0 @@ -313,19 +363,35 @@ steps: deploy_list=$(echo "$changed_files" | grep "^apps/" | cut -d/ -f2 | sort -u) fi + compose_services=$(docker compose -f docker-compose-release.yml config --services) + original_deploy_list="$deploy_list" + deploy_list="" + skipped_list="" + for svc in $original_deploy_list; do + if echo "$compose_services" | grep -q "^$svc$"; then + deploy_list="$deploy_list $svc" + else + skipped_list="$skipped_list $svc" + fi + done + deploy_list=$(echo "$deploy_list" | xargs) + skipped_list=$(echo "$skipped_list" | xargs) + + if [ -n "$skipped_list" ]; then + echo "以下 apps 变更未在 docker-compose 中定义,已跳过: $skipped_list" + fi + if [ -z "$deploy_list" ]; then echo "未命中可部署服务(仅文档或非关键文件改动),跳过远程部署。" exit 0 fi for svc in $deploy_list; do - if docker compose -f docker-compose-release.yml config --services | grep -q "^$svc$"; then - echo ">>>>>> 远程更新服务: $svc <<<<<<" - cp /bluetti/frontend_project/bluetti-shop-configs/"$svc"-production.env apps/$svc/.env.production - docker compose -f docker-compose-release.yml pull "$svc" - docker compose -f docker-compose-release.yml up -d --force-recreate "$svc" - echo ">>>>>> 部署完成: $svc 版本号: $COMMIT_SHA, 环境: $BUILD_ENV <<<<<<" - fi + echo ">>>>>> 远程更新服务: $svc <<<<<<" + cp /bluetti/frontend_project/bluetti-shop-configs/"$svc"-production.env apps/$svc/.env.production + docker compose -f docker-compose-release.yml pull "$svc" + docker compose -f docker-compose-release.yml up -d --force-recreate "$svc" + echo ">>>>>> 部署完成: $svc 版本号: $COMMIT_SHA, 环境: $BUILD_ENV <<<<<<" done volumes: - name: pnpm_store @@ -398,6 +464,24 @@ steps: build_list=$(echo "$changed_files" | grep "^apps/" | cut -d/ -f2 | sort -u) fi + compose_services=$(docker compose -f docker-compose.yml config --services) + original_build_list="$build_list" + build_list="" + skipped_list="" + for svc in $original_build_list; do + if echo "$compose_services" | grep -q "^$svc$"; then + build_list="$build_list $svc" + else + skipped_list="$skipped_list $svc" + fi + done + build_list=$(echo "$build_list" | xargs) + skipped_list=$(echo "$skipped_list" | xargs) + + if [ -n "$skipped_list" ]; then + echo "以下 apps 变更未在 docker-compose 中定义,已跳过: $skipped_list" + fi + if [ -z "$build_list" ]; then echo "未命中可构建服务(仅文档或非关键文件改动),跳过构建。" exit 0 @@ -460,19 +544,35 @@ steps: deploy_list=$(echo "$changed_files" | grep "^apps/" | cut -d/ -f2 | sort -u) fi + compose_services=$(docker compose -f docker-compose-prod.yml config --services) + original_deploy_list="$deploy_list" + deploy_list="" + skipped_list="" + for svc in $original_deploy_list; do + if echo "$compose_services" | grep -q "^$svc$"; then + deploy_list="$deploy_list $svc" + else + skipped_list="$skipped_list $svc" + fi + done + deploy_list=$(echo "$deploy_list" | xargs) + skipped_list=$(echo "$skipped_list" | xargs) + + if [ -n "$skipped_list" ]; then + echo "以下 apps 变更未在 docker-compose 中定义,已跳过: $skipped_list" + fi + if [ -z "$deploy_list" ]; then echo "未命中可部署服务(仅文档或非关键文件改动),跳过远程部署。" exit 0 fi for svc in $deploy_list; do - if docker compose -f docker-compose-prod.yml config --services | grep -q "^$svc$"; then - echo ">>>>>> 远程更新服务: $svc <<<<<<" - cp /bluetti/frontend_project/bluetti-shop-configs/"$svc"-production.env apps/$svc/.env.production - docker compose -f docker-compose-prod.yml pull "$svc" - docker compose -f docker-compose-prod.yml up -d --force-recreate "$svc" - echo ">>>>>> 部署完成: $svc 版本号: $COMMIT_SHA, 环境: $BUILD_ENV <<<<<<" - fi + echo ">>>>>> 远程更新服务: $svc <<<<<<" + cp /bluetti/frontend_project/bluetti-shop-configs/"$svc"-production.env apps/$svc/.env.production + docker compose -f docker-compose-prod.yml pull "$svc" + docker compose -f docker-compose-prod.yml up -d --force-recreate "$svc" + echo ">>>>>> 部署完成: $svc 版本号: $COMMIT_SHA, 环境: $BUILD_ENV <<<<<<" done volumes: -- 2.49.1 From 2ef676278559b014a9fc022dc1196a56fca2da07 Mon Sep 17 00:00:00 2001 From: pywee Date: Mon, 6 Jul 2026 17:06:48 +0800 Subject: [PATCH 5/5] ok --- 20260701_front.yaml | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/20260701_front.yaml b/20260701_front.yaml index 33cbd79..20cbeb5 100644 --- a/20260701_front.yaml +++ b/20260701_front.yaml @@ -327,10 +327,11 @@ steps: - git pull origin release - docker login harbor.bluettipower.com -u bluetti -p cjJXBbkHlvVWH2B - | + diff_failed=0 if [ "${DRONE_COMMIT_BEFORE}" = "0000000000000000000000000000000000000000" ]; then - changed_files=$(git diff-tree --no-commit-id --name-only -r ${DRONE_COMMIT_AFTER}) + changed_files=$(git diff-tree --no-commit-id --name-only -r ${DRONE_COMMIT_AFTER}) || diff_failed=1 else - changed_files=$(git diff --name-only ${DRONE_COMMIT_BEFORE} ${DRONE_COMMIT_AFTER}) + changed_files=$(git diff --name-only ${DRONE_COMMIT_BEFORE} ${DRONE_COMMIT_AFTER}) || diff_failed=1 fi export TARGET_SITES="shopify-australia shopify-x" @@ -353,6 +354,10 @@ steps: export BUILD_ENV="production" export COMMIT_SHA=${DRONE_COMMIT:0:10} echo "本次变更文件:" + if [ "$diff_failed" -eq 1 ]; then + echo "⚠️ 变更范围计算失败,回退为全量部署。" + changed_files="packages/__force_full_deploy__" + fi echo "$changed_files" full_build_changes=$(echo "$changed_files" | grep -E "^(package\.json|pnpm-lock\.yaml|pnpm-workspace\.yaml|turbo\.json|docker-compose.*\.ya?ml|packages/|patches/)" | wc -l) @@ -518,13 +523,14 @@ steps: script: - echo ">>>>>> 开始连接远程服务器 <<<<<<" - cd /bluetti/frontend_project/bluetti-shop - - git pull origin release + - git pull origin main - docker login harbor.bluettipower.com -u bluetti -p cjJXBbkHlvVWH2B - | + diff_failed=0 if [ "${DRONE_COMMIT_BEFORE}" = "0000000000000000000000000000000000000000" ]; then - changed_files=$(git diff-tree --no-commit-id --name-only -r ${DRONE_COMMIT_AFTER}) + changed_files=$(git diff-tree --no-commit-id --name-only -r ${DRONE_COMMIT_AFTER}) || diff_failed=1 else - changed_files=$(git diff --name-only ${DRONE_COMMIT_BEFORE} ${DRONE_COMMIT_AFTER}) + changed_files=$(git diff --name-only ${DRONE_COMMIT_BEFORE} ${DRONE_COMMIT_AFTER}) || diff_failed=1 fi export TARGET_SITES="shopify-australia shopify-x" @@ -534,6 +540,10 @@ steps: export BUILD_ENV="production" export COMMIT_SHA=${DRONE_COMMIT:0:10} echo "本次变更文件:" + if [ "$diff_failed" -eq 1 ]; then + echo "⚠️ 变更范围计算失败,回退为全量部署。" + changed_files="packages/__force_full_deploy__" + fi echo "$changed_files" full_build_changes=$(echo "$changed_files" | grep -E "^(package\.json|pnpm-lock\.yaml|pnpm-workspace\.yaml|turbo\.json|docker-compose.*\.ya?ml|packages/|patches/)" | wc -l) @@ -617,6 +627,17 @@ depends_on: - RC-frontend-monorepo-ci - PROD-frontend-monorepo-ci +trigger: + event: + - push + - promote + - rollback + branch: + - dev + - test + - release + - main + steps: - name: send-dingtalk-notification image: lddsb/drone-dingtalk-message @@ -638,15 +659,6 @@ steps: status: - success - failure - event: - - push - - promote - - rollback - branch: - - dev - - test - - release - - main volumes: - name: dingtalk-tpl -- 2.49.1