1.  동작 순서

  1. Jeus 서버(원격 서버)에 배포된 War 파일 백업
  2. SVN(Jenkins 서버에 내포)에 저장되어 있는 Spring Boot 프로젝트 War 파일로 빌드
  3. 빌드한 War 파일 Jeus 서버(원격 서버)에 배포

 

2.  사전 준비

편의를 위해 암호 입력 없이 원격 서버에 SSH 접속할 수 있도록 허용. 

  • 로컬서버 : 파일을 갖고 있는 서버
  • 원격서버 : 파일을 저장할 서버

1.  로컬서버

ssh-keygen -t rsa (엔터 3번)

2.  원격서버

mkdir ~/.ssh

3.  로컬서버

scp -P 22 ~/.ssh/id_rsa.pub user명@IP:.ssh/authorized_keys

4.  원격서버

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

5.  jenkins 사용자에 암호 입력없이 sudo 권한 부여

vi /etc/sudoers

# 맨밑에 추가
jenkins ALL=NOPASSWD: ALL

 

3.  Pipeline 작성

pipeline {
    agent any
    stages{
        stage('Backup') {
            steps{
                script{
                    sh ("sudo -S ssh jeus서버유저명@jeus서버IP 'cp 배포된War경로 백업할 경로'")
                }
            }
        }
        stage('Build') {
            steps{
                script{
                    // svn 저장소 체크아웃
                    sh ("svn checkout svn://서버IP/저장소명")
                    // spring boot gradle build (./gradlew build 명령 수행하는 쉘 스크립트)
                    sh ("sudo -S /jenkins_scripts/build.sh")
                }
            }
        }
        stage('Deploy') {
            steps{
                script{
                    sh ("sudo -S scp war파일 jeus서버유저명@jeus서버IP:배포할경로")
                }
            }
        }
    }
}
복사했습니다!