728x90
프로젝트를 진행하며, 이때까지 jar 파일을 로컬에서 빌드하고 scp를 이용하여 jar 파일을 배포 서버에 올리고 nohup java -jar jar파일명.jar & 명령어로 배포를 진행하였다. 하지만.. 이렇게 해서는 안된다는 것을 알고 있었기에, 이번에는 CI/CD 까지는 아니더라도 (지식이 부족해서...........) 다음과 같은 목표를 가지게 되었다.
우분투에 깃 원격저장소를 연결하고 pull 받은 후 script를 사용하여 기존에 돌아가던 jar 파일을 멈추고 pull 받은 상태의 프로젝트를 새로 빌드 후 실행시키는 것!
크게 깃 설치 및 레포 연결, 쉘 스크립트 부분으로 나눌 수 있다.
01. Ubuntu에 Git 설치
1. 깃 설치
sudo apt install git
2. 레포를 저장할 repo 폴더 생성
mkdir repo
3. 원격저장소 초기화
git init
4. 원격저장소와 연결
git remote add origin repo주소
5. 깃 계정 어쩌구가 보이면 우분투에 깃 계정 설정을 한다.
git config --global user.email "깃허브 이메일"
git config --global user.name "깃허브 아이디"
6. 메인브랜치 가져오기
git pull origin main
7. 원격 저장소의 모든 브랜치 가져오기
git fetch --all
8. 배포될 브랜치로 변경
git checkout deploy
9. 브랜치 풀
git pull origin deploy
02. 쉘 스크립트
0. 루트 디렉토리로 이동한다.
cd
1. 스크립트 파일을 만든다.
touch script.sh
2. 스크립트 파일에 권한 주기
chmod u+x script.sh
3. 스크립트 파일 수정
vi script.sh
4. 스크립트 파일을 다음과 같이 작성한다.
SERVICE_NAME=repo폴더명
echo "###### $SERVICE_NAME ######"
cd $SERVICE_NAME/
echo "remove old jar file"
rm -rf build/
echo "build new jar file"
./gradlew clean build -x test
./gradlew bootJar
echo "run server"
if [ -d "build/libs" ]; then
cd build/libs/
echo "Giving execute permissions to the JAR file..."
chmod +rx 만들어진 jar 파일명.jar
nohup java -jar 만들어진 jar 파일명.jar &
else
echo "Build directory does not exist, build might have failed."
fi
5. 실행
./script.sh
03. 적용 방법
deploy 브랜치에 변경사항이 생긴 경우 다음과 같은 순서를 따르면 된다.
1. repo 폴더로 이동
cd repo
2. 원격저장소에서 변경사항 가져오기
git pull origin deploy
3. 루트 디렉토리로 이동 (스크립트 파일이 루트 디렉토리에 있기 때문)
cd
4. 스크립트 파일 실행
./script.sh
728x90
'TIL' 카테고리의 다른 글
[BadSqlGrammarException] StatementCallback; bad SQL grammar [TRUNCATE TABLE members] (0) | 2024.05.21 |
---|---|
[Kotlin + SpringBoot] JaCoCo 추가하기 (0) | 2024.05.21 |
[JPA] @CreatedDate와 @LastModifiedDate (0) | 2024.01.13 |
[SpringBoot] 에러 응답 형식 통일 (0) | 2024.01.02 |
[SpringBoot] RequestParam 검증하기 및 오류 메시지 커스터마이징 (2) | 2024.01.01 |