매일 한줄 코딩

#6] 젠킨스 jenkins와 github 연동 후 배포하기. 본문

develop/spring

#6] 젠킨스 jenkins와 github 연동 후 배포하기.

ShipJH 2021. 11. 24. 18:03

젠킨스,깃허브,톰캣 연동.pptx
1.99MB

예전에 스터디할때 PPT만든게 있어서 업로드 하고자 합니다.

PPT보단 해당 글이 더 자세히 적혀있으므로, 글만 보고 따라하셔도 됩니다.

 

먼저젠킨스(Jenkins) 개발 지속적 통합(continuous integration) 서비스를 제공하는  입니다.

 

기존 배포시에는 여러가지 방식이 있겠지만 대표적으로 2가지 방식 아래와 같습니다.

1. war파일 배포하여 톰캣 재구동 ( ftp 여러가지 방식으로 war 옮겨서 )

2. class파일로 컴파일 파일을 ftp 전송하여 톰캣 재구동 

 

이러한 행위들은 배포시 개발자에게 위협요소 개발시간에 대한 불필요한 시간낭비 라고 생각합니다.

첫째, 잘못된 파일 war 배포한경우

둘째, 프로젝트의 루트가 다르지만 같은 클래스명인 경우 경로에 대해 아리까리 할때.

 

위에 대한 단점을 젠킨스가 대신하여 줍니다.

초기 설정만 제대로 되면 지속적으로 프로젝트 단위별로 build now 라는 버튼을 이용하여, 자동으로 배포하여 줍니다

먼저 젠킨스를 사용하여 배포할 때의 기본적인 조건은 아래와 같습니다.

서버내에 JDK Tomcat 설치되어 있고, 소스형성관리 서비스를 이용하여야 합니다. ( git, gitlab , github , svn ... 등등 )

 

이제 설치와 적용하는 방법을 말씀드리겠습니다

적용 하는 환경은 OS 리눅스OS centos7입니다. ( 윈도우의 경우 현재 캐롯아이 홈페이지가 적용중이고, 실제 적용할 시에 OS따른 차이는 설치방식만 다르지 크게 다르지 않습니다.)

먼저 설치된 OS 접근합니다. ( putty .. 여러 터미널에 접근 있는 툴을 이용하여 )

젠킨스를 설치해보도록 하겠습니다.

설치할 디렉토리로 이동

 

위의 화면에 나오는 것을 참조하여 아래의 명령어를 순서대로 입력해주시면 됩니다.

1. wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo

2. rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key

3. yum install jenkins

 

그럼 다운로드가 됩니다

 

다음 젠킨스를 서버에 설치하였기 때문에젠킨스의 포트번호를 바꾸어 줍니다.

vi /etc/sysconfig/jenkins 하여 젠킨스 포트정보가 있는곳을 봐줍니다.

 

~ 줄이 나올텐데 아래의 JENKINS_PORT  default 8080 8090으로 바꿨습니다.

 

여기까지가 젠킨스를 설치하였고, 포트번호도 바꾸었습니다

 

다음 젠킨스를 실행하여 줍니다

/etc/init.d/jenkins start  명령어를 입력하여 실행시켜 줍니다

그다음 ip:8090/ 으로 접속하여 줍니다. ( 이때의 ip OS 깔린 ip 입니다. 클라우드 서비스를 이용하시면 공인 ip 사용하시면 됩니다. 윈도우라면 localhost )

 

브라우저에 젠킨스의 아래 스크린샷 처럼 뜹니다.

스크린샷의 경로를 접근하여 패스워드를 복사하여 아래의 붙여넣어 줍니다

( 명령어 : vi /var/lib/jenkins/secrets/initialAdminPassword )

 

 

그럼 아래의 화면이 나옵니다.

 SHAPE  \* MERGEFORMAT

 

좌측 선택합니다. ( 우측은 직접 자신이 install 것들을 체크하여 설치합니다. 기본적인 구성은 좌측입니다. )

완료가 되면 아래 화면이 나오고 시작하시면 됩니다.

 

Start using Jenkins 누르시면 아래 화면이 나오게 되는데

젠킨스에 접근할 계정을 설정해 주는 것입니다. 추후에 젠킨스 접속시 사용할 아이디와 비밀번호라고 생각하시면 됩니다.

 

입력하시면 아래의 화면이 나옵니다.

 

여기까지가 서버내에 젠킨스를 설치하는 과정이였습니다........

 

이제 github 연동하여 실제 github 소스를 가져와 자동으로 war패킹 빌드하고 톰캣으로 자동 deploy 하는 과정에 대한 젠킨스의 세팅 설명 드리겠습니다.

(참고: git, github, gitlab, 비트버킷을 사용한 git , 등등 비슷비슷하게 세팅하므로, 대표적으로 github 설명 드리겠습니다. )

 

먼저 github jenkins 연동하려면 토큰이 필요합니다. 일종의 접근권한을 토큰형태로 발급 받아외부(jenkins)에서 github 접근할 있도록 해주는 이라고 생각하시면 됩니다.

 

아래 그림을 따라해 주세요

현재 깃허브 UI가 변경되었을 수도 있으나, 잘 찾아보시면 나올 것입니다. 

 

 

이제 젠킨스로 다시 돌아와서

 

 

 

이제 젠킨스의 기본 플러그인 외에 다른 플러그인을 설치할 차례입니다.

 

젠킨스 기본 설정은 배포후 작업이란 곳에 Deploy to container 라는 항목이 없을 것입니다. 이것은 따로 플러그인 관리를 통해 설치 주셔야 합니다.

젠킨스 버전마다 포함되어 있을 있으니, 플러그인 관리에서 검색해보고 있다면 그냥 pass )

 

, git 검색하여 git plugin이랑 github plugin  설치가 해줍니다( 마찬가지로, 기본적으로 설치가 안되있는 경우에..)

 

다음젠킨스 설치된 서버의 tool이나 git , maven gradle 같은 실제 배포시에 사용할 빌드툴 이나, 설정들을 설정하여야 합니다

 

간단합니다. 빌드툴이 만약 maven이라면 해당 버전과 이름을 대충 기입해주시면 됩니다.

 

이제 젠킨스 메인화면으로 돌아가서 배포할 프로젝트item 만들어 봅시다.

 

새로운 아이템하시고이름을 정해주고 제일 위에꺼 선택하여 만드시면 됩니다

그다음 만드신 아이템을 누르고 구성탭으로 이동하면 아래와같이 나옵니다.

 

이름은 아이템명 해주세요

 

Github project 체크하시고. github 해당 레파지토리 (소스가 있는 곳의 clone 누르면 해당 소스 받을 url ) 입력

 

아래도 마찬가지로 Git 클릭해주시고, 레파지토리 url 입력하여 줍니다.

( 비트버킷의 경우 Credentials add해서 소스 변경가능한 아이디와 패스워드를 입력하고 선택해 주셔야 합니다. 우리는 토큰을 받아왔으니 그냥 pass~)

 

아래 부분은 건너 뜁니다. ( 만약 빌드시 무언가를 복사하여 어딘가에 이동시키거나 등등의 빌드 할때의 쉘스크립트를 사용하거나 메일을 보내거나 어디에 올려주거나 등등 쓰시면 됩니다.)

 

아까 메이븐 버전잡고 설정하라는거 선택하는 부분입니다. 1번누르면 미리 설정해둔 것이 나옵니다. 그거 클릭.

Goals 보통 clean install 명령어 써주시면 됩니다. ( 보통 이클립스 메이븐 빌드하는거랑 똑같다고 생각하시면 되요.)

 

고급을 누르시면

