Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- linkerd
- Jenkins
- sonarqube
- Service Mesh
- 모의해킹
- CI
- Resource
- Crawling
- 크롤링
- 웹 취약점
- 스크레이핑
- argocd
- Prometheus
- eks
- gitlab cd
- CD
- gitlab ci
- helm
- CI/CD
- ECR
- DevOps
- opentelemetry
- Kubernetes
- deploy
- docker
- Monitoring
- 웹 해킹
- scraping
- GitLab
- Grafana
Archives
- Today
- Total
ㅡ.ㅡ
[Gitlab] CI/GitLab Container Registry 본문
소스코드를 변경 후 Gitlab 저장소에 push했을 때 gradle을 통해 빌드 후 생성된 jar를 파일을 openjdk-jre11 docker image에 옮긴 후 해당 이미지를 Gitlab Registry에 저장하는 방법이다.
Deploy Token
Gitlab Registyr에 사용할 토큰을 생성 후 CI/CD 변수에 토큰명과 값을 등록하여 CI 작업시 Gitlab Registry 접근 시 해당 값으로 인증한다.
Dockerfile
# 빌드 작업
FROM openjdk:11-jdk as builder
COPY gradlew .
COPY gradle gradle
COPY build.gradle .
COPY settings.gradle .
COPY src src
RUN chmod +x ./gradlew
RUN ./gradlew bootJar
# 빌드 시 생성된 jar를 파일을 jre-slim 이미지에 복사하여 구동
FROM openjdk:11.0.12-jre-slim
COPY --from=builder build/libs/*.jar app.jar
ENV TZ=Asia/Seoul
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ENV LOG_HOME=/data/logs
ENV LOG_PATH=/data/logs
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]
.gitlab-ci.yaml
before_script:
- export
# 스크립트에서 사용할 변수 설정
variables:
DOCKER_REGISTRY: $CI_REGISTRY
DOCKER_TLS_CERTDIR: ''
DOCKER_HOST: tcp://localhost:2375
TAG_LATEST: $CI_REGISTRY_IMAGE:latest
TAG_COMMIT: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
# docker dind 방식을 통해 빌드(http 허용 설정)
services:
- name: docker:19.03.13-dind
command:
["--insecure-registry=레지스트리 주소"]
# pipeline stage를 지정
stages:
- package
# 변경된 소스코드 패키징하여 GitLab Registry에 저장
CI-Gitlab-Regisrty:
stage: package
image: docker:19.03.13
script:
- docker login -u $TOKEN_USER -p $TOKEN_PW $CI_REGISTRY
- docker build -t $CI_REGISTRY/$TAG_COMMIT -t $CI_REGISTRY/$TAG_LATEST .
- docker push $CI_REGISTRY/$TAG_COMMIT
- docker push $CI_REGISTRY/$TAG_LATEST
# 작업을 수동으로 실행
when: manual
# 해당 브랜치에 대한 변경사항이 있을때 실행
only:
- 브랜치명
# 해당 작업을 지시할 Gitlab-Runner
tags:
- 러너 태그명
'WorkFlow' 카테고리의 다른 글
[Gitlab] CD/Kubectl (0) | 2021.09.25 |
---|---|
[Gitlab] CI/ECR (3) | 2021.09.20 |
[Gitlab] Gitlab Runner 연동 (0) | 2021.09.19 |
[Gitlab] Gitlab - K8S 연동 (0) | 2021.09.19 |
[Gitlab] Gitlab (0) | 2021.09.18 |