[CICD] AWS EC2 Jenkins GitHub 설정

2020. 12. 11. 11:29CICD

1. Jenkins 설정

1) Global Tool Configuration

Global Tool Configuration

2) JDK 설치 폴더 경로 추가

JDK설치 폴더 경로는 which, readlink 명령으로 찾을 수 있다.

which javac
readlink -f /usr/bin/javac

Install automatically 항목을 비활성화하고 찾은 경로의 폴더를 입력해준다.

JDK 설치 폴더 경로 추가

3) 깃 바이너리 파일 경로 추가

동일한 화면에서 깃의 바이너리 팡리 경로를 추가해주도록 한다.(깃이 설치되어있다는 전제)

깃 바이너리 파일 경로 추가

4) Gradle 설치 폴더 경로 추가

프로젝트 내의 gradle을 사용하기 때문에 안해도 된다. 만약 할 경우, gradle을 설치하고 해당 경로를 추가해주면 된다.

sudo wget https://services.gradle.org/distributions/gradle-5.2.1-bin.zip
sudo mkdir /opt/gradle
sudo unzip -d /opt/gradle gradle-5.2.1-bin.zip
export PATH=$PATH:/opt/gradle/gradle-5.2.1/bin

Gradle 설치 폴더 경로 추가

5) GitHub Integration 플러그인 설치

GitHub Integration 플러그인 설치

6) 새로운 아이템 등록

새로운 아이템 생성

깃 허브 프로젝트 URL 입력 시, 마지막에 '/'를 붙여주도록 한다.

깃 허브 프로젝트

소스 코드 관리 부분에는 프로젝트 리포지토리 URL을 등록하고,  깃허브에서 발급 받은 토큰을 Credentials에 추가해준다. 해당 토큰은 외부로 유출되어선 안되니 주의해야한다.

소스 코드 관리

Giuhub 저장소에 push에 의한 hook 이벤트 발생시 빌드를 유발하도록 GitHub hook trigger for GITScm polling 항목을 활성화해준다.

빌드 유발

Gradle 빌드 툴 기반으로 프로젝트를 생성했기 때문에 Build에는 gradlew를 Jenkins에서 실행할 수 있도록 권한을 부여해주고 Tasks에 실행할 Task 목록을 입력한다. (Invoke Gradle은 서버에 설치되어있는 Gradle을 사용할 때 사용)

Build

마지막으로는 깃허브 프로젝트 설정에서 Webhooks를 등록해준다. Payload URL에는 해당 Jenkins 서버 URL에 'github-webhook'를 입력하여 Webhooks를 설정해준다.

Webhooks

7) 구현 화면

이 후 Jenkins 서비스를 재구동하고 git push를 할 경우 정상 작동이 되는 것을 확인할 수 있다. 

구현 화면


AWS EC2에 Jenkins 서버 구동 시 JVM 구동에 필요한 메모리 부족으로 인한 오류를 확인할 수 있다. 이는 시스템의 물리적 RAM 또는 SWAP 공간이 부족하거나 프로세스 크기 제한에 도달할 경우 발생한다.

OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000eaaa0000, 178978816, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 178978816 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /var/lib/jenkins/.gradle/daemon/5.6.4/hs_err_pid2055.log

물리적인 메모리를 늘릴 수 없기 때문에 SWAP 공간을 늘리는 방법으로 해결할 수 있다.

// SWAP 공간 확인
free -h

// 크기는 1.5에서 2배로 설정하는 것을 권장
sudo mkdir /var/spool/swap
sudo touch /var/spool/swap/swapfile 
sudo dd if=/dev/zero of=/var/spool/swap/swapfile count=2048000 bs=1024

// 시스템 접근 허용
sudo chmod 600 /var/spool/swap/swapfile

// 파일 포맷을 SWAP으로 변환 후 SWAP file 등록
sudo mkswap /var/spool/swap/swapfile
sudo swapon /var/spool/swap/swapfile
sudo swapon -s

// 파일 시스템 테이블 등록
sudo vi /etc/fstab

// SWAP이 0에서 늘어난 것을 확인
free -h

- 파일 시스템 테이블

/var/spool/swap/swapfile    none    swap    defaults    0 0

[참고] bhsbhs235.github.io/

[참고] github.com/ozofweird/SpringBoot_Test

[참고] aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-memory-swap-file/

728x90

'CICD' 카테고리의 다른 글

[CICD] AWS EC2 Jenkins 프로젝트 War 배포  (0) 2020.12.11
[CICD] AWS EC2 Jenkins 설치  (0) 2020.12.11
[CICD] CI, CD  (0) 2020.12.11