본문 바로가기

Jenkins & Docker

Jenkins로 spring-boot 프로젝트 빌드하기

3번째 OJT 과제였던 local 프로젝트를 젠킨스를 통하여 리눅스 서버로 build 하는 것을 해보았습니다.

 

👆 과정

 

1. Webhook으로 gitlab에 있는 프로젝트를 jenkins와 연동하기

 

2. 'new item' 을 눌러서 프로젝트를 생성합니다. (in jenkins에서)

 

3. '구성' 메뉴를 눌러서 호스팅 서버와 연결하기 위한 설정들을 해줍니다.  ✨중요

 

3-1 ) 소스코드 관리

git을 선택하고 Repository URL도 자신의 git clone 주소를 입력해줍니다. + Credentials 도 미리 연동해둔 키를 선택해줍니다.

 

 

3-2 ) 빌드 유발

프로젝트를 git으로 push를 했을때, 또는 merge Request를 날렸을 시에 빌드를 유발 시킨다고 설정해줍니다.

 

 

3-3 ) 빌드 환경

빌드를 한 후에 ssh 서버로 파일들을 보내겠다고 체크합니다. 그러면 ssh 서버 설정 탭이 나옵니다.

< Transfers >

  • Source files : 어떤 파일들을 옮길지 기입. target 디덱토리 밑에 모든 jar 파일들을 옮기겠다는 뜻 입니다.
  • Remove prefix : 파일명만 따오기 위해 target이라고 써줍니다.
  • Remote directory : ssh 서버 어느 디렉토리에 build를 할 것인지 써줍니다.

 

 

3-4 ) 빌드

- 빌드를 할 시에 명령어로 mvn clean package 를 쳤는데 오류가 나서 수정한 부분.

  이유 : 버전을 명시해 주지 않아서 생긴 오류 였다.

  해결 : Build 탭의 'Invoke top-level Maven targets' 설정을 추가하여 메이븐을 선택해주고,

          Goals 부분엔 package -Dmaven.test.skiptrue 옵션을 주어서 test는 돌지 않도록 설정해주었다.

여기에 기입하는 정보들은 위의 '빌드 환경'과 동일합니다.

 

 

  3-5 ) 빌드 후 조치

이것 또한 위와 동일합니다.

 


결과

 

1. 

에러 : generatorConfig.xml 파일을 찾을 수 없음

이유 : generatorConfig.xml 파일이 GeneratorConfig.xml 로 생성하여 대소문자가 맞지 않아 생긴 오류 ,,

해결 : generatorConfig.xml로 파일 이름 변경 후 push

 

 

2. 

에러 : generatorConfig.xml 파일내부의 postgresql 경로를 찾을 수 없음

이유 : 빌드를 할 시에 generatorConfig.xml 파일은 거치지 않는데.. 좀 이상하다..?

해결 : generatorConfig 파일의 저 경로를 마구잡이로 변경해보고 build 해봄 -> build 역시 안됨

         -> pom.xml 파일을 보니 

       

About Executions

  Maven 프로젝트는 JAR나 WAR와 같은 각각의 Packaging 방법이 존재하며, 해당 Packaging 방법에 따라 진행해 나아가는 작업들의 목록들(Phases) 가 존재한다. 그리고 각 Phase 는  구체적인 작업이 명시되어 있는 Maven-Plugin과 해당 Plugin의 Goal로 정의 된다.

이렇게 Maven에서 정의해 놓은 Lifecycle 에 추가적인 작업을 하고자 할때 “Executions” 요소를 쓴다.

출처 : https://sangpire.tistory.com/53

 

About "Executions" Tag on Maven

Using Dojo with Maven 이라는 문서를 살펴보면, Maven 의 pom.xml 파일에 다음과 같은 코드를 추가하여 dojo 코드를 다운받는 예제가 존재한다. org.apache.maven.plugins maven-dependency-plugin        ..

sangpire.tistory.com

 

그래서, pom.xml에 executions 태그를 삭제하고 다시 push 한 후 build를 하였다.

 

 

3.

에러 : 8080포트는 이미 사용중이야.

이유 : jenkins를 일반 웹에서 ip로 접속하는데, build시에 test 진행될 때 jenkins와 test하는 프로젝트 두개가 포트 충돌이 일어나서 였다.

해결 : test를 skip하는 옵션을 추가해준다.

[test를 skip하기]

Goals 라는 항목에 추가해주기

 

 

4.

빌드 성공!

 

 


👏 기동 시켜보기

 

빌드 설정 시 명시해둔 디렉토리로 이동 -> jar파일로 build 된것을 볼 수 있다.
sudo java -jar jar파일명 이라고 명령어를 치면 프로젝트가 실행된다.

 

내가 만든 rest api 프로젝트가 잘 기동됨을 볼 수 있다.