반응형
12-23 19:41
Today
Total
«   2024/12   »
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 31
관리 메뉴

개발하는 고라니

[Jenkins] Github 연동, push 후 빌드 자동화 본문

Open Source/Jenkins

[Jenkins] Github 연동, push 후 빌드 자동화

조용한고라니 2021. 9. 29. 02:35
반응형

※ Environment

 

Platform: GCP(Google Cloud Platform)

OS: Debian GNU/Linux, 10 (buster)

Docker: 20.10.8

JDK: open-jdk 11


저번에 젠킨스를 설치했었는데, 로컬환경(Windows)에 도커 없이 war를 배포하는 것으로 설치했었다. 이번엔 좀더 나아가 GCP(Linux)에 Docker를 이용해 Jenkins 이미지를 받아 구동하고, 깃헙을 연동하는 작업을 한다. 그리고 최종 목표인 Intellj에서 코드작업 후 repository로 push 하면 자동으로 젠킨스가 빌드해주게끔 한다.

 

Linux에 도커를 설치하는 과정은 따로 다루지 않겠다.

Docker로 Jenkins Install

 

Jenkins - Official Image | Docker Hub

DEPRECATION NOTICE This image has been deprecated for over 2 years in favor of the jenkins/jenkins:lts image provided and maintained by the Jenkins Community as part of the project's release process. The images found here have not received updates for over

hub.docker.com

 

위의 docker hub에 가면 젠킨스를 받을 수 있다. 하지만 기존의 젠킨스 이미지는 deprecated되었으므로 jenkins/jenkins:lts로 풀 받는다

$ docker pull jenkins (X)
/*  ------- */
$ docker pull jenkins/jenkins:lts (O)
$ docker run --name jks -d -p 7000:7000 -p 50000:50000 jenkins/jenkins:lts --httpPort=7000

/*
docker run : pull받은 이미지를 도커 컨테이너로 만든다.
-d : 백그라운드 실행
-p 7000:7000 : host의 7000포트로 오는 요청을 컨테이너 7000포트로 넘긴다.
--name jks : jks라는 이름의 컨테이너를 만든다.
--httpPort=7000 : 젠킨스 default 포트가 8080인데, 나는 7000포트로 실행한다.
*/

docker ps // 잘 만들어졌는지 확인
docker logs jks -f //로그 확인 (초기 패스워드 확인해야함)

 

CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS         PORTS                                                                                                NAMES
3e00d0721987   jenkins/jenkins:lts   "/sbin/tini -- /usr/…"   7 minutes ago   Up 7 minutes   0.0.0.0:7000->7000/tcp, :::7000->7000/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp, 8080/tcp   jks

이제 설치하는 과정은 쉽다. http://IP주소:7000 로 가서 초기 비밀번호를 복사하고 넣어주면 인스톨 화면이 뜨는데, 그냥 Recommand 로 설치했다.

 

이렇게 하면 젠킨스가 정상적으로 잘 설치가 되었고, 이제 JDK, gradle 등 글로벌 설정을 해줘야하는데 이는 이전 포스팅에서 다뤘으므로 참고하길 바란다.

 

[Jenkins] 젠킨스로 Spring Boot 빌드

현재 혼자 프로젝트를 하는 거라 지속적 통합(CI)은 굳이 필요하지 않지만, 지속적 배포(CD)는 절실히 필요성을 느껴 CI/CD를 공부하는 중이며, tool은 Jenkins를 써보려 한다. 우선 Jenkins와 친해지기

dev-gorany.tistory.com

 

※ 주의사항

 

docker를 사용하므로 docker 컨테이너 안에 JDK를 잘 찾아서 기입해주어야한다.

 

$ docker exec -it jks /bin/bash //컨테이너의 내부를 bash shell로 들어간다.
$ echo $JAVA_HOME //자바 환경변수 위치 확인

1) 환경변수가 있을 떄

예를들어 /opt/java/openjdk 이면 그대로 JDK 설정하는 곳에 기입

2) 환경변수가 없을 때

$ javac -version //자바가 깔려있는지 확인
$ which javac //javac의 위치 확인
$ readlink -f [which javac의 결과물] // A
$ vi /etc/profile
맨 하단에 export JAVA_HOME=A 결과물 기입
SSH 재접속 후 echo $JAVA_HOME

Jenkins 시스템 설정

여기서 Github 설정과 E-mail을 설정할 것이다. (E-mail은 아직 설정을 못했다..왜 안되는지 모르겠어서 ㅎㅋ)

 

시스템 설정에 들어와서...

Kind : Secret text
Scope : Global
Secret : Token 입력
ID : Credential을 구분하기 위한 ID
[Description] : 설명

테스트를 눌렀을 때 위와 같이 뜨면 성공이다.

Create Job & Connect Github

[Dashboard] - [new Item]

 

freestyle 프로젝트를 만들고 구성에 들어가서 github, git, gradle을 설정해주자.

 

※ Github Secret Token

 

혹시 깃허브 Access token이 없다면 하나 만들고 가도록 하자.

이제 토큰을 발급받으면 되는데, 생성되는 토큰은 다시는 안나타나므로 별도로 저장해두어야한다.

 

* github

 

* git

아까와 다르게 token을 입력하는게 아닌 ID와 Password를 입력해주자.

 

 

* gradle

여기까지 잘 설정이 되었다면, Build Now를 눌러 빌드를 시도해보자.

 

기분좋은 Green sign이 뜨며 빌드 성공을 알린다!

Push -> Build Automation

이제 진짜 다왔다. 하나만 설정해주면 된다. Github로 가서 젠킨스에 연동한 리퍼지토리로 가보자.

이렇게 Webhook까지 만들고, Intellj에서 코드 작업 후 push해보자.

 

젠킨스 아저씨가 자동으로 빌드해주는 것을 확인하였다!

 

 

#References

https://galid1.tistory.com/466?category=772172 

 

반응형
Comments