일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SSL
- spring
- centos7
- spring boot
- DISTINCT
- 토비의스프링
- Git
- github
- jdbc
- Java
- sample
- Spring Legacy Project
- WebHook
- docker
- 프로그래머스
- Hibernate
- Client
- AWS
- TypeScript
- mariadb
- 책 정리
- TLS
- EC2
- Linux
- Jenkins
- vagrant
- 코딩테스트
- db
- window
- ssh
- Today
- Total
Woopii Vyeolog
[Jenkins] Jenkins ~ Github 연동, 자동 빌드, 배포 (SpringBoot, Maven) 본문
● 먼저 Jenkins 가 설치되어 있어야 한다.
https://woopi1087.tistory.com/69
● 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 |
---|