From 5be2e91d0ace397dcf66babc627799db2b71a5aa Mon Sep 17 00:00:00 2001 From: shanshanzhong Date: Thu, 25 Sep 2025 09:53:01 -0700 Subject: [PATCH] i1 --- .gitea/workflows/docker.yml | 63 ++++++++++++++++++++++++++++++++----- 1 file changed, 55 insertions(+), 8 deletions(-) diff --git a/.gitea/workflows/docker.yml b/.gitea/workflows/docker.yml index 6c345bb..f497aa2 100644 --- a/.gitea/workflows/docker.yml +++ b/.gitea/workflows/docker.yml @@ -52,12 +52,59 @@ jobs: - name: Install dependencies (bun) run: bun install - - name: Run Build Project (turbo via bun) - run: bun run build + - name: Decide build target (admin/user/both) + run: | + set -e + COMMIT_MSG="${{ github.event.head_commit.message }}" + BUILD_TARGET="both" + if echo "$COMMIT_MSG" | grep -qi "\[admin-only\]"; then + BUILD_TARGET="admin" + elif echo "$COMMIT_MSG" | grep -qi "\[user-only\]"; then + BUILD_TARGET="user" + else + if git rev-parse HEAD^ >/dev/null 2>&1; then + RANGE="HEAD^..HEAD" + else + RANGE="$(git rev-list --max-parents=0 HEAD)..HEAD" + fi + CHANGED=$(git diff --name-only $RANGE || true) + ADMIN_MATCH=$(echo "$CHANGED" | grep -E '^(apps/admin/|docker/ppanel-admin-web/)' || true) + USER_MATCH=$(echo "$CHANGED" | grep -E '^(apps/user/|docker/ppanel-user-web/)' || true) + PACKAGE_MATCH=$(echo "$CHANGED" | grep -E '^(packages/|turbo.json|package.json|bun.lock)' || true) + if [ -n "$PACKAGE_MATCH" ]; then + BUILD_TARGET="both" + else + if [ -n "$ADMIN_MATCH" ] && [ -z "$USER_MATCH" ]; then BUILD_TARGET="admin"; fi + if [ -n "$USER_MATCH" ] && [ -z "$ADMIN_MATCH" ]; then BUILD_TARGET="user"; fi + if [ -n "$ADMIN_MATCH" ] && [ -n "$USER_MATCH" ]; then BUILD_TARGET="both"; fi + fi + fi + echo "BUILD_TARGET=$BUILD_TARGET" >> $GITHUB_ENV + echo "Decided BUILD_TARGET=$BUILD_TARGET" - - name: Run Build Docker - run: make build + - name: Build Admin (turbo via bun) + if: env.BUILD_TARGET == 'admin' || env.BUILD_TARGET == 'both' + run: bun run build --filter=apps/admin + - name: Build User (turbo via bun) + if: env.BUILD_TARGET == 'user' || env.BUILD_TARGET == 'both' + run: bun run build --filter=apps/user + + - name: Build Docker (admin) + if: env.BUILD_TARGET == 'admin' || env.BUILD_TARGET == 'both' + run: make build-admin + + - name: Build Docker (user) + if: env.BUILD_TARGET == 'user' || env.BUILD_TARGET == 'both' + run: make build-user + + - name: Login to Docker Registry + env: + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + run: | + echo "$DOCKER_PASSWORD" | docker login "$DOCKER_REGISTRY" -u "$DOCKER_USERNAME" --password-stdin + - name: Push Docker Images run: make push @@ -69,8 +116,8 @@ jobs: chat: ${{ env.TELEGRAM_CHAT_ID }} status: ${{ job.status }} title: ✅ 构建成功 - message: ${{ github.repository }} 构建成功 · 分支: ${{ github.ref }} · 提1交: ${{ github.sha }} - footer: 触发者: ${{ github.actor }} + message: "${{ gitea.repository }} 构建成功 · 分支: ${{ gitea.ref }} · 提交: ${{ gitea.sha }}" + footer: "触发者: ${{ gitea.actor }}" - name: Notify failure to Telegram uses: chapvic/telegram-notify@master @@ -80,5 +127,5 @@ jobs: chat: ${{ env.TELEGRAM_CHAT_ID }} status: ${{ job.status }} title: ❌ 构建失败 - message: ${{ github.repository }} 构建失败 · 分支: ${{ github.ref }} · 提交: ${{ github.sha }} - footer: 触发者: ${{ github.actor }} + message: "${{ gitea.repository }} 构建失败 · 分支: ${{ gitea.ref }} · 提交: ${{ gitea.sha }}" + footer: "触发者: ${{ gitea.actor }}"