Skip to content

[πŸŽ‰deploy] CI/CD ν…ŒμŠ€νŠΈ μ§„ν–‰ #11

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 306 commits into from

Conversation

junggyo1020
Copy link
Contributor

@junggyo1020 junggyo1020 commented Mar 25, 2025

βš™οΈ ISSUE

  • closed #

πŸ“„ Work Description

  • CI/CD 배포 μžλ™ν™” ν…ŒμŠ€νŠΈλ₯Ό μ§„ν–‰ν•©λ‹ˆλ‹€.

진행상황

CI & CD 둜직 μ •μƒμ μœΌλ‘œ μ‹€ν–‰ 확인

image

μ»¨ν…Œμ΄λ„ˆ μ •μƒμ μœΌλ‘œ μ‹€ν–‰ 확인

image

βœ… PR check list

  • Reviewers
  • Assignees
  • Labels

@junggyo1020 junggyo1020 added πŸŽ‰deploy CI/CD κ΄€λ ¨ μ½”λ“œ μˆ˜μ • 및 μΆ”κ°€ πŸΆμ •κ΅πŸΆ labels Mar 25, 2025
@junggyo1020 junggyo1020 self-assigned this Mar 25, 2025
μ„œλ²„ λ‚΄λΆ€ 였λ₯˜ 및 κ²Œμ΄νŠΈμ›¨μ΄ κ΄€λ ¨ μ˜ˆμ™Έλ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ μ „μ—­ μ—λŸ¬ μ½”λ“œ μ—΄κ±°ν˜• κ΅¬ν˜„.
곡톡 접두사λ₯Ό ν¬ν•¨ν•œ μ—λŸ¬ λ©”μ‹œμ§€ ν˜•μ‹μ„ μ œκ³΅ν•¨.
BaseException 및 μ£Όμš” μ‹œμŠ€ν…œ μ˜ˆμ™Έ(501, 502, 503, 504 λ“±)λ₯Ό μ²˜λ¦¬ν•˜λŠ” μ „μ—­ μ˜ˆμ™Έ ν•Έλ“€λŸ¬ μ •μ˜.
각 μ˜ˆμ™Έμ— λŒ€ν•΄ GlobalErrorCodeλ₯Ό λ§€ν•‘ν•˜μ—¬ μΌκ΄€λœ μ—λŸ¬ 응닡을 λ°˜ν™˜ν•˜λ„λ‘ ꡬ성함.
성곡 응닡에 μ‚¬μš©λ  HTTP μƒνƒœ μ½”λ“œμ™€ λ©”μ‹œμ§€λ₯Ό μ œκ³΅ν•˜λŠ” 곡톡 μΈν„°νŽ˜μ΄μŠ€ 생성.
성곡 κ²°κ³Όλ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ— μ „λ‹¬ν•˜κΈ° μœ„ν•œ 곡톡 응닡 객체 μ •μ˜.
HttpStatusλ₯Ό int둜 λ³€ν™˜ν•˜μ—¬ 응닡 ν˜•μ‹μ„ ν‘œμ€€ν™”ν•˜κ³ , κ²°κ³Ό λ°μ΄ν„°λŠ” null일 경우 μ œμ™Έλ˜λ„λ‘ 섀정함.
- 이름 null ν—ˆμš© λΆˆκ°€, μ΅œλŒ€ 길이 초과, ν˜•μ‹ 였λ₯˜μ— λŒ€ν•œ μ—λŸ¬ μ½”λ“œ μΆ”κ°€
- 곡톡 λ©”μ‹œμ§€ 접두사 PREFIX 적용
- 이름 μ΅œλŒ€ 길이 μƒμˆ˜ NAME_MAX_LENGTH μ •μ˜
- UserErrorCodeλ₯Ό 인자둜 λ°›μ•„ BaseException을 μƒμ†ν•˜λŠ” μ˜ˆμ™Έ μ •μ˜
- μ‚¬μš©μž κ΄€λ ¨ μ˜ˆμ™Έ 처리λ₯Ό 도메인 λ‹¨μœ„λ‘œ ꡬ뢄 κ°€λŠ₯ν•˜λ„λ‘ ꡬ성
- κΈ°μ‘΄ IllegalArgumentException을 UserException으둜 λŒ€μ²΄ν•˜μ—¬ 도메인 μ˜ˆμ™Έ 톡일
- UserErrorCodeλ₯Ό ν™œμš©ν•΄ μ—λŸ¬ λ©”μ‹œμ§€ 관리 일원화
- 이름 검증 λ‘œμ§μ—μ„œ null, 길이, ν˜•μ‹ μ˜ˆμ™Έλ₯Ό 도메인 기반으둜 처리
- κΈ°μ‘΄ IllegalArgumentException 검증을 UserException으둜 λ³€κ²½
- UserErrorCode의 λ©”μ‹œμ§€λ₯Ό 기반으둜 μ˜ˆμ™Έ λ©”μ‹œμ§€ 검증 μˆ˜ν–‰
- μ‚¬μš©μž 이름 검증 κ΄€λ ¨ ν…ŒμŠ€νŠΈ 일관성 μœ μ§€
ν‘Έμ‹œ 토큰이 null일 수 μ—†λ‹€λŠ” 검증을 μœ„ν•œ μ—λŸ¬ μ½”λ“œλ₯Ό UserErrorCode에 μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.
κΈ°μ‘΄ String νƒ€μž…μ˜ token ν•„λ“œλ₯Ό PushToken VO둜 λ³€κ²½ν•˜κ³ , @Embedded 및 @AttributeOverrideλ₯Ό μ μš©ν•˜μ—¬ 도메인 주도 섀계 기반의 κ°’ 객체 ꡬ쑰λ₯Ό λ°˜μ˜ν–ˆμŠ΅λ‹ˆλ‹€.
ν‘Έμ‹œ 토큰 값을 ν‘œν˜„ν•˜λŠ” PushToken VOλ₯Ό κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.
null κ°’ 검증 λ‘œμ§μ„ ν¬ν•¨ν•˜κ³  있으며, μΆ”ν›„ 토큰 μœ νš¨μ„±μ— λŒ€ν•œ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직과 ν…ŒμŠ€νŠΈλ₯Ό μΆ”κ°€ν•  μ˜ˆμ •μž…λ‹ˆλ‹€.
PushToken κ°’ 객체에 λŒ€ν•œ λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.
- μœ νš¨ν•œ ν† ν°μœΌλ‘œ 객체 생성 성곡
- null 토큰에 λŒ€ν•œ μ˜ˆμ™Έ 처리 검증
- ν‘Έμ‹œ 토큰 null ν—ˆμš© λΆˆκ°€ μ—λŸ¬ μ½”λ“œ μΆ”κ°€
- ν‘Έμ‹œ μƒνƒœκ°€ ON, OFF μ™Έμ˜ 값일 경우의 μ—λŸ¬ μ½”λ“œ μΆ”κ°€
- ν‘Έμ‹œ μ•Œλ¦Όμ΄ 이미 ν™œμ„±ν™”/λΉ„ν™œμ„±ν™”λœ μƒνƒœμ— λŒ€ν•œ μ˜ˆμ™Έ μ½”λ“œ μΆ”κ°€
- PushNotificationStatus VO ν•„λ“œ μΆ”κ°€ 및 ENUM λ§€ν•‘ 적용
- ν‘Έμ‹œ μ•Œλ¦Ό μˆ˜μ‹  μ—¬λΆ€ 확인 λ©”μ„œλ“œ canReceivePushNotification() κ΅¬ν˜„
- ν‘Έμ‹œ μ•Œλ¦Ό ν™œμ„±ν™” 및 λΉ„ν™œμ„±ν™” λ©”μ„œλ“œ μΆ”κ°€
- ENABLED, DISABLED μƒνƒœλ₯Ό λ‚˜νƒ€λ‚΄λŠ” Enum μ •μ˜
- λ¬Έμžμ—΄ 기반 μƒνƒœ νŒŒμ‹±μ„ μœ„ν•œ of(), isValid() λ©”μ„œλ“œ κ΅¬ν˜„
- μƒνƒœ μ „ν™˜ μ‹œ 쀑볡 μ „ν™˜ λ°©μ§€λ₯Ό μœ„ν•œ μ˜ˆμ™Έ 처리 둜직 μΆ”κ°€
- μ•Œλ¦Ό μˆ˜μ‹  κ°€λŠ₯ μ—¬λΆ€ 확인 λ©”μ„œλ“œ canReceiveNotification() κ΅¬ν˜„
- of(), isValid() λ©”μ„œλ“œμ˜ 유효/무효 μž…λ ₯에 λŒ€ν•œ ν…ŒμŠ€νŠΈ μΆ”κ°€
- μƒνƒœ μ „ν™˜ μ‹œ 쀑볡 ν˜ΈμΆœμ— λŒ€ν•œ μ˜ˆμ™Έ 처리 ν…ŒμŠ€νŠΈ μΆ”κ°€
- μƒνƒœλ³„ μ•Œλ¦Ό μˆ˜μ‹  κ°€λŠ₯ μ—¬λΆ€ ν…ŒμŠ€νŠΈ 및 μƒνƒœ μ „ν™˜ ν…ŒμŠ€νŠΈ 포함
- 성곡/μ‹€νŒ¨ μΌ€μ΄μŠ€λ₯Ό λͺ…ν™•νžˆ λ‚˜λˆ„μ–΄ 가독성 ν–₯상
Copy link
Member

