본문 바로가기
Auto Build(CI SCM GIT)/Jenkins

jenkins pipeline 구성 - sshPublisher

by 아이티.파머 2023. 3. 27.
반응형

jenkins pipeline 구성 - sshPublisher

sshPublisher 는 ssh 를 통해 원격서버로 파일을 복사하거나 명령을 실행하는 기능을 제공하는 플러그인중 하나이다.

우선접속할수 있는 시스템을 설정 한다.

SSH Server Add..

Jenkinsfile 의 step script

sshTransfersshPublisher에서 사용되는 객체 중 하나로, SSH를 사용하여 파일을 복사할 때 소스 파일과 대상 파일 경로를 지정하는 데 사용됩니다.

sshTransfer의 속성은 다음과 같습니다.

  • sourceFiles: 복사할 파일의 경로를 지정합니다. 파일을 복사하려면 파일 이름과 확장자를 지정하고, 디렉토리를 복사하려면 디렉토리 이름만 지정하면 됩니다. 여러 파일을 복사하려면 파일 이름을 쉼표로 구분합니다.
  • excludes: 복사하지 않을 파일의 경로를 지정합니다. 여러 파일을 지정하려면 파일 이름을 쉼표로 구분합니다.
  • removePrefix: 복사된 파일의 경로에서 제거할 접두사를 지정합니다.
  • remoteDirectory: 복사된 파일이 저장될 원격 호스트의 디렉토리 경로를 지정합니다. 이 속성을 지정하지 않으면 파일은 현재 작업 디렉토리에 저장됩니다.
  • execCommand: 복사한 파일을 실행할 때 사용할 명령을 지정합니다. 예를 들어, 복사한 파일이 스크립트 파일인 경우, 이 속성을 사용하여 스크립트를 실행할 수 있습니다.

다음은 sshTransfer를 사용하는 예제입니다.

stage('Deploy') {
    steps {
        sshPublisher(
            publishers: [
                sshPublisherDesc(
                    configName: '_web_prod', // 위에서 만든 SSH 의 Name 을 적을것
                    transfers: [
                        sshTransfer(
                            cleanRemote: false,
                            excludes: '',
                            execCommand: 'sh /home/skan/server.sh stop;sh /home/skan/server.sh start'
                            execTimeout: 120000,
                            flatten: false,
                            makeEmptyDirs: false,
                            noDefaultExcludes: false,
                            patternSeparator: '[, ]+',
                            remoteDirectory: '/home/skan/application/',
                            remoteDirectorySDF: false,
                            removePrefix: 'build/libs',
                            sourceFiles: 'build/libs/*.jar')],
                            usePromotionTimestamp: false,
                            useWorkspaceInPromotion: false,
                            verbose: true
                        )
                    ]
                )
            ]
        )
    }
}
  • verbose 옵션을 true로 주면 트러블 슈팅시 유용하다. consol output 을 확인 할 수있다.

Script 설명

여기샘플에서는 빌드된 모듈의 ‘build/libs’ 의폴더에서 생성된 *.jar 파일을 ‘/home/skan/application’ 으로 복사하고 복사할때 ‘build/libs’는 제거하는것이다. 이후 복사가 완료되면 ‘home/skan/server.sh stop’, ‘home/skan/server.sh start’ 를 실행한다.

‘execCommand’ 속성에 여러개의 쉘명령어를 입력하고 싶으면 세미콜론 (’;’) 으로 명령어를 구분한다.

 

 

 

 

참고

https://velog.io/@sihyung92/우젠구2편-젠킨스-파이프라인을-활용한-배포-자동화

반응형