EC2 instance를 중지 후에 다시 재개 해서 public ip가 변경되어도 동일하게 [public ip]:8080으로 접근하면 된다.
Java project를 build하는데는 maven을 사용하는게 보편적이었다. (요새는 Gradle 많이 씀)
우리는 Java project를 build 하기 위해 Jenkins에서 제공하는 샘플 Java code를 사용합니다.
🔥링크🔥
코드 확인
Simple Java Maven App
App.java
src 디렉토리를 가면 main, java 디렉토리가 있다.
main의 App.java 코드를 확인하면 진짜 기본적인 코드가 있다. (그냥 Hello world! 출력)
pom.xml
- maven은 pom.xml 파일을 보고 java source code를 실행하는데 필요한 정보를 확인한다. dependency등.. (pom = project object model)
- dependcy를 확인하면 junit이라는 도구가 있는데 이는 test시에 필요하다.
- 본 코드에서는 test/AppTest.java를 unit test하는 코드가 있는데 여기서 활용한다. (@Test 어노테이션을 사용하기 위해 필요)
- xml 파일 하단에 보면 Maven 버전도 확인이 가능하다.
maven 확인
위의 repository를 clone한 디렉토리에 들어가서 maven package를 하게 되면 java program이 실행될 수 있는 executable이 java 파일로 생성된다.
1. 수작업으로 Maven으로 Java Project Build하기
Git 설치
sudo apt-get update
sudo apt-get install git
sudo apt-get update
sudo systemctl daemon-reload
Maven 설치
mvn -v
위 코드로 maven 설치 여부를 확인한다. 아직 설치가 되어 있지 않으므로 아래와 같은 문구가 출력된다.
Command 'mvn' not found, but can be installed with:
sudo apt install maven
위 명령어를 사용하면 maven이 설치가 된다. 하지만, maven은 linux 운영체제에 의해 기본적으로 제공되는 프로그램이 아니고 third party 프로그램이다.
따라서, 이렇게 설치를 하게 되면 apt 리포지토리가 아는 maven을 설치하게 된다.
하지만 maven 특정 버전이라고 명시를 해주지 않으면 3.6 버전을 가져오게 된다. (우리에게 필요한건 3.8.6 이상.. 그냥 최신거 쓰면 됨)
따라서 우리는 이 🔥링크에 들어가서 설치를 하면 된다.
문제는 ubuntu에 설치해야하므로 curl이나 web get 하면 된다.
왼쪽 네비게이션 탭의 download에 들어가서 링크 주소를 복사한다.
[링크 주소] https://dlcdn.apache.org/maven/maven-3/3.9.7/binaries/apache-maven-3.9.7-bin.tar.gz
Maven 설치
linux에서는 s/w를 설치 할 때 관습적으로 특정 경로 ( /local or /opt ) 에 설치한다.
admin이 해당 s/w를 확인하고 ubuntu linux에 tight하게 bind 되어 있다면 /usr/local에 설치한다.
linux와 상관 없는 third party program은 /opt에 설치한다.
따라서, 우리는 /opt 폴더에 설치한다.
cd /opt
sudo wget <https://dlcdn.apache.org/maven/maven-3/3.9.7/binaries/apache-maven-3.9.7-bin.tar.gz>
sudo tar -xvf apache-maven-3.9.7-bin.tar.gz
sudo ln -s /opt/apache-maven-3.9.7 /opt/maven
sudo vi /etc/profile.d/maven.sh
이후 maven.sh 파일 안에 아래 문구를 추가한다.
export M2_HOME=/opt/maven
export MAVEN_HOME=/opt/maven
export PATH=${M2_HOME}/bin:${PATH}
아래 명령어를 마저 입력하고 mvn -v 로 maven 설치를 최종 확인한다.
sudo chmod +x /etc/profile.d/maven.sh
source /etc/profile.d/maven.sh
mvn -v
git clone
cd ~
mkdir maven-test && cd maven-test
git clone <https://github.com/jenkins-docs/simple-java-maven-app.git>
MVN complie
cd simple-java-maven-app
ls -al
mvn compile
mvn compile을 하면 많은 것들을 compile하고 download한다.
MVN Test
mvn test
우리는 미리 정의된 AppTest 파일이 있기 때문에 maven이 test 과정을 수행한다.
MVN Package
mvn package
ls -al
프로그램을 실행파일로 만드는 즉, package로 만드는 명령어.
이후 ls -al 로 파일 목록을 확인하면 target이라는 디렉토리가 생성된걸 확인할 수 있다.
maven이 target이라는 디렉토리를 만들어서 그 안에 실행파일을 넣은 것이다.
jar 파일 실행
java -jar my-app-1.0-SNAPSHOT.jar
위 명령어로 jar 파일을 실행하면 “Hello World!”가 출력되는 것을 확인할 수 있다.
2. Jenkins 활용해서 Maven 활용해서 Java Project build하기
Jenkins 관리 > Tools
나머지 건드리지말고 Maven Installation만 수정
Maven Installation
이름 설정. 개인적으로 mvn-3.9.7이라고 함
버전은 그대로 3.9.7
우리는 이미 maven을 설치했으므로 install automatically 체크 해제한다.
MAVEN_HOME
이 값으로는 /opt 폴더의 apache-maven-3.9.7 디렉토리의 주소를 전달하면 된다.
/opt/apache-maven-3.9.7
이후에 save하면 된다.
새로운 item 생성
이제 maven이라는 도구를 등록했으므로 새로운 item을 생성한다
item 이름은 개인적으로 설정(나는 simple-java-maven-app)
이후 freestyle project를 생성한다.
Configure
repository url
앞선 실습에서는 github에서 직접 ec2 인스턴스에 clone을 해서 작업을 했는데 이를 자동화한다.
우리는 소스코드를 github로부터 가져오므로 소스코드 관리에 github 리포지토리 url을 추가한다. <>code 부분 누르면 나오는 주소를 입력하면 된다. https://github.com/jenkins-docs/simple-java-maven-app.git
credentials
github의 코드를 가져올때 리포지토리가 private이라면 접근 권한을 추가해야한다.
우리는 public repository니까 none으로 유지한다.
Build Step
나머지는 다 스킵하고 build step으로 넘어간다.
invoke top-level maven targets를 설정한다.
maven version
우리는 3.9.7 버전을 설치하였으므로 설정한다.
Goals
우리의 목표는 java package를 만드는 것이므로 package라고 설정한다.
이후 저장한다.
빌드
좌측 네비게이션 탭에서 지금 빌드를 클릭한다.
이후 좌하단 초록색 체크표시 링크를 클릭하면 console output을 확인 할 수 있다.
매우 길다.
jar 파일 생성 확인
console output을 쭉 내려보면 jar 파일의 경로를 확인할 수 있다.
해당 경로 ( /var/lib/jenkins/workspace/simple-java-maven-app/target/ ) 으로 이동해서 jar 파일을 실행해보자
ls -al
java -jar my-app-1.0-SNAPSHOT.jar
그러면 출력 결과로 “Hello World!”를 확인 할 수 있다.
'개발 > CICD' 카테고리의 다른 글
Jenkins (1) - Jenkins란? (0) | 2024.06.03 |
---|---|
Jenkins Trouble Shooting - (1) 웹페이지 속도 저하 해결 (0) | 2024.06.03 |
Jenkins (2) - 설치 (1) | 2024.06.03 |