@JungYoonShin JungYoonShin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

μˆ˜κ³ ν•˜μ…¨μŠ΄λ™!

Comment on lines +25 to +36
# # Gradle caching - λΉŒλ“œ μ‹œκ°„ ν–₯상
# - name: Gradle Caching
# uses: actions/cache@v3
# with:
# path: |
# ~/.gradle/caches
# ~/.gradle/wrapper
# key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
# restore-keys: |
# ${{ runner.os }}-gradle-

# Gradle build - ν…ŒμŠ€νŠΈ 없이 gradle λΉŒλ“œ
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이거 μ£Όμ„μ²˜λ¦¬ν•œ μ΄μœ κ°€ λ¨Όκ°€μš©?? (λ‹¨μˆœ κΆκΈˆγ…Žγ…Ž)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ν•΄λ‹Ή λΉŒλ“œ 캐싱이 자주 λΉŒλ“œν•΄μ•Όν•˜λŠ” μƒν™©μ—μ„œ 였히렀 μ‹œκ°„μ΄ κ±Έλ¦¬λ”λΌκ΅¬μš”! 이유λ₯Ό νŒŒμ•…ν•˜κ³  이후 λ°˜μ˜μ„ κ³ λ €ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€:)

HELP.md Outdated
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 νŒŒμΌμ€ λͺ¨μ Έ?!?! 잘λͺ» μ˜¬λΌμ™“λ‚˜

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

