일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- jpa준영속
- js await
- javascript async
- JPA준영속 상태
- ja async
- spring 모듈 프로젝트
- js fetch
- Flutter
- 코틀린 클래스
- jpa 플러쉬
- js api 호출
- 준영속상태
- 스프링부트
- JavaScript
- javascript async await
- spring gradle 모듈
- springboot 모듈
- JS
- jpa 영속성
- javascript api 호출
- js async await
- JPA플러시
- springboot gradle 모듈 프로젝트
- JPA
- 코틀린
- JPA플러쉬
- javascript fetch
- jpa 플러시
- gradle 모듈 프로젝트
- 코프링
- Today
- Total
매일 한줄 코딩
#6] 젠킨스 jenkins와 github 연동 후 배포하기. 본문
예전에 스터디할때 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"/>
을 추가하여 주었습니다.
username과 password는 알아서 설정해주시면 됩니다.
아래를 참고하시면 됩니다.
위에서, 톰캣 매니저 ID와 PW를 설정하고 저장 후 나옵니다.
위처럼 하고 저장 하시면, 드디어 세팅이 끝납니다.
그러면 젠킨스는 깃허브의 소스를 바라볼 것이고, 깃허브의 소스를 읽어서 빌드하고 난 후, 톰캣의 톰캣매니저를 통하여 자동으로 배포하게끔 설정 하였습니다.
만든 item 접속 후 Build Now 누르면, 자동 배포가 시작됩니다.
그럼 아래의 Build History에 깜빡깜빡하면서 하나가 동작하실겁니다.
깜빡깜빡하는 거 누르시면 로그 나옵니다.
테스트는 , 소스변경 -> github 커밋,푸쉬 -> 젠킨스 build now -> 서비스하는 url 들어가서 소스변경 된 사항이 적용된 것 확인.
이렇게 하시면 개발자가 실수 하지도 않고, 번거롭지도 않게 고작 빌드나우 한번 눌러주면 개발하는 프로젝트를 서버에 배포할 수 있습니다.
해당 설정은 깃허브에서 소스를 가져와 젠킨스에서 빌드하고 톰캣매니저를 통해서 톰캣으로 배포하고 실행하는 과정입니다.
여러방식이 있으니, 때에따라 맞는 방식으로 설정하셔도 될 것 같습니다.
톰캣 매니저대신 쉘스크립트를 사용하여 배포하여도 되고,
파이브라인으로 순차적인 배포를해도 되고 여러가지 방식이 있으니 먼저 보편적인 설정을 해보시고 하나씩 변경해보시길 바랍니다.
'develop > spring' 카테고리의 다른 글
Springboot + gradle 모듈 프로젝트 생성 (1) | 2022.09.23 |
---|---|
#5] Spring Swagger 설정하기 (0) | 2021.09.29 |
#4] 스프링부트 DB 연동 하기. (0) | 2021.09.26 |
#3] 스프링부트 logback 설정 및 로그유틸 설정 (1) | 2021.09.18 |
#2] 스프링부트 properties 설정 (0) | 2021.09.18 |