- Today
- Total
개발하는 고라니
[Jenkins] 젠킨스로 Spring Boot 빌드 본문
현재 혼자 프로젝트를 하는 거라 지속적 통합(CI)은 굳이 필요하지 않지만, 지속적 배포(CD)는 절실히 필요성을 느껴 CI/CD를 공부하는 중이며, tool은 Jenkins를 써보려 한다.
우선 Jenkins와 친해지기 위해 간단한 Spring Boot 프로젝트를 Jenkins로 빌드하는 과정을 경험해보자.
목차
- Spring Boot project 생성
- Github Repository 생성 후, boot Project 연동
- Jenkins Job 생성
- Jenkins Job 빌드
스프링 부트 생성
방법은 많지만 대표적으로
1) start.spring.io 에서 jar파일을 받아 생성하는 것과
2) IDE에서 생성하는 방법
이 있는데 나는 IntellJ에서 생성할 것이다.
- Java 11
- Gradle
- Spring Web, Lombok(없어도됨) dependency만 추가한다.
Github Repository 생성
부트 프로젝트가 초기화 되는 동안, Github에 새로운 Repo를 생성하고, 스프링 부트 프로젝트를 올려보자.
jenkisnTest라는 리퍼지토리를 만들고... 부트 프로젝트가 설치된 곳에서 git command를 킨다.
$ git init
$ git remote add origin https://github.com/rhacnddl/jenkinsTest.git
$ git add .
$ git commit -m "first commit"
$ git push origin master
push 까지 마치면 github에 업로드 된 것을 확인할 수 있다.
Jenkins 플러그인
Jenkins를 설치하고 로그인 해서 플러그인이 잘 있는지 확인한다. 설치할 때 Recommand로 설치했으면 왠만한 것이 다 깔려있다. 플러그인 중 Gradle, Github API, Github 이 있는지 보자.
잘 설치되어 있음을 확인했다.
Jenkins Global Tool Config
JDK와 Gradle을 설정해주자. 나는 java 11로 설정하였다.
Jenkins 프로젝트 만들기
'Freestyle project'를 선택하고 이름을 아무거나 준다.
그러면 설정 창이 뜨게 되는데,
- github 리퍼지토리의 내용을 빌드하고,
- git으로 소스코드 관리하고,
- gradle로 빌드할 것이라고 알려준다.
- 빌드 결과를 Email로 달라고 한다.
이제 Save 하면 간단하게 설정이 끝난다.
Jenkins로 Build
Build Now를 누르면 빌드가 시작된다!
이렇게 히스토리가 뜨는데 각 번호를 클릭해서 'Console Output'을 보면 빌드되는 과정이 보인다.
잘 빌드가 되면 Green Sign이 뜬다.
Jenkins에게 알림 받기
Green Sign이 뜨면 상관없지만, 빌드가 실패해서 Red Sign이 뜨면 이메일이 날라오게 설정하였다. Test에 일부러 예외를 발생하는 코드를 넣고 빌드 해보도록 하자.
package com.example.jenkinstest.temp;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.List;
public class TempTests {
@Test
void testV1(){
List<String> list = new ArrayList<>();
String str = list.get(0);
System.out.println(str);
}
}
이제 다시 add-commit-push를 하고 jenkins에서 build를 한다.
원하던 바와 같이 Red Sign이 떳고 메일을 확인해보면,,,
메일이 안와있다. 당연한 것이다. 메일을 어디서 보낼 것인지 설정하지 않았기 때문이다.
이건 다음 포스팅에서 간단하게 다뤄보겠다.
'Open Source > Jenkins' 카테고리의 다른 글
[Jenkins] GCP + Docker + Jenkins를 이용한 CI / CD (0) | 2021.10.03 |
---|---|
[Jenkins] Github 연동, push 후 빌드 자동화 (2) | 2021.09.29 |
[Jenkins] Pipeline (2) | 2021.09.28 |
[Jenkins] 젠킨스로 E-mail 받기 (0) | 2021.09.27 |