빅토리 코딩
article thumbnail
Published 2023. 3. 21. 17:41
Jenkins (maven build) Open Source/jenkins
728x90
반응형

개요

maven

Java 프로젝트의 빌드, 의존성 관리 및 문서화를 자동화하기 위한 빌드 자동화 도구이다. Maven은 Java 기반 프로젝트에서 표준 빌드 프로세스를 정의하고 의존성 관리를 쉽게 처리할 수 있도록 지원한다. pom.xml 파일을 이용하여 프로젝트를 빌드하고 의존성을 관리한다. 
해당 글은 pipeline을 이용한 것은 아니다 pipeline은 따로 정리할 것이다.

구현

1. 생성

+ 새로운 item  버튼을 누르고 Freestyle project를 선택한다.

2. 형상관리 연결

해당 소스가 올라가 있는 형상관리를 선택하여 정보를 입력해 준다.

형상관리 연결 시 Credentials에 형상관리 연결 시 사용하는 계정아이디 비번을 치면 된다.

username - 형상관리 ID

 

password - 형상관리 PW

ID - jenkins에서 해당 아이디 비번을 저장할 Credentials ID

Description - 설명

만약 github을 ssh로 이용하는 등 아이디 비번이 아닌 다른 로그인방식은 Kind에 다른 방식이 있다.

3.빌드

Build Steps 항목으로 가면

add build step이 있다. 해당 부분에  목록을 보면 다양한 빌드와 excute가 있다.

보통 서버에 한 프로젝트가 떠있다고 하면 해당 프로젝트를 내렸다가 다시 올려야 한다...!

linux서버 같은 경우는 빌드 후 재기동 할 수 있지만 windows 서버라면 내리고 빌드하고 기동을 해야 한다.

linux는 Execute shell을 이용하여 shell 명령어로 재기동을 하던가 *. sh 파일을 만들어 실행시켜도 된다.

windows도 마찬가지로 Excute Windows batch command를 이용하여 명령어로 재기동을 하던가 *. bat파일을 만들어 실행시켜도 된다. 

Maven build는 Invoke top-level Maven targets를 선택하면 된다.

Goals를 적고 저장 후 빌드 해보자

 

해당 오류가 발생하였다.......,,,, 이거는 maven 명령어 path가 잡혀있지 않았다.... 맞다...

Jenkins 관리 -> Global Tool Configuration에 들어가면 각 maven, jdk 등등 path를 잡아주는 곳이 있다.

maven build시에는 jdk와 maven만 있으면 되니깐 두 개를 설정해 준다.

만약 다른 버전의 jdk나 maven를 쓰는 경우도 있다면 add 해서 추가하면 된다. 

해당 빌드편집에 들어가면 Mavn Version 선택하는 게 생겼을 것이다. 해당 버전을 선택해 주면 된다. jdk 도 맞는 버전을 선택해준다.

jdk 선택은 With Ant에 있다

 

다시 빌드를 시작하면 maven library들이 다운로드되고 Success가 뜨면 성공이다.

4. 기동

나 같은 경우는 springboot를 maven build 한 것이기 때문에 해당 위치

"/{JENKINS_HOME}/workspace/{jenkins 프로젝트이름}/{형상관리에 올라간 프로젝트}/target/"

에 jar 파일이 만들어졌다. 해당 jar 파일을 원하는 위치로 옮긴 후 기동하는 것을 sh 파일로 만들었다. 

 

-stop.sh

#!/bin/sh

kill -9 $(cat /data1/pid/$1.pid)
if [ $? -eq 0 ];then
    echo "stop success"
    exit 0
fi

echo "Not Running"

exit 0

-start.sh

#!/bin/sh

nohup /product/jdk-11.0.2/bin/java -jar -Dspring.profiles.active=local /data1/springboot/$1.jar & > dev/null &

 

5. 배포 

이제 해당 버튼을 눌러 시도를 해보면

정상적으로 끈났다.. 근데 서버가 뜨지 않는다...... sh 파일 문제인가 확인해보았는데 sh을 별로도 실행했을 때는 잘 돌아간다. 해당 문제는 찾아보니 start.sh에서 nohup으로 기동을 했는데 이게 젠킨스에서 명령을 하달하는 거라 제대로 백그라운드를 돌지 못해서라고 한다.,,, 그래서 start.sh를 실행시키고 cmd창에서 개행(enter 한번 누름과 같은 행위)을 하면 된다고 한다. 그래서 "echo -ne '\n' "을 추가했다.

다시 확인 결과 잘 서버가 떠진가 보인다....!!

6. mavn 기타 설정

- maven repository 설정

만약 jenkins가 설치되어 있는 서버가 외부망이 안 되는 경우! maven에서 사용되는 repository를 따로 올려서 사용해야 한다. 그 repository랑 jenkins랑 연결하는 방법이다. Maven은 settings.xml이라는 파일로 maven repository에 대한정보를 저장해 놓는데 내가 만든 Settings.xml을 바라보라고 하는 것이다.

jenkins관리 - Global Tool Configuration로 들어간다. 맨 위에 Maven Configuration이라는 탭이 있다. 

Default settings provider(기본으로 세팅할 Maven settings.xml 파일)

Default global settings provider(기본으로 세팅할 전체 Maven settings.xml 파일)

두 개 다 어차피 빌드를 새로 추가할 때 선택 할 수 있다. 먼저 settings.xml를 보여주면

 

Settings.xml

<?xml version="1.0"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/SETTINGS/1.0.0">
<localRepository>{원하는 위치}/repository</localRepository>
</settings>

 

이런 식으로 되어있다. 

eclipse 기준으로 Windows-Preferences에 해당 위치의 settings.xml이 있다.

 

settings.xml에 설정한 위치에 내 로컬에 있는 lib 폴더를 넣어주면 된다.

 

주의할 점

repository를 들어가 보면 바로 *. jar파일이 모여있는 게 아니라 폴더 형식으로 되어있다. 이 폴더 그대로 옮겨야 한다 

ex)

이제 빌드 프로젝트에서 설정은 빌드 프로젝트의 maven build 위치에 고급을 눌러보면 제일밑에 Settings file이 있다. 아까 jenkins관리에서 세팅을 한 거면 그대로 use Default maven settings을 하면 되고 새로 설정하러 다른 건선 택해서 settings.xml 파일위치를 적어주면 된다.

- pom.xml (project 위치를 못 잡고 pom.xml이 없다는 오류가 나올 때)

빌드 프로젝트에 maven build 부분 고급 버튼을 누르면 POM이라고 쓰여있는 탭이 있다. 해당 부분에 pom.xml 위치를 적어주면 된다.

나는 git 안에 여러 프로젝트가 있어 그 특정 프로젝트를 build 해야 하므로 pom.xml의 위치를 설정하였다.

728x90
반응형

'Open Source > jenkins' 카테고리의 다른 글

Jenkins Freestyle project 기타 설정  (0) 2023.03.24
Jenkins (ant build)  (0) 2023.03.24
Jenkins 설치 및 세팅  (0) 2023.03.20
profile

빅토리 코딩

@빅토리 코딩

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그