Skip to content
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

chore: 프로젝트 세팅 #2

Merged
merged 11 commits into from
Nov 22, 2023
Merged

chore: 프로젝트 세팅 #2

merged 11 commits into from
Nov 22, 2023

Conversation

kdomo
Copy link
Member

@kdomo kdomo commented Nov 22, 2023

🌱 관련 이슈


📌 작업 내용 및 특이사항

프로젝트 초기 세팅을 진행합니다.

  • Issue, Pull Request Template 설정
  • 자동 리뷰어 등록을 위한 CodeOwners 설정
  • IDE에서 코드 정렬을 위한 .editorconfig 파일 추가
  • 코드 포메팅을 위해 CheckStyle 추가
  • application.properties에서 application.yml로 변경
  • develop 브랜치에 Pull Request시 코드 포메팅 검사와 테스트 진행하기 위한 Workflows 생성

@kdomo kdomo added the ⚙️ chore 빌드 및 CI/CD label Nov 22, 2023
@kdomo kdomo added this to the 1차 스프린트 milestone Nov 22, 2023
Copy link
Member

@uwoobeat uwoobeat left a comment

Choose a reason for hiding this comment

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

lgtm

@kdomo kdomo merged commit 83f57c2 into develop Nov 22, 2023
1 check passed
@uwoobeat
Copy link
Member

@kdomo

이거 밖이라서 제가 잘 못 보고 lgtm 박았는데 지금 확인해보니까 고쳐야 할 부분이 있어서 코멘트 남깁니다~

(1)
워크플로는 develop 브랜치 머지하기 전에 제대로 동작하는지 테스트하려고 만들어두신 것 맞죠?

이 부분은 gradle build로 검증하고, checkStyle 검증의 경우 check 작업에 의존성을 걸어놓고 관리하면 어떨까 싶어요. 애초에 gradle 단에서 발생하는 작업들은 워크플로가 아니라 gradle에서 관리하는 편이 작업 간 의존성 관리하는 데에도 좋거든요.

(check 작업에 대해서는 gradle lifecycle tasks에 대해서 참고해주세요: 레퍼런스)

(2)
추가로 cache 액션 사용하셨는데, gradle-build-action을 사용하면 더 효율적인 캐시 관리가 가능합니다. 이 부분도 참고하시면 좋을 것 같아요~

More sophisticated and more efficient caching of Gradle User Home between invocations, compared to setup-java and most custom configurations using actions/cache. link

@kdomo
Copy link
Member Author

kdomo commented Nov 23, 2023

@uwoobeat

(1)
워크플로는 develop 브랜치 머지하기전 제대로 동작하는지 테스트 하려고 만들어 둔게 맞습니다!
재현님이 말씀해주신대로, gradle에서 워크플로우를 관리하는게 훨씬 좋겠네요.
다만, 해당 워크플로에서 build를 해야하는지는 의문입니다!
가능하면 gradle test에 의존성을 걸어두는게 좋다고 생각하는데 어떠세용? 😁

(2)
gradle-build-action이라는게 있군요! 감사합니다🙇🏻

@char-yb
Copy link
Member

char-yb commented Nov 23, 2023

@kdomo
재현님이 알려주신 gradle-build-action 자체에 gradle wrapper를 이용해서 build를 수행한다고 하네요
참고했던 링크 첨부합니당

@uwoobeat
추가로 위 링크의 cache-read-only 옵션은 main이나 release, develop과 같은 브랜치는 캐싱하고 그 외 브랜치는 real-only로 하는 게 좋다고 하네요 위 내용대로 진행하면 될 거 같은데 어떨까요?

@uwoobeat uwoobeat added the 🥈 P2 급하지 않지만 꼭 필요한 이슈 label Nov 23, 2023
@uwoobeat
Copy link
Member

uwoobeat commented Nov 23, 2023

@kdomo @uiurihappy

음 build 작업이 어떻게 수행되는지 방금 보고 왔는데요, check에서 jar 파일 뽑는 과정만 추가되었다고 보면 될 것 같아요. on:pull_request에서는 jar 파일 필요 없으니 check만 쓰면 될 것 같습니다.

++
그리고 test가 아니라 check를 써야하는 이유는 check 작업이 일종의 앵커 역할을 해주는 작업이라 그렇습니다. gradle task에는 lifecycle task와 actionable task가 있는데, 이중 actionable task가 실제로 무언가를 실행하는 작업이고 lifecycle task의 경우 그 자체로는 어떤 것도 실행하지 않지만 다른 task의 의존성을 관리해주는 앵커 역할의 작업이 됩니다.

gradle에서는 check가 대표적인 lifecycle task입니다. check에는 기본적으로 test 작업, 즉 actionable task가 등록되어 있고 만약 여기서 test 외에 통합 테스트 혹은 포매팅 테스트 등이 필요하다면 check에 의존성을 걸어놓고 사용하면 됩니다.

물론 test에 의존적인 작업(가령 api documention 작업)이라면 test에 dependsOn을 걸어주는 것이 맞겠지만, test와 관련이 없는 checkStyle의 경우 check에 걸고 사용하는 것이 맞을 것 같아요.

예전에 TIL에 정리해두었던 내용인데, 참고하시면 좋을 것 같아요.

