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
- eks
- Resource
- gitlab cd
- helm
- GitLab
- CI
- Grafana
- sonarqube
- Prometheus
- scraping
- ECR
- Crawling
- deploy
- Jenkins
- Monitoring
- 모의해킹
- gitlab ci
- Kubernetes
- CI/CD
- Service Mesh
- CD
- 크롤링
- opentelemetry
- 스크레이핑
- linkerd
- argocd
- 웹 취약점
- docker
- 웹 해킹
- DevOps
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 |