● 먼저 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 |
---|