해당 POM 나옵니다. 부분은 사람마다 다를 있습니다. Goals 테스크엔 clean install

 

먼저 추천해보고자 하는건 pom.xml 이라고만 쳐보신 , 안될경우 에러 로그를 보면서 하나하나씩 적다서 빌드하다 보면 됩니다. ( 에러로그에 원하는 경로가 나옴... ) 

여기서 진짜.. 진짜 경로 모르겠다 하시면 아래를 참고하세요... (, 추천해보고자 pom.xml 먼저 해보고 에러 콘솔로그를 보면서 하시는게 정확 .)

 

아래는 아까 메인에서 보신 설정화면의 젠킨스 시스템설정 부분란입니다.

, 위에 현재 pom.xml 볼때에

vi /etc/sysconfig/jenkins 부분의 JENKINS_HOME 부분

 

깃허브의 폴더명

여기서, $(ITEM_FULLNAME) testBae/BaeGitTest/pom.xml 봐선, 일단 testBae 젠킨스 프로젝트명이고, BaeGitTest부분은

깃허브의 폴더명입니다 폴더속에는 pom.xml 있습니다. 그것이 합쳐진것 같습니다.(추측이에요.) 아무튼 에러로그 보고 하는게 최고입니다

 

 

 

다음 마지막으로 톰캣에서 자동 배포를 해주도록 하는 설정입니다. (빌드 후 조치)

 

그전에 톰캣의 외부에서 deploy의 권한을 설정해주고, 비밀번호도 설정해줍니다.

먼저, 터미널로 톰캣이 설치된 서버에 접속하고 창에서,

vi 톰캣설치경로/conf/tomcat-user.xml

의 명령어를 쳐서 톰캣-유저.xml 의 정보를 봅시다

 

저와 같이 세팅하셨을 경우

vi  /usr/local/apache-tomcat-8.5.23/conf/tomcat-users.xml

경로로 열었습니다.

그다음 가장아래의

 <role rolename="manager-gui"/>

 <role rolename="manager-script"/>

 <role rolename="manager-status"/>

 <user username="bae" password="bae1" roles="manager-gui,manager-script,manager-status"/>

을 추가하여 주었습니다.

usernamepassword는 알아서 설정해주시면 됩니다.

아래를 참고하시면 됩니다.

 

 

 

 

위에서톰캣 매니저 ID PW 설정하고 저장 나옵니다

위처럼 하고 저장 하시면, 드디어 세팅이 끝납니다.

 

그러면 젠킨스는 깃허브의 소스를 바라볼 것이고, 깃허브의 소스를 읽어서 빌드하고 , 톰캣의 톰캣매니저를 통하여 자동으로 배포하게끔 설정 하였습니다.

 

만든 item 접속 Build Now 누르면, 자동 배포가 시작됩니다

 

그럼 아래의 Build History 깜빡깜빡하면서 하나가 동작하실겁니다

깜빡깜빡하는 누르시면 로그 나옵니다

 

테스트는소스변경 -> github 커밋,푸쉬  -> 젠킨스 build now -> 서비스하는 url 들어가서 소스변경 사항이 적용된 확인



이렇게 하시면 개발자가 실수 하지도 않고, 번거롭지도 않게 고작 빌드나우 한번 눌러주면 개발하는 프로젝트를 서버에 배포할 있습니다

 

 

해당 설정은 깃허브에서 소스를 가져와 젠킨스에서 빌드하고 톰캣매니저를 통해서 톰캣으로 배포하고 실행하는 과정입니다.

 

 

여러방식이 있으니, 때에따라 맞는 방식으로 설정하셔도 될 것 같습니다.

 

톰캣 매니저대신 쉘스크립트를 사용하여 배포하여도 되고, 

파이브라인으로 순차적인 배포를해도 되고 여러가지 방식이 있으니 먼저 보편적인 설정을 해보시고 하나씩 변경해보시길 바랍니다. 

Comments