반응형
jenkins pipeline 구성 - sshPublisher
sshPublisher 는 ssh 를 통해 원격서버로 파일을 복사하거나 명령을 실행하는 기능을 제공하는 플러그인중 하나이다.
우선접속할수 있는 시스템을 설정 한다.
SSH Server Add..
Jenkinsfile 의 step script
sshTransfer
는 sshPublisher
에서 사용되는 객체 중 하나로, 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’ 속성에 여러개의 쉘명령어를 입력하고 싶으면 세미콜론 (’;’) 으로 명령어를 구분한다.
참고
반응형
'Auto Build(CI SCM GIT) > Jenkins' 카테고리의 다른 글
Jenkins 자원부족에 의한 교착 상태 Waiting for next available executor (0) | 2024.05.04 |
---|---|
Jenkins 자원부족에 의한 교착 상태 Waiting for next available executor (0) | 2024.04.25 |
Jenkinsfile 에서 변수 사용방법 (0) | 2024.04.07 |
Jenkins SSH 원격지 배포 (0) | 2016.10.19 |