SCM & CI,CD

[Jenkins]GitHub 연동 (2)

  • -
반응형

본 포스팅에서는 GitHub 서버와 연결 후 Tomcat에 war파일을 배포하는 내용을 담고 있습니다.

사전 설정이 있기 때문에 이전 글을 못 보신 분들은 이전 글을 먼저 확인해주세요.


GitHub 서버 연결

1) Jenkins 관리 - 시스템 설정을 클릭한다.

 

2) 아래로 내려가다보면 GitHub 메뉴가 있다. 여기서 GitHub Server와 연결을 해주는 작업을 한다.

*그 전에 GitHub로부터 개인 토큰을 발급받아 젠킨스에서 액세스할 수 있도록 하는 작업이 필요하다.

 

2-1) GitHub 사이트에 접속한다. 우측 상단에 프로필 - Setting를 클릭한다.

 

2-2) Developer settings 클릭

 

2-3) Personal access tokens 선택 후 Generate new token 클릭

 

2-4) 아래 옵션 선택 후 Generate token 클릭

scopes 옵션

  • repo : 해당 토큰에 repository 접근 권한을 추가한다.
  • admin:org : 프로젝트에 대한 읽기 및 쓰기 권한을 추가한다.
  • admin:repo_hook : repository hook에 대한 권한을 제어할 수 있다.(hook은 commit, push 등과 같은 git의 특정 이벤트 이후 실행하는 스크립트이다)

 

2-5) 발급된 토큰을 확인한다.(미리 복사)

 

3) 다시 돌아와서 Add 버튼을 클릭한다.

 

4) Kind 옵션 중 Secret text를 선택한다.

  • Secret : GitHub에서 발급받은 토큰을 입력한다.
  • ID : 식별가능한 이름을 입력하면 된다.

 

5) 생성된 Credential 선택 후 Test connection을 진행한다. 연결이 완료되면 아래와 같은 문구를 확인할 수 있다.

 

프로젝트 생성

6-1) 이제 빌드할 프로젝트를 설정한다. 메인으로 돌아와 새로운 Item 클릭

 

6-2) project명 입력 후 Freestyle project 선택

 

6-3) GitHub project 체크 후 본인 프로젝트 URL을 입력한다.

 

6-4) 아래 소스 코드 관리에 보면 Git Repositoriy를 입력하는 곳이 있는데 이 곳에는 .git 확장자를 붙인 URL을 입력해준다.

Branch는 기본 master Branch를 사용한다.

 

6-5) Add 버튼을 눌러 Credential을 생성한다.

  • Kind : Username with password 선택
  • Username/Password는 본인의 GitHub 계정 정보를 입력한다. Username은 GitHub ID로 프로필 하단에 있는 ID를 입력한다.
  • ID는 식별가능한 이름을 입력하면 된다.

 

여기까지 저장 후 이후 단계에서는 Tomcat 설정 및 빌드/배포를 설정한다.

(Tomcat은 설치되어 있다고 가정하겠습니다.)

 

Tomcat 설정

7) 메인 페이지로 돌아와 플러그인 관리를 클릭한다.

 

8) Deploy to container 검색 후 해당 플러그인을 선택해 재시작 없이 설치하기를 한다.

 

9-1) Tomcat 설치 경로 - conf - tomcat-users.xml을 변경한다.

<tomcat-users></tomcat-users>사이에 아래 role을 추가한다.

 

*젠킨스에서 Tomcat에 접근해 war 파일을 배포할 수 있도록 권한을 부여하는 작업이다.

<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-status"/>
<user username="admin" password="1234" roles="manager-gui,manager-script,manager-status"/>

 

9-2) Tomcat 설치 경로 - webapps - manager - META-INF - context.xml을 변경한다.

<Value /> 부분을 주석 처리해준다.

 

기본적으로 Tomcat manager는 해당 localhost IP만 접속할 수 있도록 설정이 되어있어 접근권한을 변경해준다. 

*org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy 에러가 발생한다면 아래 설정을 확인해본다.

<Context antiResourceLocking="false" privileged="true" >
  <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
                   sameSiteCookies="strict" />
  <!--<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

 

10) 다시 젠킨스로 돌아와 프로젝트 선택 후 왼쪽 메뉴 구성을 클릭한다.

 

빌드/배포 설정

11) Build 에서 Add build step을 클릭해 Invoke top-level Maven targets을 추가한다.

 

12) Maven Version에는 이전글의 12-3) 에서 설정한 Maven을 등록하고 Goals에 clean package를 입력한다.

고급을 클릭하면 추가 입력칸이 생기는데 POM에 pom.xml을 입력해준다.

(pom.xml은 Git Repository에 있는 pom.xml 경로를 입력해주어야 한다.)

 

13) 마지막으로 빌드 후 Tomcat에 배포를 하도록 설정한다.

빌드 후 조치 추가를 클릭 후 Deploy war/ear to a container를 선택한다.

 

14) WAR/EAR files : 빌드 후 완료된 war파일의 이름을 작성해준다.

(*.war를 하게되면 자동으로 war파일을 찾아 변경한다)

Context path : ROOT 경로를 찾을 수 있도록 / 로 설정한다.

Add Container 클릭 후 본인 Tomcat 버전을 선택한다.

 

15) Add 버튼을 눌러 Credential을 생성한다.

  • Kind : Username with password 선택
  • Username/Password : 9-1)에서 설정한 tomcat-user.xml의 username과 password를 입력한다.

생성 후에는 Credential을 등록해주고, Tomcat URL에 Tomcat이 실행중인 주소를 입력한다. (ex. http://localhost:8088/)

 

16) 모든 설정이 완료되었고 빌드를 해보자. Build Now 클릭

*빌드 전에 Tomcat이 실행되어 있어야 한다.

 

빌드가 시작되면 하단 Build History에 작업이 시작된다. 작업을 클릭하면 Console Output 메뉴가 있는데 클릭하면 진행 상황을 확인할 수 있다.

 

*아래와 같은 에러가 발생한다면 Maven Encoding 문제기 때문에 아래 plugin을 pom.xml <build><plugins></plugins></build> 사이에 추가한다.

 <!-- Maven Encoding -->            
 <plugin>
 	<groupId>org.apache.maven.plugins</groupId>
 	<artifactId>maven-compiler-plugin</artifactId>
 	<configuration>
 		<encoding>UTF-8</encoding>
 	</configuration>
 </plugin>	

 

 

배포 완료 후 생성된 war파일


 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.