일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- CloudWatch
- 정보처리기사 실기 기출문제
- 오블완
- Elasticsearch
- MySQL
- CKA 기출문제
- 티스토리챌린지
- mysql 튜닝
- kotlin
- 정보처리기사실기 기출문제
- 기록으로 실력을 쌓자
- Linux
- minikube
- Pinpoint
- 공부
- Java
- kotlin coroutine
- 코틀린 코루틴의 정석
- Spring
- kotlin spring
- AI
- IntelliJ
- Kubernetes
- AWS EKS
- APM
- PETERICA
- 정보처리기사 실기
- aws
- kotlin querydsl
- CKA
- Today
- Total
피터의 개발이야기
[jenkins] jenkins 빌드 후 JAR 파일 복사 본문
ㅁ 개요
ㅇ 회사 업무 중 고객에게 재공되는 Jar를 빌드하는 Jenkins 작업이 있었다. 빌드가 완료된 Jar는 scp를 통해 로컬로 옮겨서 반입요청 메일을 보내는 작업이 있는데, 이 과정을 개선하기로 하였다. 이를 위해 Jenkins에서 바로 다운로드 받는 방법을 정리하였다.
ㅁ 젠킨스 테스트 환경
ㅇ 젠킨스 테스트 환경은 [Jenkins] Docker 기반 Jenkins quick start examples을 이용하였습니다.
ㅁ 샘플 item 생성
ㅇ fileArchive라는 파이프라인 item을 생성하였습니다.
pipeline {
agent any
stages {
stage('Download') {
steps {
sh 'echo "artifact file" > generatedFile.txt'
}
}
}
post {
always {
archiveArtifacts artifacts: 'generatedFile.txt', # 싱글파일
onlyIfSuccessful: true # 성공일때만
}
}
}
ㅇ Pipeline에 간단하게 파일을 생성하고 다운로드 하는 Script를 작성하였습니다.
ㅁ 테스트 빌드
ㅇ 왼쪽의 "지금 빌드" 메뉴를 클릭하면 Last Successful Artifacts 부분이 표출됩니다.
ㅇ txt 파일명을 클릭 시 파일의 내용을 웹브라우저를 통해 직접 확인을 할 수도 있습니다.
ㅇ Last Successful Artifacts을 클릭 시 아래의 화면으로 이동하여 파일을 압축 다운로드 받을 수 있습니다.
ㅁ 결과파일 압축 방식
ㅇ 단일파일
archiveArtifacts artifacts: 'teste.js'
ㅇ 멀티파일
archiveArtifacts artifacts: '*.js'
ㅇ 다중패턴
archiveArtifacts artifacts: 'target/*.jar, target/*.war'
ㅇ 단일폴더
archiveArtifacts artifacts: 'build/*.js'
ㅇ 다중폴더
archiveArtifacts artifacts: '**/*.js'
- js/build.min.js
- css/build.min.js
위의 폴더 구조 시에 사용할 수 있습니다.
ㅇ 성공일 때만
onlyIfSuccessful: true
ㅁ archive artifacts 적용 트러블 슈팅
ㅇ 실 운영환경에서 완성된 jar가 다른 곳으로 이동되어서 workspace 밖의 경로에서는 실패가 났다.
ㅇ 함께 일하는 동료가 알려준 글을 보고 원인을 찾을 수 있었다.
ㅁ Jenkins Workspace에서만 작동
archiveArtifacts artifacts: "build/**"
archiveArtifacts artifacts: "./build/**" // Fails
archiveArtifacts artifacts: "$workspace/build/**" // Fails
ㅇ 아카이브 아티팩트는 작업공간에서만 작동하고 외부에서는 실패합니다.
ㅇ 경로는 작업 공간의 상대 경로여야 하며 "."으로 시작하지 않습니다.
ㅇ "*"는 디렉터리의 모든 파일과 일치하고,
**는 dir 및 하위 디렉터리를 포함한 모든 항목과 일치하며,
**/.log는 potfix가 있는 모든 하위 디렉터리의 모든 파일과 일치합니다.
ㅇ Windows 노드인지 Linux 노드인지에 따라 경로를 다르게 표현시 해야합니다.
ㅁ 함께 보면 좋은 사이트
'DevOps > Jenkins' 카테고리의 다른 글
[jenkins] Jenkins “Pending – Waiting for Next Executor” 해결방법 (0) | 2024.02.21 |
---|---|
[Jenkins] Docker 기반 Jenkins quick start examples (1) | 2023.10.19 |
[Jenkins] jenkins 로컬시간 변경하기 (0) | 2022.10.24 |
[Jenkins] Jenkins 백업 복원 방법 (0) | 2022.10.01 |
[Jenkins] Pipeline Stage View 세팅 (0) | 2022.10.01 |