시스템/쿠버네티스
[쿠버네티스] 젠킨스 & 깃랩 CI 자동배포
cbwstar
2024. 1. 15. 18:02
728x90
반응형
1. 젠킨스 설정
1) 깃랩인증정보 등록
2) global 클릭
2) Add Credectials 클릭
3) Username with password
4) GitLab API token
5) 젠킨스관리-> 시스템
2. 깃랩 토큰 발행
- 발행된 토큰을 위에 젠킨스에 사용
1) 신규프로젝트 생성
2) 프로젝트 생성 완료
로컬pc에서 작업한 소스 깃랩으로 push
3) 로컬 작업 소스 깃랩 push
4) 깃랩 명령어 실행
5) 깃랩 소스 반영 확인
6) Webhooks 설정
- 소스 커밋시 자동 CI
7) 젠키스 파이프라인 생성
- 메인화면에서 새로운 item 클릭
3 파이프라인 테스트
1) Dockerfile 생성
FROM openjdk:17-ea-11-jdk-slim
LABEL authors="cbw"
#ARG HOST_JAR_FILE_PATH=./piplinetest-0.0.1-SNAPSHOT.jar # Jar 경로 환경변수 설정.
COPY pipelinetest.jar /pipelinetest.jar
# 해당 Docker image로 Container를 생성/실행하는 시점에 아래의 커맨드가 수행되도록한다.
CMD ["java", "-jar", "/pipelinetest.jar"]
2) Jenkinsfile 생성
pipeline {
agent any
// any, none, label, node, docker, dockerfile, kubernetes
tools {
gradle 'gradle8.5'
}
environment {
dockerHubRegistry = 'invako.com/pipelinetest/pipe' /* URL Harbor 저장소 push 테스트 */
/* dockerHubRegistryCredential = '{Credential ID}'*/
}
stages {
stage('Checkout Application Git Branch') {
steps {
git credentialsId: 'gitlab_token',
url: 'https://invako.kro.kr:8090/cbw/piplinetest.git', /* URL변경에 따른 수정 필요 */
branch: 'main'
}
post {
failure {
echo 'Repository clone failure !'
}
success {
echo 'Repository clone success !'
}
}
}
stage('gardle Jar Build') {
steps {
sh 'chmod +x ./gradlew'
sh './gradlew bootjar'
}
post {
failure {
echo 'Gradle jar build failure !'
}
success {
echo 'Gradle jar build success !'
}
}
}
stage('Docker Image Build') {
steps {
sh "cp ./build/libs/piplinetest-0.0.1-SNAPSHOT.jar ./pipelinetest.jar"
sh "docker build . -t ${dockerHubRegistry}:${currentBuild.number}"
sh "docker build . -t ${dockerHubRegistry}:latest"
}
post {
failure {
echo 'Docker image build failure !'
}
success {
echo 'Docker image build success !'
}
}
}
stage('Docker Image Push') {
steps {
sh "echo 도커허브비밀번호 | docker login invako.com -u admin -p Invako12!@"
sh "docker push ${dockerHubRegistry}:${currentBuild.number}"
sh "docker push ${dockerHubRegistry}:latest"
sleep 10 /* Wait uploading */
}
post {
failure {
echo 'Docker Image Push failure !'
sh "docker rmi ${dockerHubRegistry}:${currentBuild.number}"
sh "docker rmi ${dockerHubRegistry}:latest"
}
success {
echo 'Docker image push success !'
sh "docker rmi ${dockerHubRegistry}:${currentBuild.number}"
sh "docker rmi ${dockerHubRegistry}:latest"
}
}
}
}
}
3) index.html 파일 생성
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<h1>스프링 부트 파이프 라인 테스트 수정 테스트</h1>
</body>
</html>
4) 전체적인 구조
5) 커밋 시 자동 배포 확인
도커 이미지 생성까지 완료가 되었습니다.
728x90
반응형