Dev

·Dev/Infra
[개요]이번에 개인 프로젝트를 진행하면서 Jenkins를 사용해서 CI/CD를 구축했다.평소에 EC2 인스턴스에 Jenkins만 띄워서 사용하다가 Windows 버전의 Jenkins를 사용해서 파이프라인을 구축해 봤는데 자료들을 많이 찾아봤음에도 Windows 버전의 Jenkins를 사용해서 CI/CD를 진행한 자료들을 찾아볼 수 없었다.그래서 이왕 성공한 거 Jenkins for Windows를 이용해서 구축하려는 사람들을 위해 포스팅해보려고 한다. [과정]0. 사전 준비EC2 인스턴스SSH 클라이언트 (필자의 경우, Xshell을 사용했다.)WSL2 (Windows 환경 내에서 Linux와 Docker Desktop을 이용하기 위함. Jenkins 파이프라인 내에서 Docker Image Build ..
[상황] UserController를 Unit test 하던 도중에 기대한 값이 호출되는 것이 아닌 oauth URL로 리다이렉트 되는 상황 [원인] 여러 방법을 시도하던 도중 가상의 user를 mock 하고 돌려보니 성공했다. 원인을 확인하니까 Security 단에서 아무 역할을 가지지 않은 유저 (GUEST) 가 API를 호출하게 되면 자동적으로 리다이렉트를 시킨 것이 원인이 되었다. (그런데 왜 굳이 OAuth로 리다이렉트를 하는 것인가는 아직 확인이 안됐다...) [해결] 테스트 클래스에 @WithMockUser(roles = "USER") 어노테이션을 붙여서 가상의 User를 Mock 해주고 테스트를 진행하니 성공했다.
[상황] Repository 테스트를 진행하는 과정에서 두 객체가 같음을 기대했으나 다르다는 결과가 떴다. [해결] 각 자식 엔티티에 @EqualsAndHashCode 달아주어 재정의 해줘서 해결 [참고] https://velog.io/@mooh2jj/equals%EC%99%80-hashCode%EB%8A%94-%EC%96%B8%EC%A0%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%EA%B0%80
[문제] 회원가입을 한 뒤에 생성된 객체의 id 값을 반환하게 로직을 구현했고, 이를 postman으로 테스트를 진행하였다. 테스트는 무사히 통과하는듯 싶었으나 responsebody 에 아무 응답없이 통과되었다. [원인] 잘못된 DB 설계 -> 상속관계에 대한 매핑 전략에서 자식 엔티티에 컬럼으로 id를 지정해줌으로써 생긴 문제. 전략을 단일 테이블 전략으로 진행했기 때문에 id 또한 user의 id를 가지고 오는게 맞으나 자식 엔티티에 있는 id 컬럼의 값을 가져왔기 때문에 null이 떴던 것. [해결] // ... @Entity @DiscriminatorValue("institution") public class Institution extends User { @Id @GeneratedValue(s..
[문제] 상속관계 Entity(User -> Individual, Institution)를 매핑하여 사용하여 Repository Test를 진행하던 도중 id로 객체를 찾아 일치하는지에 대한 여부를 확인하였는데 Optional.isPresent() 에서 에러가 발생한 상황 [원인] 로컬 DB에 연결 되어있는 것이 아니라 팀 공용 DB에 연결되어있어 매번 테스트를 진행할 때마다 Auto Increment가 진행되어 초기에 지정한 id로 객체를 찾아오지 못하던 것 [해결] 보통 Repository test에서 객체를 찾을 때, ddl-auto의 옵션에 create를 걸지 않는 이상 id로 컬럼을 찾지 않는다고 한다. 그래서 해당 객체가 가진 정보 중 username, email 등으로 찾으면 쉽게 테스트가 ..
제로버드
'Dev' 카테고리의 글 목록