ㅡ.ㅡ

[Gitlab] CI/GitLab Container Registry 본문

WorkFlow

[Gitlab] CI/GitLab Container Registry

ekwkqk12 2021. 9. 20. 16:15

소스코드를 변경 후 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