DevOps/Jenkins

[Jenkins] Pipeline publish over ssh 사용한 배포 방법

cob 2024. 3. 27. 17:23

 

 

1. Publish over SSH 플러그인 설치

[Jenkins 관리] -> [Plugins] -> [Available plugins] -> Publish over SSH 검색 후 설치

publish over ssh 플러그인 설치

 

 

2. SSH 서버 등록(배포 대상 서버)

[Jenkins 관리] -> [System] -> [SSH Servers] 항목

  • Name : SSH 서버를 호출할 때 사용하는 이름
  • Hostname :  접속할 서버 IP
  • Useranme :  서버 접속할 때 계정명
  • Remote Directory : 접속 후 기본 경로 아무것도 입력하지 않으면 해당 계정의 홈 디렉터리 경로로 설정된다. 

 

 

반응형

3. SSH 서버 접속 방법 등록

[고급] 클릭

여기서 등록 방법이 두가지로 나뉜다 개인키를 사용한 접속 방법, Password를 사용한 방법 개인키는 귀찮기 때문에 패스워드로 등록한다. 서버의 암호가 주기적으로 변경되기 때문에 개인키를 등록하는 방법이 좋긴 함.

  • Passphrase / Password : 사용자 계정 암호 입력
  • Port : SSH 접속 포트는 기본이 22로 설정되어 있지만, 해당 서버에서 변경하면 그에 맞춰 입력한다.
  • [Test Configuration] : 해당 버튼을 통해 접속 테스트를 할 수 있다. 이상이 없을 경우만 다음 단계로 넘어간다.

 

 

4. Pipeline 스크립트 작성

pipeline {
    agent any

    stages {
        stage('Checkout') {
            steps {
           		// 소스 체크아웃
            }
        }
        stage('Build') {
            steps {
               // 체크 아웃 받은 소스 패키징
            }
        }
        stage('Deploy') {
            steps {
                script {
                    // 파일 전송
                    sshPublisher(
                        failOnError: true,
                        publishers: [
                            sshPublisherDesc(
                                configName: '[SSH 서버 이름]',
                                verbose: true,
                                transfers: [
                                    sshTransfer(
                                        cleanRemote:false,
                                        sourceFiles: 'target/jex-arcadia-studio-0.0.1-SNAPSHOT.jar',
                                        removePrefix: 'target',
                                        remoteDirectory: './JexStudio40/webRoot/',
                                    ),
                                    sshTransfer(
                                        execCommand: './JexStudio40/bin/startup.sh on'
                                    )
                                ]
                            )
                        ]
                    )
                }
            }
        }
    }
    post {
        cleanup {
            cleanWs()
        }
    }
}
  • failOnError : 'true'로 설정되어 있다면, 전송 중에 하나라도 실패하면 전체가 실패한다. (파이프라인 전체가 중단)
  • verbose : 'true' 옵션은 SSH 전송 작업이 수행될 때 상세한 정보가 출력되어 파이프라인 실행 로그에 표시된다.
  • cleanRemote : 'ture' 옵션을 설정하면 전송하기 전에 원격 디렉터리를 전부 삭제하고, 새로 생성한다.
  • sourceFiles : 배포 대상이 되는 파일 경로
  • removePrefix : 파일명을 제외한 경로를 입력해 삭제한다.
  • remoteDirectory : 배포할 원격지 경로 [2. SSH 서버 등록(배포 대상 서버)]에서 원격지 경로를 지정했기 때문에 이후 경로로 입력한다.
  • execCommand : 원격 서버에서 실행할 명령을 지정
  • sshTransfer : 원격 명령을 실행하는 step으로 순차적으로 실행되기 때문에 배포 후에 스크립트를 실행하기 위해서는 위와 같이 2개를 만든다.

 

 

반응형