개요
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의 위치를 설정하였다.
'Open Source > jenkins' 카테고리의 다른 글
Jenkins Freestyle project 기타 설정 (1) | 2023.03.24 |
---|---|
Jenkins (ant build) (0) | 2023.03.24 |
Jenkins 설치 및 세팅 (0) | 2023.03.20 |