전체 글

전체 글

    [Jenkins] 간략히보는 SonarQube와 Jenkins 연동하기

    간략히보는 SonarQube와 Jenkins 연동하기 EC2를 하나 파서 도커를 설치한다. sudo apt-get update && \ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && \ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && \ sudo apt-key fingerprint 0EBFCD88 && \ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) st..

    [DB] Mysql Order By 쿼리 ONLY_FULL_GROUP_BY 문제 해결

    MySql Order By 쿼리 ONLY_FULL_GROUP_BY 문제 해결 MySql 에서는 Group By 사용 시에 필드에 집계함수만을 사용할 수 있게끔 하기 때문에 생긴 문제다. SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')); 입력해주자. REFERENCE https://stackoverflow.com/questions/23921117/disable-only-full-group-by

    [Nginx] 하나의 Nginx로 여러 upstream 처리하기

    하나의 Nginx로 여러 upstream 처리하기 events {} http { upstream app { server 앱_아이피; } upstream api-dev { server 데브서버_아이피; } upstream api { server 프로드서버_아이피; } # Redirect all traffic to HTTPS // server { // listen 80; // return 301 https://$host$request_uri; // } // // server { // listen 443 ssl; // location / { // proxy_pass http://app; // } // } server { listen 80; server_name api-dev.thankyou-for.com; r..

    [Jenkins] PR 라벨에 따른 젠킨스 빌드 유발 설정

    PR 라벨에 따른 젠킨스 빌드 유발 설정 현재 진행중인 프로젝트의 main 브랜치는 다음과 같이 client와 server 디렉토리로 나뉘게 된다. 각각 프론트와 백이다. 만약 단순히 해당 브랜치가 push 될 때에 빌드 유발을 하게끔 설정해놓는다면 client 디렉토리 내부의 코드가 변경이 생겨서 push 된다고 했을 때에 server를 담당하고 있는 젠킨스 아이템 또한 빌드 유발이 되어 불필요한 CI/CD가 일어나게 될 것이다. main 브랜치는 직접적인 푸쉬가 제한되고 오직 머지를 통해서만 변경이 가능하다는 가정하에, PR 라벨을 통한 효율적인 젠킨스 빌드 유발 설정에 대해 알아보겠다. 기본적인 젠킨스 사용법을 안다는 가정하에 진행하겠다. 보통 빌드 유발 설정 시에 위의 사진에 해당하는 GitHub..

    [JPA] @PrePersist 에 대해

    @PrePersist에 대해 @PrePersist 어노테이션은 JPA 엔티티 라이프 싸이클의 콜백을 조종할 수 있게하는 어노테이션이다. 다음과 같은 어노테이션들이 있다. 이런 콜백 이벤트들을 사용하는 방법은 엔티티 내부에 직접 메서드를 작성해주는 것과 EntityListener를 만들어 주는 방법이 있다. 일반적으로 Auditing을 위해서 EntityLIstener를 사용해본 적이 있을 것이다. 유의할 점은 콜백 메서드들은 void 타입을 리턴해야 한다는 것이다. 내가 엔티티를 만들고 repository의 save메서드를 호출할 때에 @PrePersist가 달린 메서드가 호출이 되고 DB에 insert된 후에 @PostPersist 메서드가 호출이 된다. 만약 내가 @GeneratedValue로 pk를..

    [Spring] Rest Docs 도입 중 맞닥뜨린 asciiDoctor에 대한 에러

    Rest Docs 도입 중 맞닥뜨린 asciiDoctor에 대한 에러 Spring Rest Docs를 하려고 gradle 설정을 하고 테스트도 통과시키고 src/docs/asciidoc/index.adoc 까지 준비를 마쳐놓은 상태였다. 그러고선 빌드를 하니깐 다음과 같은 오류가 나왔다. Type 'org.asciidoctor.gradle. xxx ' property 'xxx' is missing an input or output annotations. 에러 내용에 어떤식으로 해결하라고 나와있는데 저걸 뭘 어떻게 해야될지도 모르겠고... 이전에 똑~~같이 Rest Docs 했는데 왜 안되나 싶었다. 그 이유는 버전 문제인 것 같았다. 이곳에 존재하는 gradle-wrapper..

    [JPA] DATA JPA 사용 시 조심해야할 클래스 명에 대해

    DATA JPA 사용 시 조심해야할 클래스 명에 대해 Member라는 엔티티 내부에 다음과 같은 Enum을 가지고 있다. 그리고 위와 같이 Data Jpa를 사용해 메서드 이름으로 쿼리를 생성하고 있다. 결론부터 말하자면 위의 코드는 컴파일 에러가 발생한다.(Unable to locate Attribute with the the given name) 그 이유는 다음과 같다. 엔티티가 DDL을 이용하여 테이블을 생성할 때에 따로 설정하지 않은 상태라면 필드명을 통해 컬럼명을 정하게 된다. 처음에 맞이하는 대문자들은 소문자로 바꾸고 이후에 맞이하는 대문자들은 언더바를 사용해 표시한다. private String nickName -> nick_name 으로 생성 private String Nickname ->..

    [Spring] Enum에 빈을 주입하는 방법에 대해

    Enum에 빈을 주입하는 방법에 대해 Enum에는 빈을 어떤식으로 주입할까?? 처음에는 다음과 같은 착각을 했었다. 처음에는 위와 같이 착각을 했다. 빈 타입을 필드로 가지고 있으면 무조건 생성자에 적어줘야 된다는 착각 말이다. Enum을 위와 같은 방식으로만 사용을 해왔기 때문에 일어난 착각이었다. 굳이 생성자에 넣지 않아도 되고 위와 같이 넣는다면 빈으로 등록되어있는 GoogleOAuth2를 가져와서 주입해주는 것이 아니라 새로 생성하는 것이 될 것이다. 결국 필드로만 갖게하고 생성자에는 넣지 않았다. 그렇다면 어떻게 이 값을 주입해주어야 할까? 그 방법은 바로 주입을 위한 클래스를 만들어주는 것이다. Enum 내부에 만들어줘도 되지만 나는 따로 클래스를 생성해주었다. 위와 같은 클래스를 정의해 주었..