From b403450c4d5ac256ded98f16ecfcd84b6086d2f6 Mon Sep 17 00:00:00 2001 From: manNomi Date: Mon, 16 Feb 2026 18:46:54 +0900 Subject: [PATCH 1/3] =?UTF-8?q?chore:=20main-stage/release-prod=20?= =?UTF-8?q?=EB=B0=B0=ED=8F=AC=20=EC=9B=8C=ED=81=AC=ED=94=8C=EB=A1=9C?= =?UTF-8?q?=EC=9A=B0=EB=A5=BC=20web/admin=20=EA=B3=B5=ED=86=B5=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=ED=86=B5=ED=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy-stage.yml | 209 +++++++++++++++++++++++++++++ .github/workflows/release.yml | 170 ++++++++++++++++++++--- turbo.json | 2 +- 3 files changed, 363 insertions(+), 18 deletions(-) create mode 100644 .github/workflows/deploy-stage.yml diff --git a/.github/workflows/deploy-stage.yml b/.github/workflows/deploy-stage.yml new file mode 100644 index 00000000..fb80a70a --- /dev/null +++ b/.github/workflows/deploy-stage.yml @@ -0,0 +1,209 @@ +name: Stage Deployment + +on: + push: + branches: [main] + +jobs: + detect-changes: + name: Detect Changes + runs-on: ubuntu-latest + outputs: + web: ${{ steps.filter.outputs.web }} + admin: ${{ steps.filter.outputs.admin }} + root: ${{ steps.filter.outputs.root }} + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Check changed files + uses: dorny/paths-filter@v3 + id: filter + with: + filters: | + web: + - 'apps/web/**' + admin: + - 'apps/admin/**' + root: + - 'package.json' + - 'pnpm-lock.yaml' + - 'pnpm-workspace.yaml' + - 'turbo.json' + - '.github/workflows/**' + + deploy-web-stage: + name: Deploy Web (Stage) + runs-on: ubuntu-latest + needs: detect-changes + if: needs.detect-changes.outputs.web == 'true' || needs.detect-changes.outputs.root == 'true' + env: + VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID_WEB_STAGE }} + TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} + TURBO_TEAM: ${{ secrets.TURBO_TEAM }} + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install pnpm + uses: pnpm/action-setup@v3 + with: + version: 9 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "22.x" + cache: "pnpm" + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Install Vercel CLI + run: pnpm add --global vercel@latest + + - name: Turbo cached build (web) + run: pnpm turbo run build --filter=@solid-connect/web + + - name: Prepare Vercel project metadata (web) + run: | + rm -rf .vercel + mkdir -p .vercel-ci + working-directory: apps/web + + - name: Pull Vercel environment (web stage) + run: vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }} 2>&1 | tee .vercel-ci/pull.log + working-directory: apps/web + + - name: Build prebuilt artifacts (web stage) + run: vercel build --yes --target=preview --token=${{ secrets.VERCEL_TOKEN }} 2>&1 | tee .vercel-ci/build.log + working-directory: apps/web + + - name: Verify prebuilt artifacts (web) + run: | + test -f .vercel/output/config.json + test -d .vercel/output/functions + working-directory: apps/web + + - name: Deploy prebuilt artifacts (web stage) + id: deploy_web + run: | + set -euo pipefail + vercel deploy --prebuilt --target=preview --token=${{ secrets.VERCEL_TOKEN }} 2>&1 | tee .vercel-ci/deploy.log + URL=$(grep -Eo 'https://[^ ]+\.vercel\.app' .vercel-ci/deploy.log | head -n 1) + if [ -z "$URL" ]; then + echo "Failed to parse deployment URL from Vercel output" >&2 + exit 1 + fi + echo "url=$URL" >> "$GITHUB_OUTPUT" + { + echo "## Web Stage Deployment" + echo "- Status: success" + echo "- URL: $URL" + } >> "$GITHUB_STEP_SUMMARY" + working-directory: apps/web + + - name: Append failure summary (web stage) + if: failure() + run: | + { + echo "## Web Stage Deployment Failed" + echo "- Inspect artifact: web-stage-vercel-logs" + } >> "$GITHUB_STEP_SUMMARY" + + - name: Upload Vercel logs (web stage) + if: always() + uses: actions/upload-artifact@v4 + with: + name: web-stage-vercel-logs + path: apps/web/.vercel-ci/*.log + if-no-files-found: ignore + + deploy-admin-stage: + name: Deploy Admin (Stage) + runs-on: ubuntu-latest + needs: detect-changes + if: needs.detect-changes.outputs.admin == 'true' || needs.detect-changes.outputs.root == 'true' + env: + VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID_ADMIN_STAGE }} + TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} + TURBO_TEAM: ${{ secrets.TURBO_TEAM }} + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install pnpm + uses: pnpm/action-setup@v3 + with: + version: 9 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "22.x" + cache: "pnpm" + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Install Vercel CLI + run: pnpm add --global vercel@latest + + - name: Turbo cached build (admin) + run: pnpm turbo run build --filter=@solid-connect/admin + + - name: Prepare Vercel project metadata (admin) + run: | + rm -rf .vercel + mkdir -p .vercel-ci + working-directory: apps/admin + + - name: Pull Vercel environment (admin stage) + run: vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }} 2>&1 | tee .vercel-ci/pull.log + working-directory: apps/admin + + - name: Build prebuilt artifacts (admin stage) + run: vercel build --yes --target=preview --token=${{ secrets.VERCEL_TOKEN }} 2>&1 | tee .vercel-ci/build.log + working-directory: apps/admin + + - name: Verify prebuilt artifacts (admin) + run: | + test -f .vercel/output/config.json + test -d .vercel/output/functions + working-directory: apps/admin + + - name: Deploy prebuilt artifacts (admin stage) + id: deploy_admin + run: | + set -euo pipefail + vercel deploy --prebuilt --target=preview --token=${{ secrets.VERCEL_TOKEN }} 2>&1 | tee .vercel-ci/deploy.log + URL=$(grep -Eo 'https://[^ ]+\.vercel\.app' .vercel-ci/deploy.log | head -n 1) + if [ -z "$URL" ]; then + echo "Failed to parse deployment URL from Vercel output" >&2 + exit 1 + fi + echo "url=$URL" >> "$GITHUB_OUTPUT" + { + echo "## Admin Stage Deployment" + echo "- Status: success" + echo "- URL: $URL" + } >> "$GITHUB_STEP_SUMMARY" + working-directory: apps/admin + + - name: Append failure summary (admin stage) + if: failure() + run: | + { + echo "## Admin Stage Deployment Failed" + echo "- Inspect artifact: admin-stage-vercel-logs" + } >> "$GITHUB_STEP_SUMMARY" + + - name: Upload Vercel logs (admin stage) + if: always() + uses: actions/upload-artifact@v4 + with: + name: admin-stage-vercel-logs + path: apps/admin/.vercel-ci/*.log + if-no-files-found: ignore diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cdae4556..e79f73ce 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,8 +5,6 @@ permissions: env: VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} - VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} - VERCEL_ENV: production on: workflow_dispatch: @@ -35,10 +33,14 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} deploy_production: + name: Deploy Web (Production) runs-on: ubuntu-latest needs: create_release env: VERSION_TAG: ${{ needs.generate_tag.outputs.version }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID_WEB_PROD }} + TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} + TURBO_TEAM: ${{ secrets.TURBO_TEAM }} steps: - uses: actions/checkout@v3 @@ -47,27 +49,161 @@ jobs: with: version: 9 + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "22.x" + cache: "pnpm" + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Install Vercel CLI + run: pnpm add --global vercel@latest + + - name: Turbo cached build (web) + run: pnpm turbo run build --filter=@solid-connect/web + + - name: Prepare Vercel project metadata (web) + run: | + rm -rf .vercel + mkdir -p .vercel-ci + working-directory: apps/web + + - name: Pull Vercel Environment Information (web) + run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }} 2>&1 | tee .vercel-ci/pull.log + working-directory: apps/web + + - name: Build Project Artifacts (web) + run: vercel build --yes --target=production --token=${{ secrets.VERCEL_TOKEN }} 2>&1 | tee .vercel-ci/build.log + working-directory: apps/web + + - name: Verify prebuilt artifacts (web) + run: | + test -f .vercel/output/config.json + test -d .vercel/output/functions + working-directory: apps/web + + - name: Deploy Project Artifacts to Vercel (web) + id: deploy_web + run: | + set -euo pipefail + vercel deploy --prebuilt --target=production --token=${{ secrets.VERCEL_TOKEN }} 2>&1 | tee .vercel-ci/deploy.log + URL=$(grep -Eo 'https://[^ ]+\.vercel\.app' .vercel-ci/deploy.log | head -n 1) + if [ -z "$URL" ]; then + echo "Failed to parse web deployment URL from Vercel output" >&2 + exit 1 + fi + { + echo "## Web Production Deployment" + echo "- Version: $VERSION_TAG" + echo "- URL: $URL" + } >> "$GITHUB_STEP_SUMMARY" + working-directory: apps/web + + - name: Append failure summary (web production) + if: failure() + run: | + { + echo "## Web Production Deployment Failed" + echo "- Inspect artifact: web-production-vercel-logs" + } >> "$GITHUB_STEP_SUMMARY" + + - name: Upload Vercel logs (web production) + if: always() + uses: actions/upload-artifact@v4 + with: + name: web-production-vercel-logs + path: apps/web/.vercel-ci/*.log + if-no-files-found: ignore + + - name: Output Tag Version + run: echo "Web deployment completed for version $VERSION_TAG" + + deploy_admin_production: + name: Deploy Admin (Production) + runs-on: ubuntu-latest + needs: create_release + env: + VERSION_TAG: ${{ needs.generate_tag.outputs.version }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID_ADMIN_PROD }} + TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} + TURBO_TEAM: ${{ secrets.TURBO_TEAM }} + steps: + - uses: actions/checkout@v3 + + - name: Install pnpm + uses: pnpm/action-setup@v3 + with: + version: 9 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "22.x" + cache: "pnpm" + + - name: Install dependencies + run: pnpm install --frozen-lockfile + - name: Install Vercel CLI run: pnpm add --global vercel@latest - - name: Remove existing .vercel directory - run: rm -rf .vercel + - name: Turbo cached build (admin) + run: pnpm turbo run build --filter=@solid-connect/admin + + - name: Prepare Vercel project metadata (admin) + run: | + rm -rf .vercel + mkdir -p .vercel-ci + working-directory: apps/admin + + - name: Pull Vercel Environment Information (admin) + run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }} 2>&1 | tee .vercel-ci/pull.log + working-directory: apps/admin - - name: Pull Vercel Environment Information - run: vercel pull --yes --environment=${{ env.VERCEL_ENV }} --token=${{ secrets.VERCEL_TOKEN }} + - name: Build Project Artifacts (admin) + run: vercel build --yes --target=production --token=${{ secrets.VERCEL_TOKEN }} 2>&1 | tee .vercel-ci/build.log + working-directory: apps/admin - - name: Build Project Artifacts + - name: Verify prebuilt artifacts (admin) run: | - vercel build \ - --yes \ - --target=${{ env.VERCEL_ENV }} \ - --build-env NEXT_PUBLIC_WEB_URL=https://www.solid-connection.com \ - --build-env NEXT_PUBLIC_API_SERVER_URL=https://api.solid-connection.com \ - --build-env NEXT_PUBLIC_KAKAO_JS_KEY=b285223d3e57a6820552018b93805658 \ - --token=${{ secrets.VERCEL_TOKEN }} + test -f .vercel/output/config.json + test -d .vercel/output/functions + working-directory: apps/admin - - name: Deploy Project Artifacts to Vercel - run: vercel deploy --prebuilt --target=${{ env.VERCEL_ENV }} --token=${{ secrets.VERCEL_TOKEN }} + - name: Deploy Project Artifacts to Vercel (admin) + id: deploy_admin + run: | + set -euo pipefail + vercel deploy --prebuilt --target=production --token=${{ secrets.VERCEL_TOKEN }} 2>&1 | tee .vercel-ci/deploy.log + URL=$(grep -Eo 'https://[^ ]+\.vercel\.app' .vercel-ci/deploy.log | head -n 1) + if [ -z "$URL" ]; then + echo "Failed to parse admin deployment URL from Vercel output" >&2 + exit 1 + fi + { + echo "## Admin Production Deployment" + echo "- Version: $VERSION_TAG" + echo "- URL: $URL" + } >> "$GITHUB_STEP_SUMMARY" + working-directory: apps/admin + + - name: Append failure summary (admin production) + if: failure() + run: | + { + echo "## Admin Production Deployment Failed" + echo "- Inspect artifact: admin-production-vercel-logs" + } >> "$GITHUB_STEP_SUMMARY" + + - name: Upload Vercel logs (admin production) + if: always() + uses: actions/upload-artifact@v4 + with: + name: admin-production-vercel-logs + path: apps/admin/.vercel-ci/*.log + if-no-files-found: ignore - name: Output Tag Version - run: echo "Deployment completed for version $VERSION_TAG" + run: echo "Admin deployment completed for version $VERSION_TAG" diff --git a/turbo.json b/turbo.json index f2f03b7e..49171f7d 100644 --- a/turbo.json +++ b/turbo.json @@ -4,7 +4,7 @@ "tasks": { "build": { "dependsOn": ["^build"], - "outputs": ["dist/**", ".output/**"], + "outputs": ["dist/**", ".output/**", ".vercel/output/**"], "env": ["NODE_ENV", "NEXT_PUBLIC_*"] }, "@solid-connect/web#build": { From f1c0b1c0cee2c6c29aa9b28fb8c5ae803ceba41b Mon Sep 17 00:00:00 2001 From: manNomi Date: Mon, 16 Feb 2026 19:04:00 +0900 Subject: [PATCH 2/3] =?UTF-8?q?chore:=20prod=20=EB=B0=B0=ED=8F=AC=EB=A5=BC?= =?UTF-8?q?=20main=EC=97=90=EC=84=9C=20release=20=EC=8A=B9=EA=B2=A9=20?= =?UTF-8?q?=EB=B0=A9=EC=8B=9D=EC=9C=BC=EB=A1=9C=20=ED=86=B5=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/release.yml | 206 ++++++++-------------------------- 1 file changed, 44 insertions(+), 162 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e79f73ce..295a78b7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,11 +1,8 @@ -name: Build and Vercel Production Deployment +name: Promote Main to Release permissions: contents: write -env: - VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} - on: workflow_dispatch: @@ -23,8 +20,8 @@ jobs: - uses: actions/checkout@v3 with: fetch-depth: 0 + - name: Create Release - id: create_release uses: ncipollo/release-action@v1 with: tag: "v${{ needs.generate_tag.outputs.version }}" @@ -32,178 +29,63 @@ jobs: body: "Automated release created for build v${{ needs.generate_tag.outputs.version }}" token: ${{ secrets.GITHUB_TOKEN }} - deploy_production: - name: Deploy Web (Production) + promote_release_branch: + name: Promote main -> release runs-on: ubuntu-latest needs: create_release - env: - VERSION_TAG: ${{ needs.generate_tag.outputs.version }} - VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID_WEB_PROD }} - TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} - TURBO_TEAM: ${{ secrets.TURBO_TEAM }} steps: - - uses: actions/checkout@v3 - - - name: Install pnpm - uses: pnpm/action-setup@v3 + - name: Checkout repository + uses: actions/checkout@v4 with: - version: 9 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: "22.x" - cache: "pnpm" - - - name: Install dependencies - run: pnpm install --frozen-lockfile - - - name: Install Vercel CLI - run: pnpm add --global vercel@latest - - - name: Turbo cached build (web) - run: pnpm turbo run build --filter=@solid-connect/web - - - name: Prepare Vercel project metadata (web) - run: | - rm -rf .vercel - mkdir -p .vercel-ci - working-directory: apps/web - - - name: Pull Vercel Environment Information (web) - run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }} 2>&1 | tee .vercel-ci/pull.log - working-directory: apps/web - - - name: Build Project Artifacts (web) - run: vercel build --yes --target=production --token=${{ secrets.VERCEL_TOKEN }} 2>&1 | tee .vercel-ci/build.log - working-directory: apps/web - - - name: Verify prebuilt artifacts (web) - run: | - test -f .vercel/output/config.json - test -d .vercel/output/functions - working-directory: apps/web + fetch-depth: 0 - - name: Deploy Project Artifacts to Vercel (web) - id: deploy_web + - name: Promote main branch to release branch run: | set -euo pipefail - vercel deploy --prebuilt --target=production --token=${{ secrets.VERCEL_TOKEN }} 2>&1 | tee .vercel-ci/deploy.log - URL=$(grep -Eo 'https://[^ ]+\.vercel\.app' .vercel-ci/deploy.log | head -n 1) - if [ -z "$URL" ]; then - echo "Failed to parse web deployment URL from Vercel output" >&2 - exit 1 - fi - { - echo "## Web Production Deployment" - echo "- Version: $VERSION_TAG" - echo "- URL: $URL" - } >> "$GITHUB_STEP_SUMMARY" - working-directory: apps/web - - - name: Append failure summary (web production) - if: failure() - run: | - { - echo "## Web Production Deployment Failed" - echo "- Inspect artifact: web-production-vercel-logs" - } >> "$GITHUB_STEP_SUMMARY" - - - name: Upload Vercel logs (web production) - if: always() - uses: actions/upload-artifact@v4 - with: - name: web-production-vercel-logs - path: apps/web/.vercel-ci/*.log - if-no-files-found: ignore - - name: Output Tag Version - run: echo "Web deployment completed for version $VERSION_TAG" + git fetch origin main + git fetch origin release || true - deploy_admin_production: - name: Deploy Admin (Production) - runs-on: ubuntu-latest - needs: create_release - env: - VERSION_TAG: ${{ needs.generate_tag.outputs.version }} - VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID_ADMIN_PROD }} - TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} - TURBO_TEAM: ${{ secrets.TURBO_TEAM }} - steps: - - uses: actions/checkout@v3 - - - name: Install pnpm - uses: pnpm/action-setup@v3 - with: - version: 9 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: "22.x" - cache: "pnpm" - - - name: Install dependencies - run: pnpm install --frozen-lockfile - - - name: Install Vercel CLI - run: pnpm add --global vercel@latest - - - name: Turbo cached build (admin) - run: pnpm turbo run build --filter=@solid-connect/admin - - - name: Prepare Vercel project metadata (admin) - run: | - rm -rf .vercel - mkdir -p .vercel-ci - working-directory: apps/admin + MAIN_SHA=$(git rev-parse origin/main) - - name: Pull Vercel Environment Information (admin) - run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }} 2>&1 | tee .vercel-ci/pull.log - working-directory: apps/admin + if git show-ref --verify --quiet refs/remotes/origin/release; then + RELEASE_SHA=$(git rev-parse origin/release) + else + RELEASE_SHA="" + fi - - name: Build Project Artifacts (admin) - run: vercel build --yes --target=production --token=${{ secrets.VERCEL_TOKEN }} 2>&1 | tee .vercel-ci/build.log - working-directory: apps/admin + if [ -z "$RELEASE_SHA" ]; then + git push origin origin/main:refs/heads/release + { + echo "## Release Promotion" + echo "- Status: success (release branch created)" + echo "- Promoted main SHA: $MAIN_SHA" + echo "- Target branch: release" + echo "- Note: Vercel production deploy is triggered by release branch update" + } >> "$GITHUB_STEP_SUMMARY" + exit 0 + fi - - name: Verify prebuilt artifacts (admin) - run: | - test -f .vercel/output/config.json - test -d .vercel/output/functions - working-directory: apps/admin + if [ "$MAIN_SHA" = "$RELEASE_SHA" ]; then + { + echo "## Release Promotion" + echo "- Status: skipped (release is already up to date)" + echo "- main: $MAIN_SHA" + } >> "$GITHUB_STEP_SUMMARY" + exit 0 + fi - - name: Deploy Project Artifacts to Vercel (admin) - id: deploy_admin - run: | - set -euo pipefail - vercel deploy --prebuilt --target=production --token=${{ secrets.VERCEL_TOKEN }} 2>&1 | tee .vercel-ci/deploy.log - URL=$(grep -Eo 'https://[^ ]+\.vercel\.app' .vercel-ci/deploy.log | head -n 1) - if [ -z "$URL" ]; then - echo "Failed to parse admin deployment URL from Vercel output" >&2 + if ! git merge-base --is-ancestor origin/release origin/main; then + echo "release branch is not an ancestor of main. Resolve release history before promotion." >&2 exit 1 fi - { - echo "## Admin Production Deployment" - echo "- Version: $VERSION_TAG" - echo "- URL: $URL" - } >> "$GITHUB_STEP_SUMMARY" - working-directory: apps/admin - - name: Append failure summary (admin production) - if: failure() - run: | + git push origin origin/main:refs/heads/release + { - echo "## Admin Production Deployment Failed" - echo "- Inspect artifact: admin-production-vercel-logs" + echo "## Release Promotion" + echo "- Status: success" + echo "- Promoted main SHA: $MAIN_SHA" + echo "- Target branch: release" + echo "- Note: Vercel production deploy is triggered by release branch update" } >> "$GITHUB_STEP_SUMMARY" - - - name: Upload Vercel logs (admin production) - if: always() - uses: actions/upload-artifact@v4 - with: - name: admin-production-vercel-logs - path: apps/admin/.vercel-ci/*.log - if-no-files-found: ignore - - - name: Output Tag Version - run: echo "Admin deployment completed for version $VERSION_TAG" From 134f642d9ecf41541bfabf1ecb2e8e88aadf250a Mon Sep 17 00:00:00 2001 From: manNomi Date: Mon, 16 Feb 2026 19:11:09 +0900 Subject: [PATCH 3/3] =?UTF-8?q?chore:=20=ED=8C=A8=ED=82=A4=EC=A7=80=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20=EC=8B=9C=20stage=20=EB=B0=B0=ED=8F=AC=20?= =?UTF-8?q?=ED=8A=B8=EB=A6=AC=EA=B1=B0=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy-stage.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy-stage.yml b/.github/workflows/deploy-stage.yml index fb80a70a..4ca30ba1 100644 --- a/.github/workflows/deploy-stage.yml +++ b/.github/workflows/deploy-stage.yml @@ -11,6 +11,7 @@ jobs: outputs: web: ${{ steps.filter.outputs.web }} admin: ${{ steps.filter.outputs.admin }} + shared: ${{ steps.filter.outputs.shared }} root: ${{ steps.filter.outputs.root }} steps: - name: Checkout repository @@ -25,6 +26,8 @@ jobs: - 'apps/web/**' admin: - 'apps/admin/**' + shared: + - 'packages/**' root: - 'package.json' - 'pnpm-lock.yaml' @@ -36,7 +39,7 @@ jobs: name: Deploy Web (Stage) runs-on: ubuntu-latest needs: detect-changes - if: needs.detect-changes.outputs.web == 'true' || needs.detect-changes.outputs.root == 'true' + if: needs.detect-changes.outputs.web == 'true' || needs.detect-changes.outputs.shared == 'true' || needs.detect-changes.outputs.root == 'true' env: VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID_WEB_STAGE }} @@ -124,7 +127,7 @@ jobs: name: Deploy Admin (Stage) runs-on: ubuntu-latest needs: detect-changes - if: needs.detect-changes.outputs.admin == 'true' || needs.detect-changes.outputs.root == 'true' + if: needs.detect-changes.outputs.admin == 'true' || needs.detect-changes.outputs.shared == 'true' || needs.detect-changes.outputs.root == 'true' env: VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID_ADMIN_STAGE }}