instance 2개
1. jenkins server - t2.2xlarge
jenkins server 서버용 인스턴스에 jenkins 설치
docker run --name myjenkins --privileged -p 8080:8080 jenkins/jenkins:lts-jdk17
Deshboard -> 젠킨스관리 -> System 에서 Publish over SSH 설정 !
web server 용 ec2의 키를 넣어줌
ec2_micro (web server 용 ec2)
github 연동과 webhooks 를 위해 체크
#!/bin/bash
echo "Start Spring Boot Application!"
CURRENT_PID=$(ps -ef | grep java | grep dokotlin | awk '{print $2}')
echo "$CURRENT_PID"
if [ -z $CURRENT_PID ]; then
echo ">현재 구동중인 어플리케이션이 없으므로 종료하지 않습니다."
else
echo "> kill -9 $CURRENT_PID"
kill -9 $CURRENT_PID
sleep 10
fi
echo ">어플리케이션 배포 진행!"
nohup java -jar /home/ubuntu/deploy/step06_citest-0.0.1-SNAPSHOT.jar >> /home/ubuntu/deploy/logs/javaApp.log &
고급 버튼을 클릭후 Verbose를 체크하면 빌드할 때 상세 내역이 표시되므로 유용!
최종 스크립트
pipeline {
agent any
stages {
stage('git 연동') {
steps {
echo 'start **********'
git branch: 'main',
credentialsId: '아이디Id',
url: 'https://github.com/Dumbveloper/fisa240220.git'
echo 'end **********'
}
}
stage('list view') {
steps {
echo 'view list *****'
sh 'whoami'
sh 'pwd'
sh 'ls -al'
echo 'view list *****'
}
}
stage('build') {
steps {
echo 'build start *****'
sh './gradlew build'
echo 'build end *****'
}
}
stage('execute on ec2') {
steps {
script {
sshPublisher(
publishers: [
sshPublisherDesc(
configName: 'ec2_micro',
transfers: [
sshTransfer(
cleanRemote: false,
excludes: '',
execCommand: 'sh /home/ubuntu/start_server.sh',
execTimeout: 120000,
flatten: false,
makeEmptyDirs: false,
noDefaultExcludes: false,
patternSeparator: '[, ]+',
remoteDirectory: '/deploy',
remoteDirectorySDF: false,
removePrefix: 'build/libs',
sourceFiles: 'build/libs/*SNAPSHOT.jar'
)
],
usePromotionTimestamp: false,
useWorkspaceInPromotion: false,
verbose: true
)
]
)
}
}
}
}
}
결과가 잘 돌고 있는 것을 확인 할 수 있음
jps 명령어 실행시 정상작동 확인