# 수동으로 빌드하기
- 수동 빌드를 하는 이유.
개발환경을 세팅하다보면 CI/CD를 구현하는 것보다 손이 좀 가지만 수동으로 빌드를 하는 경우 공수가 덜 드는 경우가 있다. (개발 환경 세팅이 아직 안된 상태에서 짧은 기간 확인을 위한 빌드 절차? 정도 생각하면 될 듯하다.)
빌드 프로세스는 아래와 같다.
- 보통은 CI/CD를 통해 레포지토리에 업로드 후 빌드를 수행하여 확인을 하지만, 수동으로 하는 경우는 위와 같이 개발자가 IDE에서 직접 Commit / Push를 수행하고 EC2에서 git clone을 하여 수동으로 빌드를 수행한다.
1. IDE와 Git Repository 연동
- InteliJ를 예를들어 설명하자면, 아래와 같이 Git 메뉴에서 Manage Remotes 를 클릭한다.
- Remote 주소를 관리한다.
- Git Commit/Push를 통해 현재의 코드를 해당 레포지토리에 업로드 한다.
2. 업로드 된 코드를 빌드하기
- 빌드가 정상적으로 끝나면 /lib 안에 .jar 파일이 생성된다.
최종적으로 해당 .jar 파일을 실행 한다고 볼 수 있다.
EC2 인스턴스를 생성 후 아래의 코드로 빌드를 수행한다.
- 빌드 명령어의 종류는 다양 하지만 아래의 몇개를 소개하면 다음과 같다.
# 그냥 빌드
sudo ./gradlew build
# 빌드 시 빌드 수행 결과를 확인 (에러도 확인가능)
sudo ./gradlew build --stacktrace
# test 없이 빌드
sudo gradle build --exclude-task test
# 빌드 수행 결과를 확인 및 테스트 없이 빌드 수행
sudo ./gradlew build --stacktrace --exclude-task test
3. 빌드 수행 후 결과 확인하기
- 보통 빌드가 수행되면 /build/libs/안에 jar 파일이 생성이 된다.
해당 jar 파일을 최종적으로 실행하면 된다.
4. jar 파일 실행하기
- 만약 해당 EC2에 java가 설치되어 있지 않다면, java를 설치해 줘야한다. (여기서는 17 버전을 설치 하였다.)
sudo apt-get update
sudo apt install openjdk-17-jre-headless
- 실행 명령어
java -jar app-0.0.1-SNAPSHOT.jar &
- 만약 실행한 실행한 프로세스를 확인하고 싶으면 아래의 명령어를 통해 조회가 가능하다.
ps aux | grep java
- 그리고 해당 프로세스를 중지하고 싶으면 kill -9 명령어를 사용하여 중지가 가능하다.
kill -9 {process id}
5. 웹에서 확인하기
- 네트워크 레이어는 설명하기 어려우니 간단하게 설명하고 넘어가자면, EC2의 Subnet이 Public 환경에 존재해야 하고, 보안그룹을 거쳐 외부에서 접근이 가능해야 한다.
- 외부 접근
ec2_public_ip:8080/api
- 접근 확인하기, Postman
6. 자동실행 쉘 스크립트 만들기
- 위의 과정을 자동으로 실행하는 쉘 스크립트를 만들면 아래와 같다.
vim shellscript.sh 로 파일명을 생성 후 아래의 내용을 저장 하면 된다.
- 중간중간에 sleep을 준건, 선행 과정이 끝난 후 다음 과정이 실행될때의 텀을 주기 위한 요소이다.
#!/bin/bash
# Before Clone Directory Delete
sudo rm -rf /home/ubuntu/source-backend/
# git clone
git clone https://git-codecommit.ap-northeast-2.amazonaws.com/v1/repos/source-backend
# sleep term
sleep 15s
# gradle auth check
chmod 777 /home/ubuntu/source-backend/gradlew
# sleep term
sleep 30s
# gradlew build
cd /home/ubuntu/source-backend/
# run gradlew
sudo ./gradlew build --stacktrace --exclude-task test
# sleep term
sleep 30s
# run jar
java -jar /home/ubuntu/source-backend/build/libs/app-0.0.1-SNAPSHOT.jar
# sleep term
sleep 60s
# END
- 수동 빌드 끝...
'⭐ SpringBoot > build (Gradle, Dependency 설정 등)' 카테고리의 다른 글
Springboot에서 DB를 변경하기 (H2 DB application.properties 수정 및 Dependency 추가) (0) | 2022.10.25 |
---|---|
The command '/bin/sh -c ./gradlew bootJar' returned a non-zero code: 127 발생 시 해결 방법 (0) | 2022.05.31 |
jar 파일을 리눅스에서 빌드 후 웹서비스 접속 (0) | 2022.04.12 |
리눅스 java 설치 및 Gradle로 빌드하기 (2) | 2022.03.29 |