jenkins
- 소프트웨어 개발 시 지속적으로 통합해주는 CI(Continuous Integration) 툴이다.
저희 회사에서는 젠킨스에 git이랑 연동하여 자동배포를 구현할 때, 스케줄작업등록(자동빌드)로 활용하고 있다.
git 운영브랜치에 push하는 동작을 인식하여 자동으로 배포할 수 있지만
-> 현재 버튼(Build now)을 눌러서 수동으로 배포하고 있어 해당부분까지 연동한 내용을 정리해본다
1.jenkins 설치
- dnf install jenkins
: 젠킨스 설치
- systemctl enable jenkins
: 백그라운드에서 젠킨스 실행
- systemctl status jenkins
: 젠킨스 상태 확인
* service 명령어가 편해서 service 를 사용중
service jenkins start
service jenkins stop
service jenkins restart
service jenkins status
* 젠킨스의 기본포트를 바꾸고 싶은경우
service jenkins status 상태확인 후 load되는 설정 path 확인 port 설정을 변경하고 재시작
*젠킨스접속 (IP주소:port)
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
-위 명령어로 활성화에 필요한 암호를 체크하여 활성화 시킨
-plugin 설치 : 순서에 맞게 잘 설치해주고 사용자등록(관리자등록)
2. 빌드설정
- git 연동
github에서 access token 발급이 필요하다.
경로 : settings - developer settings
순차적으로 토큰을 발급받으면 된다
- Credentials 등록
jenkins관리 - Credentials 로 접근 등록한다
- 빌드설정
소스코든 관리부, build 부분만 남긴다.
- git 레파지토리 경로 url 입력
- credential 등록한 id 권한으로 접근
- master 브랜치 선택
- Build step - Invoke Gradle script 추가
- task 등록
clean build -Dorg.gradle.daemon=true
* 빌드속도를 조금 더 빠르게 실행할 수 있도록 gradle daemon 을 활성화 했다
- Build step - excute shell 추가
#port
PORT=8080
#project directory move from /var/lib/jenkins/workspace/hymes-back to /hyds/hymes-back
sudo rm -rf /hyds/hymes-back
sudo cp -rf /var/lib/jenkins/workspace/hymes-back /hyds
sudo rm -rf /var/lib/jenkins/workspace/hymes-back
# Find processes using the specified port
OLD_PIDS=$(sudo lsof -t -i:$PORT || true)
# If any processes are using the port, try to terminate them gracefully
if [ -n "$OLD_PIDS" ]; then
echo "Processes using port $PORT have the following PID(s): $OLD_PIDS"
for PID in $OLD_PIDS; do
# Check if process still exists
if ps -p $PID > /dev/null; then
echo "Attempting graceful termination of process with PID $PID"
sudo kill $PID || true
# Wait for a few seconds to allow the process to terminate gracefully
sleep 5
# If the process is still running, forcefully kill it
if ps -p $PID > /dev/null; then
echo "Force killing process with PID $PID"
sudo kill -9 $PID || true
fi
else
echo "Process with PID $PID no longer exists"
fi
done
else
echo "No processes found using port $PORT"
fi
# start springboot
cd /hyds/hymes-back/build/libs
sudo sh -c "nohup java -jar hyproject-api-0.0.1.jar --spring.profiles.active=prod > /hyds/logs/nohup.out_$(date +%Y-%m-%d) 2>&1 & echo \$! > /tmp/java_pid.tmp"
# Save the PID
PID=$(cat /tmp/java_pid.tmp)
# Check if the server started successfully
if [ $? -eq 0 ]; then
echo "Deploy finished successfully! PID: $PID"
else
echo "Failed to deploy"
fi
스크립트 전문이다. (특별하게 보안되는 부분이 없어서 수정없이 올린다.)
주석으로 내용을 보면 되겠지만 약간의 설명을 덧붙이면
1. 젠킨스 워크스페이스 -> 프로젝트 디렉토리로 옮겼다.
2. 8080 포트로 올라간 pid가 있으면 해당 프로세스를 kill 한다.
3. 프로젝트 디렉토리에 빌드된 jar 파일을 찾아서 실행시킨다 (로그는 날짜별로 log 디렉토리에 쌓는다)
해당 프로세스로 빌드를 설정하여 사용중이다.
회사 규모가 작다보니 피드백이 많지 않아 정상적인 프로세스로 작성한건지는 모르겠다.
하지만 우선 정상적으로 반영 서비스가 실행되고 있다.
그래도 이것저것 해볼 수 있으니 조금 더 버텨보면서 내것으로 만들어 보자!!
'WORK' 카테고리의 다른 글
땅꼬마의 log 삭제 crontab 설정! (1) | 2024.03.19 |
---|---|
땅꼬마의 docker 관련 명령어 정리! (0) | 2024.03.04 |
땅꼬마의 LINUX 명령어 정리! (2) | 2024.01.25 |
땅꼬마의 카멜케이스 변환기 Excel! (0) | 2023.07.31 |
땅꼬마의 linux - MySQL Workbench 연결하기!! (0) | 2023.04.13 |