티스토리 뷰
[Jenkins]ec2 + Spring Boot + Maven + Git + Jenkins - 2.Jenkins로 스프링 프로젝트 배포
rangrangerang 2020. 3. 1. 20:20PART 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
'Jenkins' 카테고리의 다른 글
[Jenkins]ec2 + Spring Boot + Maven + Git + Jenkins - 1.ec2에 Jenkins 설치 (4) | 2020.02.28 |
---|
- Total
- Today
- Yesterday
- timestamptz
- timestamp without time zone
- 제우스8.5
- LinkedBlockingQueue
- 네트워크
- 다중 데이터소스
- db 두개
- jeus8.5
- php
- SynchronousQueue
- multiple datasource
- 주키퍼 없는 카프카
- kafka with raft
- kafka without zookeeper
- 쓰레드 변수
- 넥서스 파일 보관주기
- cleanup policy
- API Gateway
- docker
- ThreadPoolExecutor
- s3
- 제우스 로그
- 카프카
- 넥서스 보관주기
- 제우스8
- cleanup policies
- 보관주기
- AWS
- 도커
- jeus8
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |