이번 포스팅에서는 jenkins 로 빌드와 배포서버를 분리해보는 것.
3개의 플러그인을 설치하였다.
아래의 Publish over SSH 메뉴에서 key 쪽에 jenkins 가 설치된 내 클라우드에서 ssh-keygen을 사용해서 나온 비밀키를 적어준다.
pipeline {
agent any
stages {
stage('cloning') {
steps {
git url:'https://github.com/dongmyoungLee/linux_test_be.git',
branch: "master"
}
}
stage('Build') {
steps {
sh ('chmod 744 gradlew')
sh "./gradlew build"
}
}
stage('Deploy'){
steps{
sshPublisher(
publishers: [
sshPublisherDesc(
configName: 'deploy',
transfers: [
sshTransfer(
sourceFiles: 'build/libs/*T.jar',
remoteDirectory: '',
removePrefix:'build/libs',
execCommand: 'java -jar *.jar > app.out 2>&1 &'
)
]
)
]
)
}
}
}
}
여기까지 해주면 jenkins 설정은 완료되었다.
현재 두개의 인스턴스가 있다.
A인스턴스 : jenkins가 설치된 build_server
B인스턴스 : jar 가 실행 될 deploy_server
jenkins 에서 B인스턴스에 접근할 수 있도록 A 인스턴스에서 ssh-keygen으로 생성한 비밀키과 공개키중 공개키를 B인스턴스의 .ssh/authorized_keys 에 기입해놓아야 한다.
이렇게 기입해놓을 시 A 클라우드에서 jenkins 계정에 접근한 뒤
ssh test@내부ip
로 접속이 가능해진다.
A클라우드에서 build 가 되었고,
B클라우드에선 실행이 되고 있는 모습이다.