start.spring.ioμ—μ„œ μ΅œκ·Όμ— gradleνŒŒμΌμ„ μΆ”κ°€ν•˜λŠ” 경우 μžλ™μœΌλ‘œ μƒμ„±λ˜λŠ” 것 κ°™μ•„μš”! 이뢀뢄은 λ°˜μ˜λ˜μ§€ μ•Šλ„λ‘ gitignore에 μΆ”κ°€ν•΄μ•Όκ² λ„€μš”!! 의견 κ°μ‚¬ν•©λ‹ˆλ‹€ γ…Žγ…Ž

@jsoonworld
Copy link
Member

고생 λ§ŽμœΌμ…¨μŠ΅λ‹ˆλ‹€~! 😊

μΆ”κ°€λ‘œ deploy νŒŒμΌμ— 도컀 이미지 μ‚­μ œ λ‘œμ§λ„ ν¬ν•¨λ˜μ—ˆλŠ”μ§€ ν•œ 번 확인 λΆ€νƒλ“œλ¦΄κ²Œμš”.
μ˜ˆμ „μ— κΈ°μ‘΄ μ„œλ²„μ—μ„œλŠ” 이 뢀뢄이 λΉ μ Έ μžˆμ–΄μ„œ κ°„ν—μ μœΌλ‘œ λ¬Έμ œκ°€ μƒκ²Όλ˜ 적이 μžˆμ—ˆκ±°λ“ μš”.

그리고 μ„œλ²„κ°€ 쀑간에 μ£½κ³  λ‹€μ‹œ 올라올 λ•Œμ²˜λŸΌ,
μ˜ˆμ™Έ 상황이 생길 수 μžˆλŠ” 흐름도 ν•œ 번 더 μ κ²€ν•΄λ³΄μ‹œλ©΄ 더 μ•ˆμ •μ μœΌλ‘œ λ™μž‘ν•  것 κ°™μ•„μš” πŸ™

