티스토리 뷰


PART 1

젠킨스로 스프링부트 프로젝트 배포 



1# JDK, Git, Maven 설정

먼저 젠킨스에서 사용할 툴을 설정해준다.

Maven을 이용한 스프링 부트를 배포하기 위해선 JDK, Git, Maven을 설정해준다.


젠킨스 메인화면에서 Jenkins 관리 > Global Tool Configuration을 선택한다.




먼저 JDK를 설정해준다.

서버에 JDK가 깔려있지 않다면 Install automatically를 체크해도 될 것 같다. (해보진 않음)

임의의 이름을 설정해주고, JAVA_HOME에 자바 설치위치를 입력해준다.


[자바 설치위치 찾기]

1
2
3
4
5
6
which javac
> /bin/javac # 얘를 readlink로 찾기

readlink -f /bin/javac
> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el8_1.x86_64/bin/javac
# /bin/javac 까지가 자바 설치 경로




Git 도 마찬가지로 설정해준다.

git은 which 했을때 나오는 경로만 써도 된다.


다음으로 Maven을 설정해준다.

JDK 설정했을때처럼 경로를 적어준다.


2# 새로운 Item

이제 작업을 생성해보자

젠킨스 메인화면 좌측에 새로운 Item을 클릭한다.


이름을 입력하고 Freestyle project를 선택한다.


소스코드 관리 탭으로 가서 git을 설정한다.

초기에는 Credentials가 없으므로 Add를 눌러 추가해준다.

Github의 Username(이메일이 아닌 이름) 과 password를 입력해준다.


URL을 설정하고 Credentials를 설정한다.



다음으로 Build 탭에 간다.

위에서 설정해줬던 mvn을 선택하고, Goals에는


1
clean package -D maven.test.skip=true

를 적어준다.

보통은 clean package 만 적어줘도 되지만 나는 테스트를 실행하지 않기 위해 옵션을 추가해줬다.

그 후 Add build step을 추가해


1
#!/bin/bash
fuser -n tcp -k 8080 # 8080포트에 실행중인 프로세스 종료
BUILD_ID=dontKillMe java -jar target/demo-0.0.1-SNAPSHOT.jar & # 배포

를 적어준다.

드디어 설정이 끝났다! 끝!!


3# 빌드 및 배포

홈에서 해당 프로젝트를 선택한 후 Build Now를 클릭한다.



그럼 Build History에 빌드하고 있는 내역이 나온다.

빌드 번호를 선택 후 Console Output을 선택하면 콘솔창을 확인할 수 있다.


드디어 젠킨스가 끝!



PART 2

오류


포스팅으로는 얼마 안되어 보이지만 중간에 서버가 꺼지거나 오류가 발생해 삽질을 많이했다.


1# 빌드하거나 젠킨스 사용시 서버가 느려지고 멈추는 현상

처음에 빌드 할 때 오류도 안뜨고 서버가 멈춰버려서 오랬동안 삽질했다.

몇번을 빌드하던 중 아래와 같은 오류가 떴다.


1
> [ERROR] jenkins There is insufficient memory for the Java Runtime Environment to continue.

이것은 젠킨스 서버의 메모리가 부족해서 발생하는 에러이다.

따라서 swap memory를 지정해준다.


먼저 swap 공간이 없는 것을 확인해준다.


1
free -h


swap 공간이 없다면 아래 명령어들을 실행해준다.


1
2
3
4
sudo fallocate -l 1G /swapfile # swap 파일 성생
sudo chmod 600 /swapfile # 시스템에서 접근 가능하도록 권한부여
sudo mkswap /swapfile # 파일 포멧 swap으로 변환
sudo swapon /swapfile # swap file 등록




2# Web server failed to start. Port 8080 was already in use.

처음에 빌드 할 때 얘를 안넣었더니 이미 사용하는 포트라고 떴다.


1
fuser -n tcp -k 8080 # 8080포트에 실행중인 프로세스 종료



3# Process leaked file descriptors error on JENKINS

> https://config9.com/apps/jenkins/process-leaked-file-descriptors-error-on-jenkins/




[References]
https://bhsbhs235.github.io/jenkins/2019/12/29/jenkinserror.html
https://velog.io/@minholee_93/ERROR-jenkins-There-is-insufficient-memory-for-the-Java-Runtime-Environment-to-continue.-jnk5uj3aam


이 포스팅에는 플러그인 설치(젠킨스 설치 시 추천 플러그인 설치함) 톰켓(스프링 부트 내장 톰켓 사용)관련 설정이 빠져있다.

댓글