전체 글

전체 글

    [Git] PR 생성 및 수정 시 Jacoco 검증이 수행되도록 하기

    [Git] PR 생성 및 수정 시 Jacoco 검증이 수행되도록 하기

    Github Actions를 사용해서 PR 생성, PR에 새로운 커밋 push, PR 재오픈 등 PR 관련 이벤트 발생 시 Jacoco 테스트 커버리지 검증이 자동으로 수행되도록 할 수 있다.GitHub Actions 워크플로우 만들기GitHub Actions는 CI/CD를 포함한 여러 작업의 워크플로우를 자동화할 수 있는 툴이다. GitHub Actions 설명서워크플로우는 .github/workflows 디렉토리에 만들면 된다.레포지토리 최상위 위치에 .github 디렉토리가 없다면 만들고, 그 하위에 workflows 디렉토리를 만든다..github/workflows 디렉토리 하위에 yml 파일을 만들고 워크플로우를 작성한다.나는 파일명을 pr_jacoco.yml로 했다.name: {액션 이름} ..

    프로젝트에 Jacoco 적용하기

    프로젝트에 Jacoco 적용하기

    JaCoCo가 무엇인지에 대해서는 이전 글에서 다루었다. (링크: JaCoCo란?)우아한 기술블로그에 연철님이 작성하신 Gradle 프로젝트에 JaCoCo 설정하기를 참고하여 적용하였다. 개발 환경나는 Java 21, SpringBoot 3.3.3, Gradle 9.0을 사용하고 있다. 1. build.gradle의 plugins 블럭에 jacoco 플러그인 추가plugin { ... id 'jacoco' ...} 2. jacoco 블럭을 만들어서 버전, 테스트 결과 리포트를 저장할 경로 지정속성으로는 toolVersion과 reportsDir이 있다.toolVersion: JaCoCo 버전 (필수)JaCoCo Releases (GitHub)에서 릴리즈된 버전 정보를 확인할 수 있다.re..

    Jacoco란?

    Jacoco란?

    JaCoCo를 적용하는 방법은 다음 글에서 소개하고, 이 글에서는 JaCoCo에 대한 간단한 설명만 다룹니다. JaCoCo 적용 방법 링크: 프로젝트에 JaCoCo 적용하기 1. JaCoCo 소개JaCoCo란 무엇인가? Java Code Coverage를 의미자바 어플리케이션의 코드 커버리지를 측정하는 도구주로 단위 테스트, 통합 테스트와 함께 사용되며, Java 5 이상에서 사용 가능 코드 커버리지란?테스트 코드가 애플리케이션의 실제 코드를 얼마나 실행했는지를 나타내는 지표테스트 코드가 애플리케이션의 주요 로직을 모두 실행하지 않았다면, 그 로직은 문제가 있을 수 있다. (테스트하지 않은 로직이므로)커버리지 측정 지표각 지표는 테스트 코드가 코드의 특정 부분을 얼마나 잘 실행하고 있는지를 나타니며,이 ..

    [Git] .gitignore 파일이란? + 편리하게 만드는 법

    [Git] .gitignore 파일이란? + 편리하게 만드는 법

    .gitignore 파일이란?개발 과정에는 무수히 많은 파일이 생겨난다.그 중 커밋할 필요가 없는 파일이나 커밋하면 안 되는 파일도 있다.이런 파일들을 git이 관리하지 않도록, 즉 커밋 대상으로 인식하지 않도록 하기 위해서는 .gitignore 파일을 사용한다..gitignore 파일에 버전 관리에서 제외하고 싶은 파일이나 폴더를 입력하면 된다. .gitignore가 필요한 경우빌드된 파일: 컴파일 후 생성되는 바이너리 파일이나 배포를 위한 파일 등은 소스 코드가 아니기 때문에 버전 관리에 포함할 필요가 없다C/C++: \*.o, \*.a, \*.soJava: \*.class의존성 관리 파일: 의존성 관리 도구가 설치하는 라이브러리들은 프로젝트 내에서 자동으로 설치될 수 있기 때문에 버전 관리에서 제외..

    [Spring/SpringBoot] SpringBoot 프로젝트 세팅하기

    [Spring/SpringBoot] SpringBoot 프로젝트 세팅하기

    스프링부트 프로젝트를 처음 세팅하려면 어떻게 해야할까?직접 디렉토리와 파일을 만들면서 프로젝트를 세팅해도 되지만, 클릭 몇 번으로 자동으로 생성해주는 사이트(http://start.spring.io)를 이용할 수도 있다. 왼쪽 부분에서 프로젝트 구성 방법과 언어, 스프링부트 버전, 자바 버전, 프로젝트 메타데이터 등을 입력하고,오른쪽 부분에서 ADD DEPENDENCIES 버튼을 눌러 프로젝트에 필요한 의존성을 추가해주면 된다.그 다음, 하단의 GENERATE 버튼을 누르면 zip 파일이 다운로드 되고, 이를 압축 해제한 후 프로젝트를 구현하면 된다.

    [GitHub] Issue 템플릿 & PR 템플릿 만들기

    [GitHub] Issue 템플릿 & PR 템플릿 만들기

    Issue 템플릿 만들기간편하게 github에서 기본 제공하는 UI를 사용하는 방법하는 방법과 마크다운 또는 yml을 사용해서 직접 만들 수 있는 방법이 있다.Issue 템플릿 만드는 방법 1레포지토리 > Settings > General > Issues 하위의 Set up templates 클릭Add template 버튼 클릭해서 원하는 템플릿 선택Preview and edit 버튼 클릭해서 미리보기 및 필요에 따라 수정 후 Propose changes 버튼 클릭Issue 템플릿 만드는 방법 2레포지토리 최상위 위치를 기준으로 ./.github/ISSUE_TEMPLATE/ 하위에 yml 파일 또는 md 파일을 추가하여 만들 수 있다.여러 개를 만들 수 있고, 참고로 yml로 만들었을 때가 더 이쁘다.자..

    [Spring] Interceptor

    Interceptor란? intercept의 사전적 의미 : 중간에 가로채다 HTTP 요청 처리 중에 발생하는 이벤트를 가로채고 처리하는 객체 특정한 URL 패턴 또는 컨트롤러에 대해 공통으로 적용되는 작업을 수행할 수 있다. 좀 더 정확하게 말하면, controller의 핸들러(클라이언트가 요청한 url에 따라 실행되는 메서드)를 호출하기 전과 후에 요청과 응답을 가로채서 원하는 동작을 추가할 수 있도록 해준다. (ex. 로그인 체크, 응답에서 알림 개수 조회) 동작 과정 구현방법 1. HandlerInterceptor 인터페이스 구현하기 Interceptor를 만드려면 HandlerInterceptor 인터페이스를 implement한 객체에 preHandle(), postHandle(), afterC..

    [웹 백엔드] 웹서버와 WAS를 분리하는 이유

    [웹 백엔드] 웹서버와 WAS를 분리하는 이유

    WAS (Web Application Server) Web Applicatoin Server의 약자로, 웹 애플리케이션을 실행할 수 있는 미들웨어 (WAS에 대한 자세한 설명은 아래 게시글에 나와 있습니다.) [웹 백엔드] WAS WAS (Web Application Server) Web Applicatoin Server의 약자로, 웹 애플리케이션을 실행할 수 있는 미들웨어 (미들웨어에 대한 설명은 여기에서 참고) 애플리케이션 실행 환경을 구축하고, 다양한 기능을 제 yejinlife.tistory.com 웹서버와 WAS를 분리하는 이유 성능 및 확장성 웹 서버는 정적인 파일을 처리하고, WAS는 동적인 요청을 처리한다. 웹 서버와 WAS를 분리함으로써 각각의 역할에 특화된 서버를 구성하고, 성능 및 확..

    [웹 백엔드] WAS

    [웹 백엔드] WAS

    WAS (Web Application Server) Web Applicatoin Server의 약자로, 웹 애플리케이션을 실행할 수 있는 미들웨어 (미들웨어에 대한 설명은 여기에서 참고) 애플리케이션 실행 환경을 구축하고, 다양한 기능을 제공하여 개발자와 서버 운영자가 각각의 역할에 집중할 수 있도록 지원 웹 애플리케이션은 동적인 컨텐츠를 제공하기 위해 서버 측에서 프로그램 코드를 실행해야 하는데, 이를 가능하게 해주는 것이 WAS 웹 서버와 마찬가지로, 클라이언트의 요청에 대한 응답을 생성하는 데 사용 웹 서버는 정적인 컨텐츠를 제공하는 것이 주된 역할이고, WAS는 애플리케이션 로직을 실행하는 것이 주된 역할 웹 애플리케이션을 실행하기 위해 필요한 자원, 라이브러리, 클래스, 데이터베이스 등을 관리하..