- LOGGED_IN, LOGGED_OUT, WITHDRAWN μƒνƒœλ₯Ό λ‚˜νƒ€λ‚΄λŠ” enum μ •μ˜
- λ¬Έμžμ—΄ νŒŒμ‹± λ©”μ„œλ“œ of(), isValid() κ΅¬ν˜„
- 둜그인, λ‘œκ·Έμ•„μ›ƒ, νƒˆν‡΄ μƒνƒœ 확인을 μœ„ν•œ λ©”μ„œλ“œ μΆ”κ°€
- μœ νš¨ν•˜μ§€ μ•Šμ€ μƒνƒœμ— λŒ€ν•΄ UserException λ°œμƒ 처리
- μœ νš¨ν•˜μ§€ μ•Šμ€ 계정 μƒνƒœ μž…λ ₯ μ‹œ λ°œμƒν•˜λŠ” INVALID_ACCOUNT_STATUS μ˜ˆμ™Έ μ½”λ“œ μ •μ˜
- ν—ˆμš©λœ μƒνƒœ κ°’: active, inactive, withdrawn
- κΈ°μ‘΄ State ν•„λ“œ 제거 및 AccountStatus enum 기반으둜 λ³€κ²½
- 계정 ν™œμ„± μƒνƒœ νŒλ‹¨ λ©”μ„œλ“œ isActiveUser() κ΅¬ν˜„
- νƒˆν‡΄ μ—¬λΆ€λ₯Ό AccountStatusκ°€ 직접 νŒλ‹¨ν•˜λ„λ‘ μ—­ν•  μœ„μž„
- 각 μƒνƒœμ— μ™ΈλΆ€ λ…ΈμΆœμš© λ¬Έμžμ—΄ κ°’(value) ν•„λ“œ μΆ”κ°€ (active, inactive, withdrawn)
- Jackson 직렬화/역직렬화λ₯Ό μœ„ν•œ @JsonCreator 및 @jsonvalue μ–΄λ…Έν…Œμ΄μ…˜ 적용
- λ¬Έμžμ—΄ μž…λ ₯ νŒŒμ‹±μ„ value κΈ°μ€€μœΌλ‘œ μ²˜λ¦¬ν•˜λ„λ‘ from(), isValid() λ©”μ„œλ“œ κ°œμ„ 
- 의미 기반 λ©”μ„œλ“œ isActive(), isInactive(), isWithdrawn() λ“±μœΌλ‘œ λͺ…ν™•μ„± ν–₯상
- from() λ©”μ„œλ“œμ˜ 유효/무효 μž…λ ₯에 λŒ€ν•œ μ˜ˆμ™Έ 처리 ν…ŒμŠ€νŠΈ κ΅¬ν˜„
- isValid() λ©”μ„œλ“œμ˜ 검증 ν…ŒμŠ€νŠΈ μΆ”κ°€
- isActive(), isInactive(), isWithdrawn() λ©”μ„œλ“œ ν…ŒμŠ€νŠΈλ‘œ μƒνƒœ νŒλ³„ κΈ°λŠ₯ 확인
- value() λ©”μ„œλ“œλ₯Ό ν†΅ν•œ 직렬화 κ°’ λ°˜ν™˜ 검증
- `ScrapUserIdsRequest` λ ˆμ½”λ“œλ₯Ό μΆ”κ°€ν•˜μ—¬ 슀크랩 μœ μ € ID λͺ©λ‘μ„ λ‹΄λŠ” μš”μ²­ DTO κ΅¬ν˜„
- `of` λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 리슀트λ₯Ό λ°›μ•„ DTO μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 수 μžˆλ„λ‘ μΆ”κ°€
- ν΄λΌμ΄μ–ΈνŠΈμ™€ API ν†΅μ‹ μ—μ„œ μœ μ € ID λͺ©λ‘μ„ μ „μ†‘ν•˜λŠ” 데 μ‚¬μš©
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
πŸŽ‰deploy CI/CD κ΄€λ ¨ μ½”λ“œ μˆ˜μ • 및 μΆ”κ°€ size/XXL πŸΆμ •κ΅πŸΆ
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants