Skip to content

[RELEASE] 1차 배포#100

Merged
hey-sung merged 71 commits intoproductionfrom
main
Apr 9, 2025
Merged

[RELEASE] 1차 배포#100
hey-sung merged 71 commits intoproductionfrom
main

Conversation

@hey-sung
Copy link
Collaborator

@hey-sung hey-sung commented Apr 9, 2025

1차 배포

반영 브랜치

main -> production


🛠️ 개발 사항

1. 소셜 로그인 & 회원가입 기능 개발

  • Kakao, Naver, Google 소셜로그인 개발
    • 소셜로그인 완료 시 UUID 토큰(초대 토큰) 생성 후, Redis에 저장 → 이 정보는 프로필 사진 등록/변경/삭제, 회원가입 API에서 사용
  • 자체 회원가입 API 개발
    • 닉네임 중복 확인 API 개발

2. 파일 시스템 개발

  • 파일 조회/등록/수정/삭제 API 개발
  • type으로 profile, crew, moment 중 하나 선택

3. CREW 관련 API 개발

  • 크루 생성/수정/삭제 API 개발
  • 크루 조회 API 개발
    • 참여한 크루 리스트 페이지네이션 조회 API 개발 (DTO 직접 조회를 통해 N+1 problem 해결)
    • 특정 크루 상세 정보 조회 API 개발
    • 크루원 정보 조회 API 개발
  • 크루 초대 관련 API 개발
    • 크루 리더 권한을 가지고 있는 사용자가, 닉네임을 검색하여 특정 사용자에 대해 크루 초대 가능
    • JavaMailSender를 통해 소셜로그인 과정에서 등록한 이메일을 통해 초대 링크 전달
      UUID 토큰(크루 초대 토큰) 생성 후 Redis에 저장
    • 비동기처리를 통해 크루 초대 메일 전송 API의 성능 개선
    • 크루 초대 요청 API 개발 (크루 초대 토큰을 통해 초대 정보 확인)

4. 모먼트 관련 API 개발

  • 모먼트 생성/수정/삭제 API 개발
  • 다가오는 모먼트 조회 API 개발
  • 크루 내 모먼트 조회 API 개발
  • 모먼트 참여/참여 취소 API 개발
  • 모먼트 상세 정보 조회 API 개발
  • 모먼트 참여자 조회 API 개발

4. 장소 관련 API 개발

  • Kakao REST API를 통해 키워드를 통한 장소 조회 API 개발
    • RestClient를 이용해 외부 API와 통신
  • 키워드를 통해 검색한 장소 결과를 바탕으로, 장소를 등록하는 API 개발
  • 등록된 장소중 하나의 순서를 변경하는 API 개발
  • 등록된 장소 중 하나를 삭제하는 API 개발
  • 장소 등록/순서 변경/삭제 API에 대해 동시성 문제를 다룸
  • Location 테이블에 (location_id, location_index) 복합 유니크 인덱스 설정
  • 특정 모먼트 내에 등록된 장소 리스트 조회 API 개발

hey-sung and others added 30 commits January 28, 2025 21:26
- 이슈 템플릿 생성
- feature, refactor, bug report, fix 템플릿 생성
- 모든 응답 클래스가 상속받을 공통 응답 클래스 작성
- code(ex: CREATED), resultCode(ex: 201) 데이터 포함
- CommonResponse 클래스 상속
- Generic을 이용하여 List 형식의 응답을 할 수 있도록 변수 추가
- 응답의 개수를 확인할 수 있는 count 변수 추가
- CommonResponse 상속
- Generic을 사용하여 여러 타입의 응답을 할 수 있도록 설정
- CommonResponse 클래스 상속
- Paging, Slicing 응답 클래스 작성
- main, production 브랜치로 PR 요청 시, 실행할 워크 플로우 파일 작성
- CommonResponse 클래스 상속
- 비지니스 예외 발생 시 사용할 응답 클래스 작성
…flow

[FEAT] PR 테스트 자동화 워크플로우 작성
[FEAT] 공통 응답 클래스 작성
* refactor: 응답 클래스 구조 변경

- HttpStatus Code(ex: 201, 404)가 먼저 나오도록 변경
- ExceptionResponse에서 예외 메세지를 담는 변수의 이름을 message로 변경

* feat: 비지니스 예외 클래스 및 핸들러 생성

- 비지니스 예외를 담을 BusinessException 클래스 작성
- BusinessException이 발생했을 때 이를 처리할 BusinessExceptionHandler 클래스 생성
- 비지니스 예외 정보를 담을 ErrorCode enum 클래스 생성

* feat: 미처 처리하지 못한 예외를 핸들링 할 클래스 생성

- 비지니스 로직에서 미처 처리하지 못한 예외를 핸들링 할 GlobalExceptionHandler 클래스 작성
- yml 파일 관리를 위한 git submodule 설정
- submodule 설정에 따라 Github Actions에서 서브 모듈에 접근할 수 있도록 token 설정
* feat: 유저 엔티티 작성 - #1

- User 엔티티 작성

* feat: CORS config 클래스 작성

- CORS 클래스 작성: frontend URL인 경우에만 허용하도록 설정

* feat: OAuth2에 필요한 파일 생성

- OAuth2에 필요한 Config 클래스/Handler/Service 생성

* feat: 소셜로그인의 정보를 담을 클래스 생성

- OAuth2UserInfo 추상 클래스를 통해 소셜로그인 성공 후, 필요한 정보들을 담을 수 있도록 설정
- Google, Naver, Kakao 구체 클래스 생성
- Factory 패턴 도입

* feat: 소셜로그인 구현

- oauth2 폴더 삭제 -> security 폴더로 이동
- Google, Naver, Kakao 소셜로그인 구현 완료
- 소셜로그인 완료 시 DB에 저장됨을 확인

* chore: github action 실행 시 yml 파일을 복사하도록 설정

* chore: Update application-test.yml
* feat: Files 엔티티 작성 - #11

- 파일의 정보를 담을 Files 엔티티 작성
- 파일 시스템의 환경 정보를 담고 있는 FileEnv enum class 작성
- 해당 파일이 어떤 정보를 담는 FileType enum class 작성

* chore: AWS S3 의존성 추가 - #11

* feat: 로컬 파일 저장소 구현 - #11

- 파일 업로드, 삭제, 갱신 기능 구현
- 파일 조회(Base64 encoded 문자열로 반환) 기능 구현
- 파일 관련 유틸 클래스 구현

* feat: Files 레포지토리 인터페이스 생성 - #11

* feat: AWS S3 파일 저장소 구현 - #11

- S3Config 클래스를 통해 S3에 필요한 값 설정
- FilesStorage에서 불필요한 메서드(validateFileExist()) 삭제
- BusinessException 생성자 추가 구현

* feat: FilesManager 클래스 구현

- 비지니스 로직을 담고 있는 Manager 클래스 구현
- FilesResponse 응답 클래스 구현

* feat: 파일 컨트롤러 작성 - #11

- 파일 등록/수정/삭제 API 구현
- 파일을 저장해야 하는 클래스에 대하여 FileHolder 인터페이스 구현

* fix: 파일 업데이트 버그 수정

- 저장한 사진에 대하여 사진 변경이 되지 않는 버그 수정
- FilesStorage에 parameter로 전달하는 FileDTO를 잘못 생성하고 있었음

* refactor: FilesStorage에 불필요한 코드 제거

* chore: yml 값 갱신 및 프로퍼티 위치 변경

* chore: yml 값 갱신 및 프로퍼티 위치 변경

* chore: Update git submodule

* chore: 필요없는 코드 삭제
* feat: entity 클래스 작성 - #13

- DB Schema에 따라 entity 클래스 작성
- 특정 필드(LocalDateTime)에 auditing 적용 필요

* feat: auditing 추가 - #13

- BaseTimeEntity 클래스 작성 (생성일자, 마지막 수정일자)
- Crew, ChatMessage, Moment, Location, MomentMember, Notice에 적용

* feat: FileHolder 인터페이스 적용 - #13

- 파일 엔티티와 연관관계를 맺는 엔티티에 FileHolder 인터페이스 구현
* feat: CommonResponse에 정적 팩토리 메서드 작성

- OK(200), CREATED(201) 응답에 대하여 정적 팩토리 메서드 생성

* feat: 닉네임 중복 확인 API 개발

- SecurityConfig를 통해 특정 API의 경우 권한 획득이 필요없도록 설정
- 서비스 계층 분리를 위해 Facade 패턴 적용
- GET /auth/check-nickname?nickname=${닉네임}

* chore: 불필요한 코드 제거

* chore: 코드 스타일 수정

* fix: 로컬 버전 업로드 코드 수정

- 파일을 디렉토리로 인식하는 버그로 인한 코드 수정

* feat: 커스텀 MultipartFile 클래스 구현

- 소셜로그인을 통해 프로필 사진을 다운받아 저장할 클래스 구현

* chore: column 제약 조건 명시

* chore: API 주소 추가

* feat: 소셜로그인 성공 시 실행할 코드 작성

- 소셜로그인 성공 시 실행되는 SuccessHandler 작성
- 소셜로그인 과정에서 프로필 사진에 동의한 경우, 프로필 사진을 다운받아 Files 엔티티에 저장

* feat: 회원가입 API 개발

- POST /api/auth/signup 회원가입 API 구현
- 소셜로그인 성공 시, email이 아닌 user PK 전달하도록 변경(식별 목적)

* feat: 프로필 사진 정보를 받지 못했을 때 기본 프로필 이미지로 설정

- 회원가입 시 프로필 사진 동의 하지 않았을 때, 사용자의 프로필 사진을 기본 이미지로 설정하는 코드 추가
- Files가 null일 때 추가 처리 필요

* refactor: 회원가입 API 응답 구조 변경

- 사용자 PK, 닉네임, 프로필 사진 정보 전달하도록 변경

* feat: Files가 null일 때 더미데이터 전달하도록 변경

- 파일 정보를 가지고 있어야 하는 엔티티(User, Crew, Moment)에 대해 파일이 존재하지 않으면 더미 데이터를 전달하도록 변경
- Files 엔티티에 더미 데이터를 만드는 정적 팩토리 메서드 코드 작성

* feat: oauth2 실패 시 실행할 핸들러 클래스 구현

* feat: 프로필 사진 조회/수정 API 구현

* chore: Update git submodule
* chore: swagger 의존성 추가

* feat: swagger 관련 설정

- SecurityConfig에 swagger 관련 링크는 filterChain을 거치지 않도록 설정
- spring boot 버전 변경 (swagger와 충돌로 인해)
- Configuration 클래스 작성

* feat: DTO에 swagger 어노테이션 추가

- DTO에 @Schema 어노테이션을 통해 swagger에서 보여질 정보 추가

* docs: swagger 어노테이션 추가

- 컨트롤러에 swagger 정보 등록을 위해 별도의 interface 생성 및 정보 등록
* refactor: code 내용 변경

- code에 HttpStatus의 이름이 아닌, ErrorCode 코드명이 들어가도록 변경

* chore: 패키지 분리

* fix: 예외 응답 본문이 제대로 나오지 않는 버그 픽스
* feat: JWT에 필요한 클래스 생성

* feat: jwt 생성 로직 구현

* feat: UserFacade에 메서드 추가

- PK를 통해 User 객체를 찾는 메서드 추가
- 인가 성공 시, 사용자의 정보를 전달하는 메서드 추가

* feat: header에서 JWT 추출하는 코드 추가

* feat: 인가 요청 API 개발

* fix: JWT prefix 버그 수정

* feat: JwtAuthenticationFilter 구현

- access-token, refresh-token 검증 로직 추가
- access-token 만료 시, refresh-token을 통해 재발급하는 로직 추가
- RTR 전략 적용 필요

* feat: 코드 가독성 개선

* chore: redis 의존성 추가

* feat: redis 설정 파일, 레포지토리, 도메인 설정

* feat: RTR 전략 적용

* test: redis embedded 설정 추가

* feat: JwtAuthenticationFilter 예외 처리 로직 추가

- AuthenticationExceptionFilter를 구현하여, 인가 과정에서 예외 발생 시 바로 예외 응답을 발생시키도록 설정

* refactor: Redis repository를 template 형식으로 변경

* feat: 토큰 재발급 시, 커스텀 헤더에 값 전달

* feat: logout 메서드 구현

- JwtFacade에 logout 메서드 구현
- TokenRepository에 userId(key)를 통해 토큰 정보를 삭제하는 메서드 구현

* feat: 토큰 탈취 감지 시 대응 로직 구현

- 토큰 탈취 감지 시 로그아웃 처리 (Cookie 삭제 & Redis에서 토큰 정보 삭제)
- 로그아웃 처리 이후 예외 발생 처리

* feat: 에러코드의 HttpStatus 수정

- JWT 관련 에러코드 중 일부를 UNAUTHORIZED로 변경
- 사용자 관련 에러 코드 중 일부를 CONFLICT로 변경
- 파일 관련 에러 코드 중 일부를 UNSUPPORTED_MEDIA_TYPE / INTERNAL_SERVER_ERROR로 변경

* fix: 커스텀 헤더가 제대로 동작하지 않는 버그 수정

- access-token 재발급 시에만 커스텀 헤더(X-Token-Reissued)에 true값 담아서 전달
- 그 외의 상황에는 false 값 전달

* chore: Update git submodule

* chore: Github Actions workflow에 redis 설정

- workflow에 github actions를 통한 테스트 실행 시 redis가 실행되도록 설정
* test: TokenRepository 테스트 코드 작성

- Embedded에서 TestContainers로 방식 변경
- DCI 패턴을 적용하여 테스트 코드 작성
- 테스트 코드에서 사용할 Fixture 클래스 작성

* test: TokenService 테스트 코드 작성

- Mockito를 활용한 단위 테스트로 진행

* test: JwtFacade 테스트 코드 작성

- Mockito를 사용하여 단위 테스트 진행
- DCI 패턴을 적용하여 계층적인 테스트 코드 작성

* test: UserService 테스트 코드 작성

- Mockito를 활용하여 단위 테스트 코드 작성

* test: UserRepository 테스트 코드 작성

* test: UserFacade 테스트 코드 작성

- mockito를 활용해 단위 테스트 작성
- UserFixture에 정적 팩토리 메서드 추가
* fix: NOT_REGISTERED 상태에서 JWT를 발급할 수 있는 버그 픽스

- JwtFacade에 발급 조건을 확인하는 verifyIssueCondition 메서드 추가
- AuthController에서 해당 메서드 호출
- 테스트 코드 작성

* refactor: access/refresh 토큰 발급 로직에 검사하도록 변경

- access, refresh 토큰 발급 로직에 사용자의 상태가 JWT를 발급받을 수 있는 상태인지 확인하도록 변경
hey-sung and others added 23 commits March 23, 2025 22:27
- 크루 참여 시 참여 인원이 증가하지 않는 버그 픽스
- 크루 내보내기 이후에도 크루가 남아있는 버그 픽스
* feat: 장소 등록 API 구현

- LocalController -> LocationController로 이름 변경
- Place DTO에 @NotNull 어노테이션 추가
- Moment에 낙관적 락 적용

* feat: Location에 복합 유니크 제약 조건 추가

- location_index, moment_id 복합 유니크 제약 조건 추가

* feat: 낙관적 락 예외 발생 시 전달할 에러 코드 추가

* fix: 낙관적 락이 적용되지 않는 버그 픽스

- Moment 엔티티에 낙관적 락이 걸려있으나, 변경사항이 없어 낙관적 락이 적용되지 않는 문제 발생
- 낙관적 락을 통해 Moment 엔티티를 조회하고, modified_at 컬럼을 변경하게 하여 낙관적 락이 적용되도록 변경

* docs: LocationApi에 swagger 정보 추가
* feat: 크루에 대한 나의 정보 조회 API 개발

- 크루에 대한 나의 정보(닉네임, 크루 권한) 조회 API 개발

* docs: swagger 어노테이션 잘못된 부분 수정

* docs: 크루에 대한 나의 정보 조회 swagger 정보 입력

* test: 크루에 대한 나의 정보 조회 테스트 코드 작성
- DB mariaDB에서 MySQL로 변경
- git submodule 업데이트
-build.gradle에 mysql 의존성 추가, mariadb 의존성 삭제
- CrewMemeber 리스트를 받아온 후, CrewMember의 연관관계로 설정되어 있는 User 엔티티를 조회하는 과정에서 N+1 problem 발생
- join, DTO 조회를 통해 N+1 problem 해결
- CrewMemberQueryRepository에서 진행
* feat: 장소 검색 결과에 장소 고유 ID 추가

* feat: 모먼트 상세 정보 조회 API 개발

- 모먼트 상세 탭에서 모먼트 상세 조회 API 개발 (GET /api/moment/{momentId}
- 테스트 코드 작성 필요

* feat: 최대 장소 등록 가능 개수 설정

- 모먼트 당 등록 가능한 장소의 최대 개수를 100으로 설정
- DB 레벨, 어플리케이션 레벨에서 예외 처리

* feat: 장소 정보 리스트 조회 API 개발

- `GET /api/location/{momentId}` 장소 정보 리스트 조회 API 개발
- swagger 정보 추가 필요
- 테스트 코드 작성 필요

* docs: swagger 정보 추가

* docs: swagger 정보 추가

* feat: 모먼트 참여, 참여 취소 API 개발

- 모먼트 참여`POST /api/moment/{momentId}/join`
- 모먼트 참여 시, 기존에 이미 참여한 경우 & 마감 기한이 지난 경우 & 최대 참여 가능 인원 다 찬 경우 예외 발생
- 모먼트 참여 취소 `DELETE /api/moment/{momentId}/join`
- 참여 정보가 있는 경우에만, 참여 정보 삭제 & 모먼트의 참여 인원 수 감소
- MomentFacade의 경우, 필요없다고 판단되는 접미사(moment) 제거
- swagger 정보 입력
- 테스트 코드 작성 필요

* feat: 모먼트에 참여한 사용자 조회 API 개발

- 모먼트에 참여한 사용자 조회 API개발
`GET /api/moment/{momentId}/members`
- swagger 정보 추가

* refactor: 쿼리문을 더 명시적으로 변경

- 모먼트에 참여하는 사용자 목록 조회 쿼리문에 JOIN문 명시적 작성

* feat: 모먼트 참여 검증 조건 추가

- 모먼트가 속한 크루에 참여하지 않은 사용자인 경우, 예외를 발생하도록 조건 추가
* refactor: 모먼트에 참여한 사용자 목록 조회 시 페이징으로 반환하게끔 변경

- 모먼트에 참여한 사용자 목록 조회 시, 리스트로 반환하던 기존 방식에서 무한스크롤로 반환하도록 설정

* test: MomentFacade 테스트 코드 작성
- 특정 크루 내에 속한 모먼트 리스트 조회 `GET /api/moment/crew/{crewId}`
- N+1 문제 해결을 위해 3단계 쿼리 적용 (Moment -> MomentMember -> Location 차례로 조회)
- swagger 정보 입력
* refactor: 참여 중인 크루 페이지네이션 기본 사이즈 값 변경

- 페이지네이션 사이즈 기본 값을 10 -> 20으로 변경

* feat: 다가오는 모먼트 조회 API 개발

- 다가오는 모먼트 조회 API 개발 `GET /api/moment`
- N+1 문제를 해결하기 위해 다단계 쿼리 방법 사용
- 제일 가까운 순서대로 조회하지 않고 있는 버그 픽스 필요

* fix: 제일 가까운 순서대로 조회하지 않고 있는 버그 픽스

- 초기에 MomentMember 조회 시 Moment 테이블 JOIN해서 조회하는 방식으로 버그 픽스
- swagger 정보 입력 필요

* docs: swagger 정보 입력
- 크루 초대를 통한 참여 시, 최대 인원(500명)이 이미 차있을 때 INVALID_CREW_CAPACITY 예외 발생
- 모먼트 생성 시, request body로 보낸 capacity가 500명 초과일 때 INVALID_MOMENT_CAPACITY 예외 발생
- Crew, Moment 엔티티의 컬럼에 최대 값(500) 설정
- 다가오는 모먼트 응답 필드가 crew 식별자(PK) 값 추가
* refactor: 모먼트 상세 조회 응답에 필드 변경

- MomentResponse의 isJoined 필드를 참여 정보를 나타내는 ParticipantStatus 값으로 변경
(참여중, 마감, 참여가능 중 1개 반환)
- 비지니스 로직 변경으로 인해 테스트 코드 변경

* test: 테스트 코드 수정

- 응답 필드 변경으로 인해 테스트 코드 수정
* refactor: 모먼트 상세 조회 응답 필드 변경

- status 항목을 isJoined, isClosed 항목으로 분리
- isClosed 항목 처리를 위해  매개변수에 LocalDateTime 추가
- 비지니스 로직 변경으로 인해 테스트 코드 수정

* refactor: 크루 내 모먼트 조회 응답 필드 변경

- 크루 내 모먼트 조회 DTO `MomentPreviewResponse` 필드 변경
- ParticipantStatus는 사용하지 않아 삭제 처리
* feat: 장소 삭제 API 구현

- 장소 삭제 API `DELETE /api/location/{momentId}?index={index}`
- 삭제하고자하는 장소가 없는 경우(momentId, index에 해당하는 Location이 없는 경우) LOCATION_NOT_FOUND 예외 발생
- 성능 이슈로 인해 다른 장소들의 인덱스 변경 시, UPDATE문을 통해 bulk 연산 수행
- @Modifying의 낙관적 락 우회 이슈로 인해, 쿼리에서 직접 moment 버전 확인하도록 변경
- swagger 정보 입력 필요

* fix: 장소 삭제 중 예외 발생 시 재시도 로직 추가

* feat: 재시도 조건 수정 및 예외 추가 처리

- 요청한 인덱스가 범위 내 인덱스 여부인지 판단 후, 아니라면 INVALID_LOCATION_INDEX 예외 발생
- 삭제하고자 하는 인덱스가 마지막 인덱스일 때에는 갱신된 rows 수 검사하는 로직 적용 X
- 인덱스 범위 검사 후, 인덱스를 찾을 수 없는 경우에는 동시성 문제이므로, CONCURRENT_MODIFICATION_EXCEPTION 예외를 발생시키도록 설정

* docs: swagger 정보 추가
* refactor: 장소 등록 API 스펙 변경

- 장소 등록 요청 시, request body에 등록할 index를 더 이상 전달하지 않아도 됨
- 비지니스 로직 내에서 index 알아서 처리
- 재시도 로직 추가 필요

* feat: 재시도 로직 분리 및 장소 추가 API에 적용

- 재시도 로직을 별도의 클래스로 분리 (RetryHandler, RetryableOperation)
- 장소 추가 API에 재시도 로직 적용

* feat: 모먼트 참여자가 아닌 경우 예외 발생

- 장소 추가 API 요청 시, 모먼트 참여자가 아닌 경우 MOMENT_PARTICIPATION_NOT_FOUND 예외 발생하도록 처리
- 예외 메세지를 더 명확하게 변경
* feat: 장소 순서 변경 API 개발

- 장소 순서 변경 API 개발 `PATCH /api/location/{momentId}`
- request body에 수정하고자 하는 인덱스(originalIndex), 바꾸고자하는 인덱스(newIndex)를 받음
- 모먼트 참여 정보가 없을 때, request body에 담긴 값이 유효하지 않을 떄 예외 발생
- (moment_id, location_index) 복합 유니크 제약 조건으로 인해, 인덱스를 음수로 변경한 후, 다시 양수로 변경하는 로직 적용
- curl을 이용한 동시성 테스트 필요
- swagger 정보 입력 필요

* chore: 메서드명 변경

- 메서드의 이름을 더 명확하게 변경

* docs: swagger 정보 입력

- 장소 순서 변경 API에 swagger 정보 입력

* chore: ExceptionHandler 패키지 생성

- exception 패키지 내에 handler 하위 패키지 생성 및 ExceptionHandler 클래스 위치 이동

* fix: 장소 삭제 요청 시 �발생하는 이슈 해결

- 장소 삭제 API 요청 시, row lock으로 인해 발생하는 deadlock & unique 제약 조건 이슈 해결
- 벌크 연산 시 unique 제약 조건으로 인해 데이터가 정상적으로 갱신되지 않는 문제 발생
- 변경 대상 행들의 location_index를 모두 음수로 변환 후, 다시 양수로 변환하는 방법을 이용하여 이슈 해결

* �chore: 코드 가독성 향상

- 여러 개 행의 인덱스를 한 번에 갱신하는 코드를 service 클래스에 통합하여 Facade 클래스의 가독성 향상
- 장소 삭제/순서 수정 API 요청 시 만남 장소에 대해서도 처리되는 버그 픽스
- 요청 인덱스 유효성 확인 조건문에 인덱스의 값을 "1 미만"에서 "1 이하"로 변경
- 에러 코드 메세지 수정
* chore: docker compose 빌드 파일 추가

- Dockerfile, docker compose 파일 작성
- docker compose up 명령어를 통해 mysql, redis, spring 서버를 띄울 수 있도록 설정
- 로컬에서 테스트 완료
- git submodule 업데이트

* chore: github actions 워크플로우 작성

- production 브랜치에 CI/CD 워크플로우 작성
- 테스트 목적으로 pull request 요청 시에도 실행되도록 설정
- docker hub 레포지토리에 올라가는지 테스트하

* chore: git submodule 갱신

* chore: 빌드 관련 업데이트
@hey-sung hey-sung added the 📡 infra 인프라 관련 작업 label Apr 9, 2025
@hey-sung hey-sung self-assigned this Apr 9, 2025
@hey-sung hey-sung added this to HERE-WE Apr 9, 2025
@hey-sung hey-sung moved this to In review in HERE-WE Apr 9, 2025
@github-actions
Copy link

github-actions bot commented Apr 9, 2025

Test Results

124 tests   124 ✅  3s ⏱️
 53 suites    0 💤
 53 files      0 ❌

Results for commit 8c781d7.

@hey-sung hey-sung merged commit c38f97d into production Apr 9, 2025
2 checks passed
@github-project-automation github-project-automation bot moved this from In review to Done in HERE-WE Apr 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

📡 infra 인프라 관련 작업

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant