Skip to content

ci: 이미지 빌드를 CI의 병렬 job으로 옮겨 배포를 앞당김 - #481

Merged
chanwoo7 merged 1 commit into
developfrom
ci/parallel-image-build
Oct 3, 2026
Merged

chanwoo7 merged 1 commit into
developfrom
ci/parallel-image-build

Conversation

@chanwoo7

@chanwoo7 chanwoo7 commented Oct 3, 2026

Copy link
Copy Markdown
Member

main push 뒤 CI(약 7분) → Build Image(약 2분) → Deploy 순서로 돌던 것을, 이미지 빌드를 CI 안의 병렬 job으로 옮겨 배포를 약 2분 앞당깁니다.

  • CI(pr-check.yml)에 image job 추가
    • check와 나란히 돕니다. PR은 arm64 빌드만 하고, main push는 GHCR :<sha>로 푸시합니다.
    • packages: write는 이 job에만 줍니다(이전 build-image.yml은 워크플로 전체에 줬습니다).
  • build-image.yml 삭제, Deploy는 CI 결론을 받음
    • 이 레포 main push의 CI가 success(= check·image 모두 성공)일 때만 자동 배포합니다.
  • 수동 Deploy(재배포·롤백) 게이트 추가
    • 이미지가 테스트와 나란히 올라가 테스트에 실패한 커밋에도 생기므로, 예전처럼 "이미지가 있으면 CI 통과"에 기댈 수 없습니다.
    • 수동 실행이면 그 sha의 main push CI 성공을 gh api로 확인하고, 없으면 pull·migrate 전에 멈춥니다.
    • 실제 API로 확인: 성공한 main sha 2건 → 1건, develop 전용 sha·없는 sha → 0건
  • spec·문서: deploy-workflow.spec을 새 구조로 고치고 수동 게이트 반증을 추가했습니다. README 2종도 갱신했습니다.

플랜 대조

항목 상태
이미지 빌드를 CI와 병렬로 한 것
배포는 CI 전체 성공 뒤에만 한 것

검증

  • scripts spec 9 스위트 241건 통과(pre-push), 조건을 되돌리면 실패하는 것 확인
  • 머지 전에는 실제 동작을 볼 수 없습니다. 다음 main push(릴리즈)에서 image job 푸시 → Deploy 발화를 확인합니다.

main push 뒤 CI(약 7분) → Build Image(약 2분) → Deploy 순차라 릴리즈마다 배포가 늦었다. 빌드는 테스트 결과가 필요 없으므로
check와 나란히 돌리고, Deploy는 CI 전체 결론을 기다린다.

- pr-check.yml(CI)에 image job 추가: PR은 arm64 빌드만, main push는 GHCR :<sha> 푸시. packages:write는 이 job에만
- build-image.yml 삭제, deploy.yml은 CI의 workflow_run(이 레포 main push, 결론 success = check·image 모두 성공)을 받는다
- 수동 Deploy(재배포·롤백)는 그 sha의 main push CI 성공을 gh api로 확인한 뒤에만 진행한다
  - 이미지가 check와 나란히 올라가 테스트에 실패한 커밋에도 생기므로, 예전처럼 "이미지가 있으면 CI 통과"에 기댈 수 없다
  - 실제 API로 확인: 성공한 main sha 2건 → 1, develop 전용·없는 sha → 0
- deploy-workflow spec을 새 구조로 갱신하고 수동 실행 게이트 반증을 추가(조건을 되돌리면 2건 실패 확인), README 2종 갱신
@coderabbitai

coderabbitai Bot commented Oct 3, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Repository: CaQuick/caquick-be/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 043cd83d-660c-4e29-b902-c395a11492aa

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Oct 3, 2026

Copy link
Copy Markdown

🧹 knip — dead-code 리포트

Unused exported types (1)
전체 리포트
Unused exported types (1)
RateLimitPolicy  type  src/global/rate-limit/index.ts:4:8

청소 후보(오탐 가능) · 기준 docs/guide/architecture-conventions.md

@github-actions

github-actions Bot commented Oct 3, 2026

Copy link
Copy Markdown

🩺 NestJS Doctor — 90/100 (Excellent)

진단 470건 (error 12).

Category error warning info
architecture 1 1 42
correctness 0 261 0
performance 0 30 28
schema 0 0 75
security 11 21 0
architecture / security 상위 항목
  • error architecture/architecture/no-manual-instantiation: Manual instantiation of 'OutboxRepository' detected. Use dependency injection instead.
  • info architecture/architecture/no-barrel-export-internals: Barrel file re-exports internal type 'IAuditLogRepository'.
  • warning security/security/no-exposed-env-vars: Direct 'process.env.NODE_ENV' access in 'AuthController'. Use ConfigService instead.
  • warning security/security/require-guards-on-endpoints: Endpoint 'start' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'callback' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'refresh' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'logout' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'sellerLogin' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'sellerRefresh' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'sellerLogout' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'devIssueToken' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'adminLogin' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'adminRefresh' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'adminLogout' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'getJwks' has no @UseGuards() at class or method level.

오탐 포함 가능 · 기준 docs/guide/architecture-conventions.md

@github-actions

github-actions Bot commented Oct 3, 2026

Copy link
Copy Markdown

Coverage report

St.❔
Category Percentage Covered / Total
🟢 Statements 97.87% 10040/10258
🟢 Branches 92.27% 3772/4088
🟢 Functions 97.3% 2018/2074
🟢 Lines 98.48% 9135/9276

Test suite run success

3683 tests passing in 354 suites.

Report generated by 🧪jest coverage report action from f9b000d

@codecov

codecov Bot commented Oct 3, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@chanwoo7
chanwoo7 merged commit 877a697 into develop Oct 3, 2026
13 checks passed
@chanwoo7
chanwoo7 deleted the ci/parallel-image-build branch October 3, 2026 16:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant