반응형
jenkins 처음 접할때는 Freestyle Project로 테스트해서 배포했었는데 초기에 접근하기엔 Freestyle Project이 편하자나,
예전에 테스트 해봣기에 요번엔 Pipeline을 통해서 jenkinsfile 명시해서 테스트 해보겠습니다.
1. Jenkins Pipeline Project 생성
- 파이프라인 생성
- GIT -> Repository URL 및 연결한 GIT Password
- Credentials 생성 방법 클릭
- jenkinsfile : Repository URL에 파일이 존재해야함
2. Pipeline Jenkinsfile 생성
- 1) Gradle Clean Build
- 2) k8s-master 서버에 Jar 파일 복사
- 3) k8s-master Dockerfile 파일 복사
- 4) Jar + Dockerfile 을 통해 Build 실행 -> Run 서비스실행
pipeline {
agent any
stages {
stage("Gradle Build") {
steps {
echo "1. Spring boot Build"
sh './gradlew clean build --exclude-task test'
}
}
stage('SSH Transfer(Jar)') {
steps([$class: 'BapSshPromotionPublisherPlugin']) {
echo "2. SSH Transfer(Jar)"
sshPublisher(
continueOnError: false, failOnError: true,
publishers: [
sshPublisherDesc(
configName: "k8s-master",//Jenkins SSH Name
verbose: true,
transfers: [
sshTransfer(
sourceFiles: "build/libs/evanboard-0.0.1-SNAPSHOT.jar", //전송할 파일
removePrefix: "", //파일에서 삭제할 경로가 있다면 작성
// remoteDirectory: "" //배포할 위치
// execCommand: "ls -al /tmp" //원격지에서 실행할 커맨드
)
]
)
]
)
}
}
stage('SSH Transfer(Dockerfile)') {
steps([$class: 'BapSshPromotionPublisherPlugin']) {
echo "3. SSH Transfer(Dockerfile)"
sshPublisher(
continueOnError: false, failOnError: true,
publishers: [
sshPublisherDesc(
configName: "k8s-master",//Jenkins SSH Name
verbose: true,
transfers: [
sshTransfer(
sourceFiles: "Dockerfile", //전송할 파일
// removePrefix: "", //파일에서 삭제할 경로가 있다면 작성
// remoteDirectory: "" //배포할 위치
//원격지에서 실행할 커맨드
execCommand: "docker stop evanboard; docker rm evanboard; docker rmi 192.168.0.100:443/backend/evanboard:2.0"
)
]
)
]
)
}
}//docker stop evanboard; docker rm evanboard; docker rmi evanboard;
stage('Docker build & Start') {
steps([$class: 'BapSshPromotionPublisherPlugin']) {
echo "4. docker build & start"
sshPublisher(
continueOnError: false, failOnError: true,
publishers: [
sshPublisherDesc(
configName: "k8s-master",//Jenkins SSH Name
verbose: true,
transfers: [
sshTransfer(
sourceFiles: "Dockerfile", //전송할 파일
// removePrefix: "", //파일에서 삭제할 경로가 있다면 작성
// remoteDirectory: "" //배포할 위치
//원격지에서 실행할 커맨드
execCommand: "docker build -t 192.168.0.100:443/backend/evanboard:2.0 -f ./Dockerfile .;docker run -p 8080:8080 -d --name evanboard 192.168.0.100:443/backend/evanboard:2.0"
)
]
)
]
)
}
}
}
}
- Pipeline Dockerfile
FROM openjdk:11
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} /application.jar
# ADD ./build/libs/evanboard-0.0.1-SNAPSHOT.jar /application.tar
ENTRYPOINT ["java", "-jar", "/application.jar"]
EXPOSE 8080
- Pipeline Project 실행
- Stage : Gradle BUild -> SSH(Jar Copy) -> SSH(Dockerfile) -> Docker Build & Docker Start
3. Docker 리소스 확인
- Container 이미지
- Containerd 서비스 상태
반응형
'Jenkins' 카테고리의 다른 글
Jenkins Deployment로 설치하기 (0) | 2024.06.13 |
---|---|
[Jenkins]JVM 용량 증설하기 (0) | 2022.06.22 |
[Docker]Docker로 Jenkins 설치 (0) | 2022.03.05 |
댓글