Woopii Vyeolog

[Jenkins] Jenkins ~ Github 연동, 자동 빌드, 배포 (SpringBoot, Maven) 본문

Jenkins

[Jenkins] Jenkins ~ Github 연동, 자동 빌드, 배포 (SpringBoot, Maven)

WooPii 2022. 1. 26. 02:29

● 먼저 Jenkins 가 설치되어 있어야 한다.

https://woopi1087.tistory.com/69

 

[Linux, Centos7] Jenkins 설치

● Centos7에 Jenkins 설치 1. .Jenkins가 설치 되어 있는 지 확인 명령어 =====> yum list installed | grep jenkins 2. Jenkins 설치파일을 저장소에 다운로드 명령어 =====> wget -O /etc/yum.repos.d/..

woopi1087.tistory.com

 

 

● Jenkins ~ Github 연동

1. Centos에 Git 설치

명령어 =====> sudo yum install -y git-all

 

2. Jenkins 콘솔 화면에서 '새로운 item' 항목 선택

프로젝트명 입력 후 'Freestyle project' 항목 선택

 

 

3. 'Genaral' 항목에서  Github project 선택 후 github의 프로젝트 주소 입력

 

4. 소스 코드 관리 항목에서 git 선택 후 Repository URL 을 입력하면 빨간글씨로 문구가 나온다

아이디와 비밀번호 인증말고 엑세스 토큰을 발급받으라는 의미이다.

 

5. Github에 접속해서 Github Settings -> Developer settings -> Personal access token 항목으로 들어간다.

그 후,  'Generate new token' 선택

 

6. 설명, 만료 기한 scope 를 설정 후 생성 버튼을 누른다

 

7. 토큰이 생성되면 토큰을 복사할 수 있는 키가 나온다(잘 복사해 놓는다.)

 

8. Jenkins 콘솔에서 Jenkins 관리 -> Manage Credential -> Stores scoped to Jenkins -> System -> Global Credentials -> adding some credentials 항목으로 이동한다. 

 

 

9. 인증 정보를 입력한다.

Kind : username with password 선택

scope : Global 선택

username : github 사용자 계정을 입력

password : 복사한 엑세스 토큰 키를 입력한다.

ID : git 이 jenkins에게 Credential을 줄 때 인식할 수 있도록 값 입력 (임의의 값 입력)

Description : 설명

 

10. 다시 프로젝트를 구성한다. (아까처럼 에러가 뜨지 않는다.)

 

11. build 항목에서 Execute shell 선택 후 

 

##invoke top-level Maven targets 를 선택 후 './mvnw clean install -DskipTests' 입력해도 되지만

mvn 명령어를 사용했기 때문에 jenkins에 maven은 설치해야 한다. 

## 그 과정을 없애고자 maven프로젝트에 생성된 maven wrapper(mvnw) 를 사용함

 

12. 프로젝트에서 빌드 Now를 입력하면 빌드 성공

 

● 자동 빌드 설정(gitHub에 push 시 자동으로 빌드)

1. jenkins 프로젝트의 빌드 유발 항목에서 GitHub hook trigger for GITScm polling 선택

 

2. github로 가서 프로젝트의 repository의 settings안에 Webhooks 항목으로 이동 후 'Add webhook' 선택

 

3. Payload URL 항목에 http://{Jenkins 접속 도메인}:{접속 포트}/github-webhook/ 입력

그리고, Content Type은 application/json 선택

또, 'Which events would you like to trigger this webhook?' 항목은 'Just the push event.' 선택

 

4. 이후 소스를 커밋하면 자동으로 jenkins에서 빌드 진행

 

 

● 빌드 후 자동 배포

1. post build task 플러그인 설치

 

2. Jenkins 프로젝트 설정의 '빌드 후 조치' 항목을 선택 후 'Post build task' 선택 후 log text에 'BUILD SUCCESS' 을 입력하고 script에는 다음과 같이 입력한다.

PROCESS=$(ps -ef | grep clone_louisquatorze-0.0.1-SNAPSHOT.war | grep -v grep | awk '{print $2}')
if [${PROCESS} == ""]
then
  echo "NO PROCESS!!!"
else
  kill -9 ${PROCESS}
fi
BUILD_ID=dontKillMe /var/lib/jenkins/workspace/cloneLouisquatorze_server/startup.sh;

을 넣었다.

## maven은 빌드 성공 후 'BUILD SUCCESS' 문구가 뜨기 때문에 Log text에 'BUILD SUCCESS' 넣어주면

빌드 성공 시 내가 지정한 스크립트를 수행하게 된다. 

## if문을 통해 프로세스가 떠 있는지 확인 후 프로세스가 기동 중이면 종료 후 다시 시작하는 스크립트가 있다.

## BUILD_ID=dontKillMe 가 필요한 이유는 jenkins는 빌드를 수행하고 나면 child process를 전부 죽이게 된다.

그래서 Application을 실행하는 스크립트도 죽이게 되는데, 위 문구가 그 스크립트를 안죽이게 만드는 스크립트이다. 

## startup.sh 샘플

#!/bin/sh
nohup java -jar ./target/clone_louisquatorze-0.0.1-SNAPSHOT.war >> ./nohup.log &

 

3. 이후 수정된 소스를 push하면 Jenkins에서 자동 빌드 후 배포함

 

 

'Jenkins' 카테고리의 다른 글

[Jenkins] Jenkins ~ Github 연동(SpringBoot, Gradle)  (0) 2022.01.25
Comments