새소식

반응형
250x250
My Study/Linux

Rollback 로직 정리

  • -
728x90
반응형

Rollback에 관해 매우 간단하게 정리하려 한다.

 

내가 생각했던 Rollback 로직은 

 

빌드할 때 원래 사용하던 war 파일을 backup 폴더에 옮긴 후

 

빌드된 파일을 webapps 폴더에 옮긴다.

 

그 후 프로젝트를 재실행하면 끝인 아주 간단한 로직이었다.

 

Jenkins Pipeline으로 만든 코드이다.

 

pipeline {
    agent any
    stages {
        stage('filecheck') {
            steps {
                script {
                    echo "file check start..!"
                    def file = "/usr/local/project/webapps/backup/ROOT.war"
                    if(fileExists(file)) {
                        echo "file exists. continue rollback"
                    } else {
                        error "file does not exist. stop rollback"
                    }
                }
            }
        }
        stage('rollback') {
            steps {
                script {
                    echo "rollback start..!"
                    sh '/usr/local/project/bin/shutdown.sh'
                    sleep time: 5, unit: 'SECONDS'
                    def isTomcatRunning = sh(script: 'ps aux | grep "[p]roject"', returnStatus: true) == 0
                    if(isTomcatRunning) {
                        error "application still running..."
                    }
                    sh 'rm -rf /usr/local/project/webapps/ROOT'
                    sh 'mv /usr/local/project/webapps/backup/ROOT.war /usr/local/project/webapps'
                }
            }
        }
        stage('restart') {
            steps {
                script {
                    echo "tomcat will be restarted..!"
                    sh 'sudo /usr/local/project/bin/startup.sh'
                }
            }
        }
    }
}

 

먼저 fileCheck stage이다.

 

빌드시에 현재 사용중인 war 파일을 backup 폴더로 옮겼는데

 

이 rollback job이 실행될 때, backup 폴더에 war 파일이 있는지 검사하는 로직이다.

 

만약 war 파일이 존재하지 않는다면 파일이 존재하지 않는다는 오류를 반환하고 job은 종료된다.

 

두 번째 rollback stage이다.

 

여기서는 실행중인 프로젝트를 먼저 shutdown 해준다.

 

shutdown 이후 현재 프로젝트가 정상적으로 종료되었는지 확인을 해준 뒤

 

종료가 되지 않았다면 프로젝트가 아직 실행중이라는 오류를 반환하고 job은 종료된다.

 

만약 정상적으로 종료 되었다면 ROOT.war 파일을 원래 위치로 다시 옮겨온다.

 

세 번째 restart stage이다.

 

종료했던 프로젝트를 다시 실행을 해주는 과정이다.

 

이 세 과정을 거치면 rollback이 성공적으로 이루어졌을 것이다.

 

이상이다.

728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.