GITHUB WebHook -> Jenkins Server -> ec2-server(개발서버)
Jenkins pipeline을 위해서는 Jenkins Credential에 개발서버로 user 이름으로 ssh_private key를 등록해주고 Jenkinsfile 에
sshagent(credentials :['ec2-user']) 로 등록해준다.
sshagent 는 plug-in jenkins에서 plugin으로 등록해주어야 한다.
~/.ssh/authorized_keys
ssh 접근을 하기 위해서는 Jenkins(Client server) -> ec2(Backend server) 에 Jenkins의 public key를 등록시켜줘야 한다.
jenkins의 pipeline을 위한 file, 실행 순서가 build -> Deploy -> 등등 단계로 나누어진다.
pipeline {
agent any
tools {
jdk 'jdk-17'
}
stages {
stage('Build') {
steps {
sh '/opt/maven/bin/mvn clean install -DskipTests -Pdev'
}
}
stage('Deploy') {
// when {
// expression { currentBuild.result == null || currentBuild.result == 'SUCCESS' }
// }
steps {
sshagent(credentials: ['ec2-user']) {
sh 'ssh ec2-user@172.26.6.126 ' +
'"sudo rm -rf /home/WebService/TRUDOC/ADMIN/assets ' +
'&& sudo rm -rf /home/WebService/TRUDOC/ADMIN/META-INF ' +
'&& sudo rm -rf /home/WebService/TRUDOC/ADMIN/org ' +
'&& sudo rm -rf /home/WebService/TRUDOC/ADMIN/WEB-INF ' +
'&& sudo chown -R ec2-user /home/WebService/TRUDOC/ADMIN"'
sh 'scp /var/lib/jenkins/workspace/truedoc.admin_sjin/target/truedocadmin-0.0.1-SNAPSHOT.war ec2-user@172.26.6.126:/home/WebService/TRUDOC/ADMIN'
sh 'ssh ec2-user@172.26.6.126 "' +
'cd /opt/tomcat10/instances/trudocadmin ' +
'&& sudo sh shutodown-trudocadmin.sh ' +
'&& sudo unzip /home/WebService/TRUDOC/ADMIN/truedocadmin-0.0.1-SNAPSHOT.war -d /home/WebService/TRUDOC/ADMIN ' +
'&& sudo sh startup-trudocadmin.sh"'
}
}
}
}
post {
// 항상 실행
always {
echo 'This will always run'
}
// 이번 빌드가 성공일때 실행
success {
echo 'Build success.'
}
// 지난번 빌드와 빌드 결과가 다를때 실행
changed {
echo 'Build result changed.'
}
// 지난번 빌드는 실패이고 이번에 성공했을때 실행
fixed {
echo 'Build fixed.'
}
// 지난번 빌드는 성공이고, 이번에는 실패, unstable,aborted 될때 실행
regression {
echo 'Build regression.'
}
// 이번 빌드가 aborted 되었을때 실행
aborted {
echo 'Build aborted.'
}
// 이번 빌드가 실팯 되었을때 실행
failure {
echo 'Build failed.'
}
// 이번 빌드가 unstable 일때 실행
unstable {
echo 'Build unstable.'
}
// 이번 빌드가 성공이 아닐때 실행
unsuccessful {
echo 'Build unsuccessful.'
}
}
}