728x90
반응형
# Jenkins와 Harbor를 연동하고 테스트 이미지를 Harbor에 업로드하는 작업이다.
1. Harbor용 Jenkins Credencials 생성
Jenkins 관리 > Manage Credencials > System > Global credentials (unrestricted) > Add Credencials 클릭
- 세부 설정
ID는 나중에 파이프라인에서 인식할 수 있는 credentials의 ID이기에 Harbor로 기입하고 username은 구축한 harbor의 계정, pw는 말그대로 harbor계정의 pw를 입력한다. Description은 harbor credentials라는것을 이해할 수 있게끔 임의로 한다.
- Jenkins 에서의 Harbor Credentials 정보
2. Gitlab에서 Harbor 연동
- 기본 구성은 아래와 같다.
- Jenkinsfile 내용
/* pipeline 변수 설정 */
def app
node {
// gitlab으로부터 소스 다운하는 stage
stage('Checkout') {
checkout scm
}
// mvn 툴 선언하는 stage, 필자의 경우 maven 3.6.0을 사용중
stage('Ready'){
sh "echo 'Ready to build'"
}
// mvn 빌드로 jar파일을 생성하는 stage
stage('Build'){
sh "echo 'Build Spring Boot Jar'"
}
//dockerfile기반 빌드하는 stage ,git소스 root에 dockerfile이 있어야한다
stage('Build image'){
app = docker.build("fe/notice-board")
}
//docker image를 push하는 stage, 필자는 dockerhub에 이미지를 올렸으나 보통 private image repo를 별도 구축해서 사용하는것이 좋음
//docker.withRegistry에 dockerhub는 앞서 설정한 dockerhub credentials의 ID이다.
stage('Push image') {
docker.withRegistry("http://15.165.141.22:8088", "Harbor") {
app.push("22")
app.push("latest-01") // 태그를 부여한다. latest-01, 22
}
}
stage('Complete') {
sh "echo 'The end'"
}
}
- Dockerfile의 내용
FROM adoptopenjdk:11-jdk-hotspot AS builder
COPY gradlew .
COPY gradle gradle
COPY build.gradle .
COPY settings.gradle .
COPY src src
RUN chmod +X ./gradlew
RUN chmod 755 ./gradlew
RUN ./gradlew bootJar
FROM adoptopenjdk:11-jdk-hotspot
COPY --from=builder build/libs/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]
3. Harbor로 이동하여 저장된 이미지를 확인
- 자동으로 태그값을 변경하면서 이미지 업로드가 진행된다.
4. 현재 까지의 과정을 정리
- 링크 연동
다음에는 Harbor에 업로드된 이미지를 K8s에 자동으로 배포되는 작업을 진행한다.
- 끝 -
728x90
반응형
'PrivateCloud > CI CD (지속적인 통합, 배포 파이프라인 구축)' 카테고리의 다른 글
2. (CI/CD) Argocd를 활용한 배포 with Github, Jenkins (0) | 2022.11.17 |
---|---|
On-premise Jenkins 설치 및 Gitlab 연동하기 (1) | 2022.11.14 |
Gitlab-runner 를 활용한 CI/CD 구성 (Gitlab + Gitlab-runner) (0) | 2022.11.03 |