https://github.com/uwoobeat/today-i-buffered/blob/7b518dbba51075e39e34b6ae2ad30e9f9f9f78a7/230908.md

@uwoobeat uwoobeat removed the 🥈 P2 급하지 않지만 꼭 필요한 이슈 label Nov 23, 2023
@uwoobeat uwoobeat deleted the chore/1-project-setting branch November 29, 2023 05:35
@uwoobeat uwoobeat added the merged 머지된 PR label Dec 6, 2023
kdomo added a commit that referenced this pull request Jan 19, 2024
* chore: 프로젝트 세팅 (#2)

* chore: .editorconfig 추가

* chore: codeowners 추가

* docs: 이슈 템플릿 추가

* docs: PR 템플릿 추가

* refactor: 대소문자 수정

* refactor: class명 대소문자 수정

* test: health check

* docs: PR 템플릿 수정

* chore: checkstyle plugin 적용

* chore: develop Branch Pull Request Workflow 적용

* chore: application.properties를 .yml로 변경

---------

Co-authored-by: uwoobeat <[email protected]>
Co-authored-by: ybchar <[email protected]>

* chore: gradle build action 및 lifecycle 추가 (#4)

* refactor: gradle build action 및 lifecycle 추가

* refactor: build.gradle test 의존성 삭제

* chore: CI/CD 워크플로우 생성 (#18)

* chore: Dockerfile 생성

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* chore: plain jar 생성 안되도록 설정

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* chore: CI/CD workflow 작성

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* fix: cicd전용 계정 생성하여 password 필드 제거

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

---------

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* fix: CI/CD 접속 전용 계정 적용 (#21)

* fix: ssh 접속 계정명 변경과 패스워드 필드 제거

* fix: docker 명령어에 registry 값 추가

* fix: CI/CD outputs 변수명 변경 (#23)

* fix: CI/CD outputs 변수명 변경

* remove: on pullrequest 제거

* feat: 커스텀 예외 및 에러 코드/응답 구현  (#19)

* feat: 에러 코드 구현

* feat: 커스텀 예외 구현

* feat: 예외 응답 구현

* chore: 스프링부트 액추에이터 설정 (#29)

* fix: 테스트 파일 이름 수정

* chore: 액추에이터 의존성 추가

* chore: 액추에이터 보안 관련 설정

* chore: Swagger 설정 (#26)

* chore: Swagger 기본 설정

* chore: Swagger 객체 파싱 직렬화

* chore: swagger Server url 추가

* refactor: 코드 포메팅 도구 CheckStyle을 Spotless로 변경한다 (#25)

* remove: checkstyle 제거

* chore: spotless 플러그인 추가하고 설정

* style: spotless

* chore: git pre-commit spotless check script 생성

* style: 주석 추가

* style: spotless

* style: spotless

* fix: pre-commit script 파일 생성, gradle copy task 생성

* style: 주석 제거

* chore: jacoco 기본 세팅 (#28)

* chore: jacoco 기본 설정

* chore: jacoco 커버리지 임시 주석

* chore: jacoco excludes constant화 및 buildDir 수정

* chore: checkstyle remove

* chore: docker compose 적용 (#31)

* chore: 워크플로 테스트 트리거 추가

* chore: 서버로 컴포즈 파일을 전송하는 스텝 추가

* chore: 빌드 시 자바 이미지 eclipse-temurin으로 변경

* chore: 컴포즈 파일 작성

* chore: 컴포즈 파일에 사용할 환경변수 설정

* chore: 시크릿을 사용하도록 변경

* fix: 권한 문제 수정

* chore: 도커 컴포즈를 실행하도록 변경

* fix: scp action의 버전을 고정하도록 변경

* fix: 오타 수정

* fix: 유저네임 변경

* fix: 쉘에서 환경변수 전달하도록 수정

* fix: 사용할 환경변수 지정

* chore: 도커 미사용 리소스 삭제 명령어 추가

* fix: 이미지만 삭제하도록 수정

* fix: 환경변수 수정

* chore: 호스트 모드 사용 시 포트 바인딩 옵션 제거

* chore: 컴포즈가 전역 컨텍스트의 환경변수를 직접 참조하도록 수정 테스트

* fix: 주석 수정

* Revert "fix: 주석 수정"

This reverts commit 0e8f426.

* Revert "chore: 컴포즈가 전역 컨텍스트의 환경변수를 직접 참조하도록 수정 테스트"

This reverts commit b910404.

* docs: 주석 추가

* chore: 주석 처리한 명령어 제거

* chore: 워크플로 테스트 트리거 롤백

* chore: 배포 전용 워크플로에 변경사항 적용

* chore: 프로젝트 패키지 구성 (#30)

* chore: 프로젝트 패키지 구성

* rename: 패키지명 오타 수정

* rename: repository -> dao로 패키지명 변경

* chore: 성공 응답 공통 처리 어드바이스 생성 (#34)

* chore: 성공 응답 공통 처리 어드바이스 생성

* remove: Getter 제거

* chore: Gradle Build Scan 활성화 및 슬랙 전송 워크플로 추가 (#37)

* chore: 빌드 스캔 활성화

* chore: 워크플로 테스트

* chore: CI 환경변수 테스트 제거

* chore: 슬랙 전송 워크플로 작성

* chore: 슬랙 전송 스텝을 빌드 잡으로 통합

* chore: 테스트 트리거 및 문자열 제거

* chore: 프로젝트에 PR 추가 후 status를 '처리대기'로 변경하는 워크플로우 추가 (#6)

* chore: PR 추가 후 status를 변경하는 워크플로우 추가

* fix: 스크립트 줄바꿈 제거

* chore: 이슈 및 PR 템플릿 수정 (#42)

* style: 개행 제거

* docs: PR 템플릿 수정

* style: 개행 제거

* chore: sonarcloud setting (#38)

* chore: lifeCycle remove 1

* chore: Sonar test

* chore: PR close 시 merged 라벨 추가 및 기존 워크플로 픽스 (#43)

* chore: 워크플로 이름 수정

* refactor: 파일명 변경

* chore: PR이 closed 될 때 merged 라벨 추가하는 워크플로 작성

* chore: 테스트용 트리거 추가

* chore: 권한 설정 변경

* chore: 테스트 트리거 재설정

* chore: 테스트 트리거 롤백

* chore: 프로젝트 워크플로 테스트 트리거 활성화

* �chore: 코드 정적 분석 SonarCloud 설정 (#38)

* �chore: 코드 정적 분석 SonarCloud 설정 (#38)

* chore: pending 워크플로우의 쿼리 수정

* fix: pending 상태 id 값 직접 삽입

* fix: 쿼리 전 인자값을 미리 선언하도록 지정

* chore: 테스트 트리거 롤백

* chore: 잡 이름 변경

* chore: 워크플로 이름 변경

---------

Co-authored-by: yb__char <[email protected]>
Co-authored-by: ybchar <[email protected]>

* feat: BaseTimeEntity 생성 (#49)

* feat: BaseTimeEntity 생성

* feat: jacoco exclusions 수정

* feat: jacoco QType exclusions 추가

* feat: BaseTime exclusions Test

* feat: Entity exclusions Test

* chore: 워크플로에서 `set-output` 커맨드 제거 (#47)

* chore: 테스트 트리거 활성화

* chore: set-output 대신 github env를 사용하도록 개선

* chore: 환경변수 이름 변경

* chore: 테스트 명령어 추가

* chore: 환경변수 출력 테스트

* chore: 환경변수를 전역 컨텍스트로 선언

* chore: 전역 환경변수가 미리 평가되도록 변경

* chore: 환경변수를 잡의 아웃풋으로 전달하도록 수정

* fix: 신택스 오류 수정

* fix: 같은 잡 내에서는 스텝 아웃풋 사용하도록 수정

* chore: NCP 유저네임 시크릿 처리

* chore: 테스트 스크립트 제거

* chore: 테스트 트리거 롤백

* chore: NCP 유저네임 시크릿 처리

* fix: error 패키지 sonarcloud 테스트 제외 (#58)

* fix: error 패키지 sonarcloud 테스트 제외

* fix: lombok.config로 lombok annotation scope exclusions

* fix: Error 파일명 sonarcloud 테스트 제외

* fix: config 경로 sonarcloud 테스트 제외

* feat: 회원 도메인 및 시큐리티 유틸리티 구현 (#56)

* refactor: 도메인 이름을 user에서 member로 변경

* feat: 회원 도메인 구현

* test: 회원 테스트 작성

* refactor: `.gitkeep` 삭제

* chore: 시큐리티 의존성 추가

* feat: 시큐리티 설정 추가

* fix: 전역 응답객체와 호환되기 위해 String에서 임시 응답객체로 변경

* feat: 멤버 레포지터리 추가

* feat: 임시 UserDetail 추가

* refactor: 시큐리티 패키지로 이동

* feat: PrincipalDetails 구현

* fix: 에러코드 생성자 수정

* feat: 멤버 레포지터리 추가

* style: 포매팅 적용

* feat: 시큐리티 유틸리티 구현

* feat: 멤버 유틸리티 구현

* refactor: gitkeep 삭제

* feat: 에러코드 추가

* fix: 미수정 코드 제거

* test: 멤버 유틸리티 테스트 추가

* style: 포매팅 적용

* fix: 오타 수정

* test: 임시 회원 삽입 테스트

* style: 포매팅 수정

* refactor: gitkeep 삭제

* refactor: 빌더를 사용하도록 변경

* fix: 빌더 접근제어 설정 추가

* refactor: 기본 생성자 접근제어 수정

* docs: TODO 추가

* style: 포매팅 수정

* docs: 주석 수정

* feat: SpringEnvironmentHelper 생성 (#45)

* feat: SpringEnvironmentHelper 생성

* test: SpringEnvironmentHelper 테스트코드 추가

* rename: Util로 클래스명 변경

* fix: 문자열 상수 public static으로 변경

* refactor: SpringEnvironmentUtil 로직 Stream으로 개선

* style: spotless

* refactor: 운영환경에 따라 허용되는 도메인 달라지도록 개선

* fix: 문자열 상수 public static final로 변경

* test: DisplayName 어노테이션 제거

* fix: cors origin pattern vite port 삭제

* refactor: SpringEnvironmentUtilTest 문자열 배열 상수로 관리

* style: spotless

* refactor: WebSecurityConfig에 RequiredArgsConstructor 어노테이션 사용

* style: spotless

* fix: GlobalResponseAdvice 응답 값이 String 타입 예외 처리 (#59)

* fix: Swagger가 안뜨는 문제 해결 (#68)

* feat: Querydsl 환경 구성 추가 (#64)

* feat: querydsl 환경

* feat: Member Profile record compile 이슈로 class로 변경

* fix: spotlessApply

* fix: Profile NoArgsConstructor Access Level remove

* feat: build.gradle Querydsl 설정

* fix: DS_Stroe -> DS_Store 수정

* fix: Querydsl 설정 삭제

* fix: ignore main/generated 경로 추가

* feat: 미션, 미션 기록 도메인 생성 (#60)

* feat: mission domain 추가

* feat: mission repository 추가 및 spotless 적용

* feat: missionRecord domain 추가

* feat: mission DomainTest 작성

* fix: Mission DomainTest 수정

* fix: Comment Annotation 활용 및 Spotless Apply

* fix: Spotless Apply

* fix: sonar --no-daemon test

* fix: mission 도메인 수정 반영

* fix: spotlessApply

* feat: MissionVisibility 값 추가

* fix: spotlessApply

* fix: 도메인 테스트 MissionVisibility 수정

* feat: Mission Sort 값 파라미터 전달로 수정

* feat: Mission Sort 값 파라미터 전달로 수정

* fix: spotlessApply

* feat: service gitkeep

* feat: sonar New Code Test

* feat: sonar New Code Test

* feat: sonar New Code Test

* feat: sonar New Code Test

* feat: sonar BuildDir test

* fix: set_pending 주석

* fix: set_pending 주석 해제

* fix: sonar down

* fix: sonar up

* fix: sonar down

* fix: sonar up

* fix: set-pending test

* feat: mission Domain 추가 사항 적용

* feat: 미션, 미션 기록 수정사항 반영

* feat: 미션, 미션 기록 column 수정

* fix: spotlessApply

* fix: mission 도메인 column 수정 반영

* fix: spotlessApply

* fix: mission 도메인 column 수정 반영

* fix: 엔티티 column 순서 변경

* fix: mission content nullable true

* chore: Global Exception Handler 설정 (#63)

* chore: Global Exception Handler 설정

* fix: Override 추가와 BindException 제거

* style: spotless

* style: 주석제거

* chore: 공통 상수 Enum으로 관리 (#71)

* chore: 공통 상수 enum 생성

* refactor: 공통 상수 값 사용하도록 변경

* refactor: 공통 상수 관심사에 맞도록 분리

* chore: `application.yml` 환경별 분리 (#72)

* chore: application yml 환경별로 분리

* chore: datasource MySQL 방언 제거

* style: spotless

* style: spotless

* remove: actuator 환경변수 제거

* feat: 파일에 env_file 사용하도록 명시

* chore: develop_deploy.yml 에서 커밋해쉬 사용하도록 수정 (#79)

chore: develop deploy actions에서 커밋해쉬 사용하도록 수정

* chore: develop_deploy.yml needs 삭제 (#81)

chore: develop deploy actions에서 사용하지 않는 needs 제거

* fix: Swagger에 Server 리스트 안보이는 문제해결 (#70)

* fix: Swagger에 Server 리스트 안보이는 문제해결

* style: spotless

* refactor: SpringEnvironmentUtil 사용하는 부분 공통상수 처리

* feat: 테스트 코드 격리 (#84)

* feat: 테스트 코드 격리

* fix: 중복 gradle 수정

* fix: guava 의존성 해제

* fix: guava 원복

* fix: DatabaseCleaner Service -> Component

* fix: unwrap 이슈로 해결 및 guava 의존성 해제

* feat: Swagger 접근 거부 문제와 스웨거 보안 기능 추가 (#82)

* feat: SwaggerUrl 상수 추가

* feat: Swagger 접근 거부 문제와 스웨거 보안 기능 추가

* refactor: Swagger 문서 GET만 허용

* style: spotless

* feat: 미션 서비스 로직 구현 (1차) (#77)

* feat: 미션 생성, 리스트 조회 로직 구현

* feat: 미션 단건 조회, 수정, 삭제 1차 구현

* feat: Controller 인터페이스 분리

* feat: 미션 서비스 테스트 코드 생성, 조회 구현

* feat: 미션 리스트 lastId where 조건 추가

* fix: spotlessApply

* fix: 미션 서비스 테스트 수정

* fix: h2 option remove

* fix: 미션 리스트 수정

* feat: 미션 수정, 삭제 서비스 테스트 코드 작성

* fix: 미션 response Dto 수정

* feat: 미션 read response 수정 및 SecurityUtil 삭제

* fix: spotlessApply

* fix: Dto class -> record 변경

* feat: Slf4j 삭제

* fix: spotlessApply

* fix: lombok gradle 수정

* fix: 미션 생성 실패 검증 exception 수정

* fix: MissionController 수정사항 반영

* feat: MissionService Test DatabaseCleaner 추가

* fix: spotlessApply

* fix: 메서드 네이밍 변경 및 missionFindAll 파라미터 변경

* fix: serviceTestCode 메서드 네이밍 변경

* chore: MissionResponse -> MissionFindRepsonse

* chore: MissionRequest DTO 네이밍 변경

* chore: MissionRequest DTO defaultValue 추가

* fix: spotlessApply

* feat: 미션 service Nagative Test 코드 추가

* feat: 미션 삭제 실패 case 수정

* fix: missionController api 패키지로 변경

* fix: missionController api 패키지로 변경

* fix: Request Dto defaultValue 수정

* fix: createMissionService member 변수 분리

* fix: CustomException으로 변경

* fix: requestBody 추가

* fix: member 변수 분리

* fix: spotlessApply

* fix: serviceTest null exception 수정

* feat: 미션 생성 수정 responseDTO 추가 및 수정

* feat: 미션 조회 인증 필요 status 필드 추가

* feat: 미션 enum 타입 재정의

* fix: spotlessApply

* fix: modify -> update 메서드 명 변경

* fix: createMissionService member 변수 분리 수정

* chore: 미션 service 테스트 코드 메서드 명 수정

* fix: 미션 생성 201 응답 변경

* fix: 미션 리스트 조회 RequestParam size로 수정

* fix: 미션 리스트 조회 테스트 코드 RequestParam size로 수정

* refactor: 리뷰 반영

* fix: spotlessApply

* feat: Repository 테스트 코드 추가

* fix: ResponseDto from 정적 팩토리 메서드 추가

* feat: TestQuerydslConfig 추가 및 Repository 테스트 수정

* fix: ArchiveStatus REQUIRED 삭제

* fix: createMission Service return/response 분리

* fix: 정적 팩토리 메서드 수정

* fix: WebEnvironment default로 수정

* fix: MemberUtilTest에 DatabaseCleaner 적용 (#90)

* fix: MemberUtilTest에 DatabaseCleaner 적용

* style: spotless

* chore: Redis 설정 (#88)

* chore: starter-data-redis 의존성 추가

* chore: redis config 추가

* chore: redis.yml 생성

* fix: redis yml deprecated 되어 config Value값 변경

* test: ActiveProfiles test 값 추가

* test: test yml에 redis 정보 추가

* chore: test를 위한 docker-compose-test.yml 생성

* chore: github actions 빌드 시 test redis 사용

* remove: .gitkpeep 삭제

* fix: build시 docker-compose-test.yml 사용하도록 변경

* chore: SecurityConfig 임시로 모든 url 허용 (#94)

chore: securityConfig 임시로 모든 url 허용

* feat: 미션 기록 저장 기능 구현 (#97)

* chore: validation 의존성 추가

* feat: 미션 기록 저장 기능 구현

* test: MissionRecordTest 작성

* feat: duration 한시간 초과시 한시간으로 변환

* test: MissionRecordTest Nested 사용

* refactor: 코드 리뷰 반영

* style: spotless

* test: 사용하지 않는 테스트 삭제

* chore: NCP Object Storage 설정 (#100)

* move: redis config 패키지 이동

* chore: PropertiesConfig 추가와 configuration-processor 의존성 추가

* chore: AWS 의존성 추가

* chore: Storage Config 생성

* chore: storage.yml 추가

* refactor: RedisProperties 적용

* style: spotless

* refactor: properties record 적용

* fix: 개발서버 CORS 관련 오류 해결 (#105)

fix: cors 활성화

* chore: Swagger Tag 값에 Numbering (#111)

chore: Swagger API 제목 Numbering

* test: 미션 Controller 테스트 코드 작성 (#103)

* feat: MissionController Test 세팅

* feat: 공부 미션 생성

* feat: WebMvcTest로 변경 후 given을 사용한 조회 테스트 구현

* fix: ResultActions 분리

* refactor: 미션 slice 응답 분리

* refactor: lastId 분리

* feat: 미션 수정 controller 테스트 코드 구현

* feat: 미션 삭제 controller 테스트 코드 구현

* feat: 미션 생성 이름 Null 케이스 추가

* feat: 미션 수정 controller 실패 테스트 코드 구현

* fix: spotlessApply

* fix: ArgumentMatchers static import

* fix: 미션 삭제 not found Exception

* fix: spotlessApply

* feat: 미션 내역 리스트 조회 (#107)

* feat: 미션 기록 조회

* fix: findByMissionId -> findById로 변경

* fix: spotlessApply

* fix: validateYearMonthFormat 검증 수정

* fix: spotlessApply

* fix: remart -> remark 오타 수정

* fix: RequestParam String -> YearMonth로 변경

* refactor: yearMonth 조건 분리

* fix: missionRecordId -> recordId 변경

* chore: git pending test

* feat: 미션 내역 상세 조회 구현 (#115)

* feat: 미션 내역 상세 조회

* fix: duration toMinutes로 변경

* fix: description 수정

* fix: MISSION_RECORD_USER_MISMATCH statusCode 400 -> 403

* feat: PresignedUrl을 사용하여 이미지 업로드 기능 구현 (#106)

* chore: endpoint 값 추가하여 config 수정

* feat: 미션 기록 이미지 Presigned URL 생성

* feat: 미션 기록 이미지 업로드 완료 처리

* chore: storage.yml에 endpoint 환경변수 추가

* test: Test 코드 추가

* style: spotless

* refactor: storage 저장 디렉토리 변경

* feat: MissionRecord 도메인 uploadStatus validation 예외처리

* refactor: 해당 미션이 접속한 유저와 일치하지 않을때 예외 발생추가

* style: spotless

* test: test코드 추가와 예외처리 변경

* style: spotless

* remove: 사용하지 않는 에러 제거

* style: ImageController Swagger Tag 넘버링

* refactor: ImageController RequestMapping 제거

* refactor: Transactional 클래스레벨로 추출

* style: spotless

* test: ImageController RequestMapping 제거 후 테스트코드 수정

* remove: .gitkeep 삭제

* refactor: 메소드 네이밍 변경

* refactor: MISSION_RECORD_USER_MISMATCH Service 레이어로 추출

* style: conflict 해결

* style: spotless

* chore: 공통 응답 포멧 통일 (#116)

* chore: config 패키지와 response 패키지 이동

* chore: 공통포멧 응답 통일

* remove: health-check API 제거 (actuator로 대체)

* refactor: MethodArgumentNotValidException 예외 메세지 변경

* test: 공통 응답 포멧 변경으로 테스트 코드 수정

* refactor: fail 메서드에 ErrorResponse만 받도록 변경

* style: spotless

* test: 공통 응답 변경으로 인한 ImageControllerTest 변경

* style: spotless

* feat: 미션 인증 및 완료 사진 업로드 단계 예외케이스 처리 (#114)

* chore: RedisConfig에 RedisKeyValueAdapter.EnableKeyspaceEvents.ON_STARTUP 설정 추가

* feat: MissionRecordTTl, Repository 클래스 생성

* chore: RedisExpireEvent 상수 생성

* feat: RedisExpireEventRedisMessageListener 생성

* chore: RedisMessageListenerConfig 생성

* feat: 미션 일지 생성 후 Redis에 TTL 저장

* fix: TTL 10분으로 설정

* style: spotless

* refactor: EXPIRATION_TIME 상수 적용과 ttl 변수명 변경

* �fix: Redis Expire Event 수신 안되어 docker-compose Redis 사용 (#128)

* feat: docker-compose.yml에 redis 추가

* style: spotless

* refactor: 미션 기록 생성 응답 값 response 객체로 Wrapping (#132)

* refactor: MissionRecordCreateResponse 생성

* refactor: 미션 기록 생성 응답 값 response 객체로 Wrapping

* test: MissionRecordCreateResponse로 응답되도록 테스트 수정

* hotfix: CORS AllowedOrigins 환경 분리 (#136)

* hotfix: CORS AllowedOrigins 환경 분리

* hotfix: CORS AllowedOrigins url 범위 변경

* hotfix: CORS문제로 UrlConstants에 www 추가 (#138)

hotfix: UrlConstants에 www 추가

* feat: 이미지 업로드 예외케이스에서 업로드 완료시 Redis TTL 삭제 기능 (#131)

* feat: 미션 내역 수정 구현 (#123)

* fix: 미션 기록 일지 수정

* fix: spotlessApply

* feat: 미션 기록 소유권 검증

* fix: 미션, 미션 기록 수정 API return 객체 정적 팩토리 메서드로 변경

* fix: updateMissionRecord 인자 변경

* fix: MissionVisibility 검증 부분 수정

* fix: spotlessApply

* fix: spotlessApply

* fix: update return 타입 변경 및 변수 할당

* fix: 미션 수정도 동일한 response 형식

* fix: 수정 API 변경으로 인한 테스트 코드 수정

* fix: spotlessApply

* feat: OIDC 소셜 로그인 구현 (#119)

* chore: 시큐리티 form 로그인 및 세션 등 비활성화 처리

* chore: oauth 의존성 추가

* chore: 시큐리티 yml 파일 작성

* feat: OAuth 정보로 조회하는 메서드 추가

* feat: OAuth 정보 필드를 멤버 엔티티에 추가

* feat: 게스트 멤버 유저 생성 메서드 구현

* chore: 공통 프로파일 분리

* chore: jwt 의존성 추가

* chore: 시큐리티 전용 설정 파일 분리

* feat: 시큐리티 yml에 만료시간 및 발급자 추가

* feat: JwtProperties 추가

* feat: JwtTokenProvider 구현

* feat: 에러코드 추가

* feat: 리프레시 토큰 및 레포지터리 임시 구현

* feat: OIDC 유저 서비스 구현

* feat: 성공 핸들러 임시 추가

* feat: 엑세스 토큰 DTO 추가

* feat: 시큐리티 OAuth 설정 반영

* fix: MemberRole이 게스트 상태를 가지도록 수정

* feat: 게스트 역할 여부 확인을 위한 커스텀 OIDC 유저 구현

* feat: 표준 스코프 스펙과 관계없이 userinfo를 가져오도록 빈 스코프로 설정

* refactor: OIDC 유저 서비스가 OidcUser 인터페이스에 의존하도록 변경

* feat: 시큐리티 관련 상수 클래스 추가

* feat: OIDC 로그인 성공 핸들러 구현

* refactor: 상수 클래스로 대체

* docs: 주석 변경

* fix: 토큰 키가 필요한 시점에 초기화되도록 수정

* fix: 오타 및 포매팅 수정

* refactor: 테스트 시 JPA 관련 빈 로딩 제외를 위해 설정 클래스 분리

* refactor: 리프레시 토큰의 ttl을 인자로 받도록 수정

* test: 리프레시 토큰 레포지터리 테스트 작성

* refactor: token 패키지를 auth 패키지로 변경

* feat: 마지막 로그인 시간 업데이트 기능 구현

* feat: 게스트 멤버 회원가입 구현

* test: 멤버 도메인 유닛 테스트 변경 및 회원가입 테스트 작성

* feat: 회원가입 서비스 및 컨트롤러 구현

* refactor: 필터와 토큰 간 결합도 낮추기 위해 프로바이더와 서비스 분리

* refactor: 리다이렉트 경로 및 상수 수정

* feat: JWT 인증 필터 구현

* feat: 토큰 재발급 로직 구현

* feat: 멤버 가입 DTO 추가

* feat: 토큰 만료 여부 확인 메서드 구현

* style: spotlessApply

* fix: 토큰이 있는 경우에만 체크하도록 수정

* refactor: 로컬 환경에서는 디비 스키마 항상 새로 생성

* refactor: 프론트 회원가입 페이지 url 반영

* feat: 허용된 URL 외에는 인증 수행하도록 변경

* feat: JWT 인증 필터 추가

* refactor: 회원가입 필요 여부는 헤더에 담아서 응답하도록 변경

* feat: atk, rtk 둘 다 만료 아닌 경우 rtk 재발급하는 로직 추가

* refactor: 커스텀 헤더 이름 변경

* refactor: 상수 클래스의 인스턴스화 막기

* refactor: 에러코드 위치 변경

* style: 포매팅 수정

* docs: 인증 API 스웨거 태그 추가

* chore: 환경변수 디폴트값 지정

* fix: 누락된 쉼표 추가

* style: 개행 추가

* fix: 컨트롤러 테스트에서 시큐리티 설정 제외

* feat: 애플 키파일로 시크릿 만드는 로직 임시 구현

* chore: 애플 프로바이더 및 클라이언트 정보 추가

* feat: 애플 요청 엔티티 컨버터 구현

* feat: 애플 요청 엔티티 컨버터 V2 구현

* feat: 애플 프로퍼티 로드하는 로직 구현

* docs: TODO 추가

* feat: 에러코드 추가

* feat: OIDC 로그인 실패 핸들러 추가

* feat: 커스텀 OAuth 엑세스 토큰 클라이언트 구현

* refactor: 한 라인에 한번의 작업만 수행하도록 개선

* fix: 오타 수정

* feat: 컨트롤러 테스트 임시 비활성화 처리

* refactor: 컴포넌트 추가

* feat: 시큐리티 설정 추가

* style: spotless 적용

* chore: 엑세스 토큰 시간 변경

* fix: OAuth 관련 설정 비활성화

* fix: OAuth 관련 환경변수 디폴트값 설정

* fix: 필터 모킹 추가

* docs: 주석 수정

* style: spotless 적용

* chore: service 패키지를 application으로 변경 (#141)

* chore: service 패키지를 application으로 변경

* fix: long casting 이슈 해결

* feat: 임시 아이디 / 패스워드 로그인 구현 (#143)

* refactor: 패키지 이동

* feat: 시큐리티 설정 변경

* refactor: 패키지 이동 경로 변경

* feat: 임시 회원가입 및 로그인 컨트롤러

* feat: 멤버 도메인에 아이디 및 비밀번호 추가

* feat: 임시 회원가입 구현

* refactor: 리퀘스트 패키지로 이동

* refactor: response 패키지로 이동

* feat: 아이디 유효성 검증 및 Transactional 추가

* feat: 임시 회원가입 및 로그인 인가 설정

* style: spotless

* feat: 가입 후 id 반환하도록 구현

* refactor: 사용하지 않는 의존성 제거

* feat: 시큐리티 http basic, form login 비활성화

* feat: 로그인 컨트롤러 구현

* feat: 로그인 및 토큰 발급 로직 구현

* fix: 비밀번호 일치 로직 수정

* feat: 로그인 시 게스트 멤버가 아닌지 검증

* fix: 에러 수정

* style: spotless 적용

* refactor: 임시 회원가입 후에도 토큰 발행하도록 수정

* style: spotless

* feat: 아이디 중복 체크 구현

* feat: readOnly = true 옵션 추가

* style: spotless

* feat: 미션 리스트 조회 시 인증 필요 상태 추가 (#140)

* refactor: MissionRecordTtl 클래스명 변경과 Key를 Long 타입으로 변경

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* refactor: MissionRecord create시 ttlFinishedAt 추가

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* feat: Mission 리스트 조회 시 사용되는 MissionStatus와 Reponse class 생성

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* refactor: QueryDsl findAllMission 쿼리메소드 로직과 네이밍 변경

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* feat: 미션 목록 조회시 MissionStatus도 반환하는 기능

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* style: 사용하지 않는 싱수 제거

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* test: Mission 리스트 조회 로직 변경으로 테스트 코드 수정

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* style: 미션 리스트 조회 Swagger Operation 변경

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* style: 출력문 제거

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* style: spotless

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

---------

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* feat: Swagger에 RefresgToekn용 SecuritySchemes 추가 (#148)

* feat: 미션 기록 하루에 한개만 처리 가능하도록 기능 추가 (#130)

* feat: missionId로 해당미션에 오늘 작성된 기록이 있는지 판별하는 existsByMissionIdAndToday 메소드 추가

* feat: 미션 기록 생성 시 오늘 기록된건이 존재하는지 validate 추가

* style: 주석제거

* style: 코드 포메팅 수정

* refactor: 오늘 등록한 미션 일지가 있는지 확인하는 queryDsl 메소드명 변경

* fix: 유틸리티에서 픽스처 및 Mock 인증 삽입 로직 제거 (#149)

* fix: 픽스처 삽입 로직 제거

* fix: 시큐리티 mock 인증 삽입 로직 제거

* fix: 테스트 코드 BeforeEach 멤버 생성 로직 추가

---------

Co-authored-by: uwoobeat <[email protected]>
Co-authored-by: ybchar <[email protected]>

* feat: 진행중인 미션 제거하는 기능 (#153)

* feat: 진행중인 미션 제거하는 기능

* fix: 이미 진행중인 미션 삭제에서 예외 제거

* fix: Transactional read only 제거

* move: 이미 진행중인 미션기록들 삭제 MissionRecord로 이동

* refactor: member final 키워드 추가

* remove: 사용하지 않는 의존성 제거

* feat: 회원 탈퇴 로직 구현 (#155)

* feat: 회원 탈퇴 로직 구현

* feat: @kdomo 리뷰 반영

* fix: 마지막 로그인 시간 테스트 코드 삭제

* fix: SpringBoot Server TimeZone Asia/Seoul로 설정 (#158)

* feat: 마이페이지 프로필 사진 수정과 닉네임 변경 기능 구현 (#157)

* feat: member profile presigned URL 생성

* refactor: Profile Embeddable 객체 정적팩토리 메서드 적용

* refactor: OauthInfo Embeddable 객체 정적팩토리 메서드 적용

* feat: member profile 이미지 업로드 완료처리와 닉네임 변경

* style: spotless

* remove: 사용하지 않는 메소드 제거 (updateMemberStatus)

* style: swagger 응답 예시 값 추가

* refactor: 중복 ImageUrl 생성 코드 중복 제거

* feat: 회원 정보 조회 API (#160)

* feat: 회원 정보 조회 API

* style: spotless

* fix: 진행중인 미션기록 삭제할 때 QueryDsl 메소드 사용하도록 변경 (#162)

* fix: 진행중인 미션기록 삭제할 때 QueryDsl 메소드 사용하도록 변경

* feat: Member final 키워드 추가

* hotfix: develop 서버 CORS 모든 요청 허용으로 변경 (#164)

* hotfix: develop 서버 CORS 모든 요청 허용으로 변경

* style: spotless

* fix: 회원 정보 수정할 때 이미지 nullable 처리 (#166)

* fix: imageFileExtension nullable 처리

* fix: 닉네임 Notnull 처리

* fix: 이미지 null로 넘어왔을 경우 닉네임만 수정

* style: spotless

* fix: 토큰 만료기간 env로 관리 (#169)

* fix: 토큰 만료기간 env로 관리

* fix: 토큰 만료기간 env로 관리

* fix: 토큰 만료기간 default 설정

* feat: 미션 목록 조회 시 인증필요인 경우 MissionRecordId도 같이 응답 (#170)

* feat: Mission 리스트 조회 시 응답값에 MissionRecordId 필드 추가

* feat: 인증 필요인 경우 missionRecordId 값 추가

* style: spotless

* test: MissionFindAllResponse 필드 추가로 test 수정

* style: spotless

* feat: 닉네임 중복검사 (#176)

* refactor: 미션기록 삭제 시 `deleteById` 쿼리가 작동하지 않는 문제 개선 (#173)

* refactor: 고아 객체 사용하도록 개선

* feat: 현재 진행중인 미션기록 삭제 테스트

* style: spotless

* refactor: 엔티티 매니저 제거

* style: spotless

* refactor: 테스트 트랜잭션 제거 및 픽스쳐 분리

* fix: 오타 수정

* fix: 토큰 발급 로직 수정 및 발급 토큰을 쿠키로 관리하도록 개선 #171 (#174)

* feat: 쿠키 유틸리티 구현

* feat: 토큰 재발급 로직 구현

* feat: CORS 설정에 헤더 추가

* feat: 기존 컨트롤러 쿠키에 토큰 추가

* fix: 임시 회원가입 API로 다시 호출하여 토큰 받을 수 있게 수정

* fix: 오타 수정

* chore: 프로덕션 배포 워크플로 작성 (#179)

* chore: production build and deploy script 작성

* rafactor: key 대신 password로 변경

* rafactor: password 사용안하여 key로 변경

* chore: 트리거 릴리즈 태그로 변경

* chore: 이미지 태그 설정 부분 릴리즈 태그 값으로 변경

* chore: production deploy용 워크플로 생성

---------

Co-authored-by: uwoobeat <[email protected]>
Co-authored-by: ybchar <[email protected]>
Co-authored-by: yb__char <[email protected]>
Co-authored-by: Jaehyun Ahn <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
⚙️ chore 빌드 및 CI/CD merged 머지된 PR
Projects
Status: 완료
Development

Successfully merging this pull request may close these issues.

⚙️ 프로젝트 세팅
3 participants