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: