# 구성도
# 사전 준비사항
본인것이거나, 권한을 가지고 있는 GitHub repository에 올라간 Spring Boot 프로젝트
2021.11.21 - [JAVA/Spring] - IntelliJ와 GitHub 연동하기
1. 도커와 Jenkins을 설치하기
2021.11.17 - [CI | CD/Jenkins] - Jenkins 설치
2021.04.07 - [AWS/Docker (도커)] - Docker 설치(1부)
2. Jenkins 에서 빌드하기
- Jenkins 메인 화면에서 새로운 Item을 클릭하여 새로운 빌드를 구성해보자.
- 이름을 Project-01 그리고 Freestyle project를 선택 후 하단에 OK를 클릭한다.
- General 탭에서 설명내용을 입력하고 GitHub project를 체크 후 Project url에는 Git hub 저장소 주소를 입력하자.
- 소스 코드 관리 탭으로 이동하고, Git을 체크한다. 다시 한 번 Git 저장소 주소를 입력하고, Credential 란에 GitHub 아이디, 비밀번호를 입력한다. (필드가 여러 개가 있는데 Username, Password 필드만 사용하면 된다.)
Branches to build에는 빌드할 브랜치 명을 정확히 입력해야한다. 빌드 유발 설정까지 마치게 되면 이 브랜치에 새로운 커밋이 푸시될 때마다 자동 빌드를 하게 된다.
- 아래의 */main 이 아니고 */master 로 해야 됨 > 알고보니 master 는 local branch 이니셜같은거였음...
@da MINGW64 ~/Desktop/IntelliJ+Jenkins/AutoBuild (master)
$ git branch
autobuild
* master
new_branch
- 이 branch 의 소스들이 바로 서버에 특정 폴더로 업로드 됨 > 바로 Project-01 이라는 폴더에 업로드 됨
etcsw@etcsw-Virtual-Machine:/var/lib/jenkins/workspace$ ll
합계 24
drwxr-xr-x 6 jenkins jenkins 4096 11월 22 22:59 ./
drwxr-xr-x 21 jenkins jenkins 4096 11월 23 02:00 ../
drwxr-xr-x 3 jenkins jenkins 4096 11월 21 13:42 Jenkins-Build-Test/
drwxr-xr-x 2 jenkins jenkins 4096 11월 21 15:17 'Jenkins-Build-Test@tmp'/
drwxr-xr-x 7 jenkins jenkins 4096 11월 23 00:38 Project-01/
drwxr-xr-x 2 jenkins jenkins 4096 11월 23 00:38 'Project-01@tmp'/
- Project-01 폴더 리스트를 보면 아래와 같음...
etcsw@etcsw-Virtual-Machine:/var/lib/jenkins/workspace/Project-01$ ll
합계 52
drwxr-xr-x 7 jenkins jenkins 4096 11월 23 00:38 ./
drwxr-xr-x 6 jenkins jenkins 4096 11월 22 22:59 ../
drwxr-xr-x 8 jenkins jenkins 4096 11월 23 00:38 .git/
-rw-r--r-- 1 jenkins jenkins 444 11월 22 23:06 .gitignore
drwxr-xr-x 9 jenkins jenkins 4096 11월 22 23:51 .gradle/
drwxr-xr-x 5 jenkins jenkins 4096 11월 23 00:37 build/
-rw-r--r-- 1 jenkins jenkins 634 11월 22 23:06 build.gradle
drwxr-xr-x 3 jenkins jenkins 4096 11월 22 23:06 gradle/
-rwxr-xr-x 1 jenkins jenkins 8070 11월 23 00:38 gradlew*
-rw-r--r-- 1 jenkins jenkins 2674 11월 22 23:06 gradlew.bat
-rw-r--r-- 1 jenkins jenkins 26 11월 22 23:06 settings.gradle
drwxr-xr-x 4 jenkins jenkins 4096 11월 22 23:06 src/
- 어쨌든 branch는 로컬의 있는 이름으로 해주고, 로컬을 원격 저장소와 동기화 하니까~ 로컬 저장소에 있는 소스가 반영이 되는거 라고 보면 됨...
- 빌드 유발 탭에서는 GitHub hook trigger for GITScm polling 을 선택한다.
- 여기까지 설정 후 저장 > 메인페이지로 이동하자.
- 메인페이지 > Jenkins 관리 > ‘Global Tool Configuration 을 선택한다.
- 쭉 내려서 Gradle의 Gradle installations를 선택, 새 Gradle 설치를 추가한다. 이름은 식별하기 쉽게 짓는다. 그리고 저장을 한다.
(참고로 gradle 버전은 현재 빌드하는 IDE에 있는 버전과 맞추면 좋음 아래는 나의 gradle-wrapper.properties 의 버전임)
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
그 다음 메인으로 돌아가서 방금전에 만든 프로젝트를 선택하고, 좌측 메뉴에서 ‘구성’을 클릭하면 다시 설정을 이어서 계속한다.
- Build 탭에서 Add build step을 눌러 Invoke Gradle script를 선택하고, Use Gradle Wrapper를 선택한다.
Make gradlew executable에 체크 > 체크하지 않으면 퍼미션 에러가 발생한다.
- Wrapper location에는 ${workspace} 라 입력 > Tasks에는 빌드할 때 쓰는 명령어를 입력한다. 예를 들어 ./gradlew clean build 라는 명령어로 빌드하는 프로젝트라면 clean build 라 입력한다.clean build는 tasks에 등록된 사람만 쓰셈 이것때문에 3시간동안 개고생함... 아래 오류가 계속 발생 했음... clean build 지우니까 바로 빌드 성공 함...!!
- 빌드에 성공한 모습 무려 39번의 빌드 테스트 후 성공함...
- 정상적으로 성공함.
- 웹훅(WebHooks) 추가하기
하지만 아직 Jenkins는 누가 GitHub 저장소에 커밋을 푸시했는지 인식하지 못한다. 이것을 인식하게 해 주려면 프로젝트 저장소에 웹훅을 추가해 줘야 한다.
- GitHub 저장소의 Settings > Webhooks에서 Add Webhook을 누른다.
- Payload URL에 http://(Jenkins 주소:포트)/github-webhook/을 입력, Content type에 application/json, 나머지 설정은 그대로 두고 Add webhook을 클릭하여 설정을 마무리한다. 이제 앞서 설정한 브랜치로 커밋을 날리면 자동으로 빌드가 시작된다.
- 너무 길어져서~ 다음편에 계속...
'혼자하는 프로젝트 > Jenkins 으로 Spring boot 자동 배포하기' 카테고리의 다른 글
Zabbix 를 통해 서버 모니터링 하기 (0) | 2021.11.27 |
---|---|
Jenkins 을 활용하여 Spring boot 를 자동배포 하기(2) (0) | 2021.11.23 |