From ded233e17a57404be3a175729ac768c112262de6 Mon Sep 17 00:00:00 2001 From: ChanYoungHan Date: Wed, 11 Jun 2025 10:34:06 +0900 Subject: [PATCH 01/10] =?UTF-8?q?=F0=9F=90=9B=20Change=20port=20each=20oth?= =?UTF-8?q?ers=20between=20apps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy-frontend.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deploy-frontend.yml b/.github/workflows/deploy-frontend.yml index 3d24e892..ecf22e3a 100644 --- a/.github/workflows/deploy-frontend.yml +++ b/.github/workflows/deploy-frontend.yml @@ -136,7 +136,7 @@ jobs: docker run -d \ --name moimjang-frontend-contents \ --restart unless-stopped \ - -p 3132:3000 \ + -p 3133:3000 \ ${{ env.ECR_REGISTRY }}-contents:$IMAGE_TAG echo "βœ… New contents container started successfully" @@ -144,7 +144,7 @@ jobs: run: | echo "πŸ” Performing health check for contents app..." sleep 10 - if curl -f http://localhost:3132 > /dev/null 2>&1; then + if curl -f http://localhost:3133 > /dev/null 2>&1; then echo "βœ… Contents app is healthy and responding" else echo "❌ Contents app health check failed" @@ -195,7 +195,7 @@ jobs: docker run -d \ --name moimjang-frontend-seller \ --restart unless-stopped \ - -p 3133:3000 \ + -p 3132:3000 \ ${{ env.ECR_REGISTRY }}-seller:$IMAGE_TAG echo "βœ… New seller container started successfully" @@ -203,7 +203,7 @@ jobs: run: | echo "πŸ” Performing health check for seller app..." sleep 10 - if curl -f http://localhost:3133 > /dev/null 2>&1; then + if curl -f http://localhost:3132 > /dev/null 2>&1; then echo "βœ… Seller app is healthy and responding" else echo "❌ Seller app health check failed" From e6b9643d65db5b7436964bb7774c3409d67d9aa1 Mon Sep 17 00:00:00 2001 From: ChanYoungHan Date: Wed, 11 Jun 2025 20:35:08 +0900 Subject: [PATCH 02/10] =?UTF-8?q?=F0=9F=A7=B1=20Modify=20condition=20of=20?= =?UTF-8?q?dev=20pr=20frontend?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/pr-frontend-dev.yml | 46 +++++++++++---------------- 1 file changed, 19 insertions(+), 27 deletions(-) diff --git a/.github/workflows/pr-frontend-dev.yml b/.github/workflows/pr-frontend-dev.yml index 91bfeae9..65673942 100644 --- a/.github/workflows/pr-frontend-dev.yml +++ b/.github/workflows/pr-frontend-dev.yml @@ -1,11 +1,11 @@ -name: Dev Frontend Build and Test +name: PR Frontend Build and Test - Dev on: - push: + pull_request: branches: [ dev ] paths: - 'frontend/**' - - '.github/workflows/dev-frontend.yml' + - '.github/workflows/pr-frontend-dev.yml' workflow_dispatch: # μˆ˜λ™ μ‹€ν–‰ λ²„νŠΌ ν™œμ„±ν™” inputs: force_build_all: @@ -17,7 +17,6 @@ on: jobs: # λ³€κ²½λœ μ•± 감지 detect-changes: - if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.force_build_all == 'false') runs-on: ubuntu-24.04 outputs: admin-changed: ${{ steps.changes.outputs.admin }} @@ -28,14 +27,11 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v4 - with: - fetch-depth: 2 # 이전 컀밋과 λΉ„κ΅ν•˜κΈ° μœ„ν•΄ - name: Detect changes uses: dorny/paths-filter@v3 id: changes with: - base: HEAD~1 filters: | admin: - 'frontend/apps/admin/**' @@ -48,13 +44,11 @@ jobs: # Admin μ•± λΉŒλ“œ 및 ν…ŒμŠ€νŠΈ build-admin: - needs: [detect-changes] + needs: detect-changes if: | - always() && ( - (github.event_name == 'workflow_dispatch' && github.event.inputs.force_build_all == 'true') || - (needs.detect-changes.result == 'success' && (needs.detect-changes.outputs.admin-changed == 'true' || needs.detect-changes.outputs.packages-changed == 'true')) || - needs.detect-changes.result == 'skipped' - ) + (github.event_name == 'workflow_dispatch' && github.event.inputs.force_build_all == 'true') || + needs.detect-changes.outputs.admin-changed == 'true' || + needs.detect-changes.outputs.packages-changed == 'true' runs-on: ubuntu-24.04 steps: @@ -115,13 +109,11 @@ jobs: # Contents μ•± λΉŒλ“œ 및 ν…ŒμŠ€νŠΈ build-contents: - needs: [detect-changes] + needs: detect-changes if: | - always() && ( - (github.event_name == 'workflow_dispatch' && github.event.inputs.force_build_all == 'true') || - (needs.detect-changes.result == 'success' && (needs.detect-changes.outputs.contents-changed == 'true' || needs.detect-changes.outputs.packages-changed == 'true')) || - needs.detect-changes.result == 'skipped' - ) + (github.event_name == 'workflow_dispatch' && github.event.inputs.force_build_all == 'true') || + needs.detect-changes.outputs.contents-changed == 'true' || + needs.detect-changes.outputs.packages-changed == 'true' runs-on: ubuntu-24.04 steps: @@ -182,13 +174,11 @@ jobs: # Seller μ•± λΉŒλ“œ 및 ν…ŒμŠ€νŠΈ build-seller: - needs: [detect-changes] + needs: detect-changes if: | - always() && ( - (github.event_name == 'workflow_dispatch' && github.event.inputs.force_build_all == 'true') || - (needs.detect-changes.result == 'success' && (needs.detect-changes.outputs.seller-changed == 'true' || needs.detect-changes.outputs.packages-changed == 'true')) || - needs.detect-changes.result == 'skipped' - ) + (github.event_name == 'workflow_dispatch' && github.event.inputs.force_build_all == 'true') || + needs.detect-changes.outputs.seller-changed == 'true' || + needs.detect-changes.outputs.packages-changed == 'true' runs-on: ubuntu-24.04 steps: @@ -256,7 +246,7 @@ jobs: steps: - name: Build Summary run: | - echo "πŸ”¨ Dev Frontend Build Summary:" + echo "πŸ”¨ Dev PR Frontend Build Summary:" echo "" if [[ "${{ needs.build-admin.result }}" == "success" ]]; then @@ -284,7 +274,9 @@ jobs: fi echo "" - echo "🎯 λΉŒλ“œ 트리거: ${{ github.event_name }}" if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + echo "🎯 λΉŒλ“œ 트리거: Manual Dispatch" echo "πŸ”§ κ°•μ œ 전체 λΉŒλ“œ: ${{ github.event.inputs.force_build_all }}" + else + echo "🎯 λΉŒλ“œ 트리거: Pull Request to dev branch" fi \ No newline at end of file From 8883f92af640f921a7e1a48379ef099f671e26fd Mon Sep 17 00:00:00 2001 From: ChanYoungHan Date: Wed, 11 Jun 2025 20:39:07 +0900 Subject: [PATCH 03/10] test: add nonexistent package to contents app for build failure testing --- frontend/apps/contents/package.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend/apps/contents/package.json b/frontend/apps/contents/package.json index c539baf8..3c261a8b 100644 --- a/frontend/apps/contents/package.json +++ b/frontend/apps/contents/package.json @@ -8,10 +8,13 @@ "start": "next start", "lint": "next lint" }, + "dependencies": { + "nonexistent-package-for-testing": "^999.999.999" + }, "devDependencies": { "@eslint/eslintrc": "^3", "eslint": "^9", "eslint-config-next": "15.1.8", "typescript": "^5" } -} +} \ No newline at end of file From 02db7b04328ff6311bd5660f7f5c623907cee103 Mon Sep 17 00:00:00 2001 From: ChanYoungHan Date: Wed, 11 Jun 2025 20:41:04 +0900 Subject: [PATCH 04/10] fix: remove nonexistent package from contents app to resolve build failure --- frontend/apps/contents/package.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/frontend/apps/contents/package.json b/frontend/apps/contents/package.json index 3c261a8b..02cdaabe 100644 --- a/frontend/apps/contents/package.json +++ b/frontend/apps/contents/package.json @@ -8,9 +8,6 @@ "start": "next start", "lint": "next lint" }, - "dependencies": { - "nonexistent-package-for-testing": "^999.999.999" - }, "devDependencies": { "@eslint/eslintrc": "^3", "eslint": "^9", From 3ea5983fe42a12bdd993d0fa2cd179974fd0a327 Mon Sep 17 00:00:00 2001 From: ChanYoungHan Date: Wed, 11 Jun 2025 20:48:11 +0900 Subject: [PATCH 05/10] Revert "fix: remove nonexistent package from contents app to resolve build failure" This reverts commit 02db7b04328ff6311bd5660f7f5c623907cee103. --- frontend/apps/contents/package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frontend/apps/contents/package.json b/frontend/apps/contents/package.json index 02cdaabe..3c261a8b 100644 --- a/frontend/apps/contents/package.json +++ b/frontend/apps/contents/package.json @@ -8,6 +8,9 @@ "start": "next start", "lint": "next lint" }, + "dependencies": { + "nonexistent-package-for-testing": "^999.999.999" + }, "devDependencies": { "@eslint/eslintrc": "^3", "eslint": "^9", From 93b52f9111920078d43d88b2c57b8eb75f1b6e95 Mon Sep 17 00:00:00 2001 From: ChanYoungHan Date: Wed, 11 Jun 2025 20:48:21 +0900 Subject: [PATCH 06/10] Revert "test: add nonexistent package to contents app for build failure testing" This reverts commit 8883f92af640f921a7e1a48379ef099f671e26fd. --- frontend/apps/contents/package.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/frontend/apps/contents/package.json b/frontend/apps/contents/package.json index 3c261a8b..c539baf8 100644 --- a/frontend/apps/contents/package.json +++ b/frontend/apps/contents/package.json @@ -8,13 +8,10 @@ "start": "next start", "lint": "next lint" }, - "dependencies": { - "nonexistent-package-for-testing": "^999.999.999" - }, "devDependencies": { "@eslint/eslintrc": "^3", "eslint": "^9", "eslint-config-next": "15.1.8", "typescript": "^5" } -} \ No newline at end of file +} From c9946adadd30ee3daf0982ba51d9e600d22aa2ce Mon Sep 17 00:00:00 2001 From: ChanYoungHan Date: Wed, 11 Jun 2025 20:50:24 +0900 Subject: [PATCH 07/10] Revert "Revert "test: add nonexistent package to contents app for build failure testing"" This reverts commit 93b52f9111920078d43d88b2c57b8eb75f1b6e95. --- frontend/apps/contents/package.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend/apps/contents/package.json b/frontend/apps/contents/package.json index c539baf8..3c261a8b 100644 --- a/frontend/apps/contents/package.json +++ b/frontend/apps/contents/package.json @@ -8,10 +8,13 @@ "start": "next start", "lint": "next lint" }, + "dependencies": { + "nonexistent-package-for-testing": "^999.999.999" + }, "devDependencies": { "@eslint/eslintrc": "^3", "eslint": "^9", "eslint-config-next": "15.1.8", "typescript": "^5" } -} +} \ No newline at end of file From 74e8b85881c73da8d28afa88d39e1a74545d7af6 Mon Sep 17 00:00:00 2001 From: ChanYoungHan Date: Wed, 11 Jun 2025 20:52:06 +0900 Subject: [PATCH 08/10] test --- frontend/apps/contents/package.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/frontend/apps/contents/package.json b/frontend/apps/contents/package.json index 3c261a8b..02cdaabe 100644 --- a/frontend/apps/contents/package.json +++ b/frontend/apps/contents/package.json @@ -8,9 +8,6 @@ "start": "next start", "lint": "next lint" }, - "dependencies": { - "nonexistent-package-for-testing": "^999.999.999" - }, "devDependencies": { "@eslint/eslintrc": "^3", "eslint": "^9", From a0f8969d97b07d918cc5fbec1703a886b98c8ae8 Mon Sep 17 00:00:00 2001 From: ChanYoungHan Date: Wed, 11 Jun 2025 21:00:08 +0900 Subject: [PATCH 09/10] refactor: remove unnecessary NodeJS setup and npm install from dev workflow - Docker build handles dependencies internally - Aligns with main workflow structure - Fixes npm cache dependency resolution errors --- .github/workflows/pr-frontend-dev.yml | 36 --------------------------- 1 file changed, 36 deletions(-) diff --git a/.github/workflows/pr-frontend-dev.yml b/.github/workflows/pr-frontend-dev.yml index 65673942..e6fbaa87 100644 --- a/.github/workflows/pr-frontend-dev.yml +++ b/.github/workflows/pr-frontend-dev.yml @@ -55,18 +55,6 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '18' - cache: 'npm' - cache-dependency-path: 'frontend/package-lock.json' - - - name: Install dependencies - run: | - cd frontend - npm ci --include-workspace-root --workspaces - - name: Build Admin App run: | cd frontend @@ -120,18 +108,6 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '18' - cache: 'npm' - cache-dependency-path: 'frontend/package-lock.json' - - - name: Install dependencies - run: | - cd frontend - npm ci --include-workspace-root --workspaces - - name: Build Contents App run: | cd frontend @@ -185,18 +161,6 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '18' - cache: 'npm' - cache-dependency-path: 'frontend/package-lock.json' - - - name: Install dependencies - run: | - cd frontend - npm ci --include-workspace-root --workspaces - - name: Build Seller App run: | cd frontend From 3a7e5d31ef181cba7983d3d657e88cfb5661ff05 Mon Sep 17 00:00:00 2001 From: ChanYoungHan Date: Wed, 11 Jun 2025 21:12:57 +0900 Subject: [PATCH 10/10] =?UTF-8?q?=F0=9F=8F=97=EF=B8=8F=20refactor:=20renam?= =?UTF-8?q?e=20workflow=20files=20to=20build-frontend=20for=20clarity?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...-frontend-dev.yml => build-frontend-dev.yml} | 6 +++--- .../{pr-frontend.yml => build-frontend.yml} | 4 ++-- backend/webapp/repositories.py | 17 +++++++++++++++++ 3 files changed, 22 insertions(+), 5 deletions(-) rename .github/workflows/{pr-frontend-dev.yml => build-frontend-dev.yml} (98%) rename .github/workflows/{pr-frontend.yml => build-frontend.yml} (98%) diff --git a/.github/workflows/pr-frontend-dev.yml b/.github/workflows/build-frontend-dev.yml similarity index 98% rename from .github/workflows/pr-frontend-dev.yml rename to .github/workflows/build-frontend-dev.yml index e6fbaa87..20aaa854 100644 --- a/.github/workflows/pr-frontend-dev.yml +++ b/.github/workflows/build-frontend-dev.yml @@ -1,11 +1,11 @@ -name: PR Frontend Build and Test - Dev +name: Build Frontend - Dev on: pull_request: branches: [ dev ] paths: - 'frontend/**' - - '.github/workflows/pr-frontend-dev.yml' + - '.github/workflows/build-frontend-dev.yml' workflow_dispatch: # μˆ˜λ™ μ‹€ν–‰ λ²„νŠΌ ν™œμ„±ν™” inputs: force_build_all: @@ -210,7 +210,7 @@ jobs: steps: - name: Build Summary run: | - echo "πŸ”¨ Dev PR Frontend Build Summary:" + echo "πŸ”¨ Dev Frontend Build Summary:" echo "" if [[ "${{ needs.build-admin.result }}" == "success" ]]; then diff --git a/.github/workflows/pr-frontend.yml b/.github/workflows/build-frontend.yml similarity index 98% rename from .github/workflows/pr-frontend.yml rename to .github/workflows/build-frontend.yml index 7c823f53..d1972b5f 100644 --- a/.github/workflows/pr-frontend.yml +++ b/.github/workflows/build-frontend.yml @@ -1,11 +1,11 @@ -name: PR Frontend Build and Push +name: Build Frontend - Main on: pull_request: branches: [ main ] paths: - 'frontend/**' - - '.github/workflows/pr-frontend.yml' + - '.github/workflows/build-frontend.yml' env: ECR_REGISTRY: public.ecr.aws/x2l9m6x8/selfscape/moimjang diff --git a/backend/webapp/repositories.py b/backend/webapp/repositories.py index 6ad4de3d..f09b6ce7 100644 --- a/backend/webapp/repositories.py +++ b/backend/webapp/repositories.py @@ -753,6 +753,23 @@ def is_object_exists(self, object_key: str, file_size: int) -> bool: except S3Error: return False + def get_presigned_url( + self, object_key: str, expires: timedelta = timedelta(days=1) + ) -> str: + try: + stat = self.client.stat_object(self.bucket_name, object_key) + content_type = stat.content_type + response_headers = {"response-content-type": content_type} + return self.client.presigned_get_object( + self.bucket_name, + object_key, + expires=expires, + response_headers=response_headers, # type: ignore + ) + except S3Error as e: + logger.error(f"Failed to generate presigned URL: {str(e)}") + return "" + def get_img_proxy_url(self, object_path: str) -> str: """ S3 였브젝트 경둜λ₯Ό 이미지 ν”„λ‘μ‹œ URL둜 λ³€ν™˜ν•©λ‹ˆλ‹€.