GitLab CI를 활용한 Harbor Registry로 Container Image Push
GitLab CI를 활용한 Harbor Registry로 Container Image Push
지난번 글에서 GitLab을 통해 Runner를 등록해보았습니다.
https://jeongchul.tistory.com/717
이번 글에서는 Tag를 Push하면 빌드된 Container Image가 Harbor에 Push 되도록 설정을 진행해보겠습니다.
Reference: https://docs.gitlab.com/ee/user/project/integrations/harbor.html
GitLab 설정
Repoistory에서 Settings의 Integrations 메뉴를 클릭합니다.
Integrations 페이지에서 Harbor를 검색하고 Configure 클릭합니다.
다음에서 Harbor URL과 Project name 및 Username 그리고 password를 입력합니다. 완료 후 Test settings를 눌러 정상적으로 연결되는지 확인합니다.
Harbor Integration 설정이 완료되면 다음의 글로벌 변수$HARBOR_USERNAME, $HARBOR_HOST, $HARBOR_OCI, $HARBOR_PASSWORD, $HARBOR_URL and $HARBOR_PROJECT 가 생성되며 CI/CD에 활용됩니다.
Deploy 메뉴에서 Harbor Registry를 클릭합니다.
선 등록된 Container Image 들을 확인할 수 있습니다.
GitLab CI
Tag를 Push하면 빌드된 Container Image가 Harbor에 Push 되도록 설정을 진행해보겠습니다.
다음은 .gitlab-ci.yaml 파일을 수정합니다.
- DOCKER_IMAGE : $HARBOR_HOST/$HARBOR_PROJECT/[REPOSITORY_NAME]
- TAG : $CI_COMMIT_REF_NAME
- before_script: echo "$HARBOR_PASSWORD" | docker login -u "$HARBOR_USERNAME" --password-stdin "$HARBOR_HOST"
variables: REPO_NAME: gitlab.com/xxx/xxx-api-server DOCKER_IMAGE: $HARBOR_HOST/$HARBOR_PROJECT/xxx-api-server TAG: $CI_COMMIT_REF_NAME DOCKER_HOST: tcp://docker:2375 DOCKER_TLS_CERTDIR: "" DOCKER_DRIVER: overlay2 ... container-build-push: stage: container-build-push image: docker:latest rules: - if: $CI_COMMIT_TAG # Run this job when a tag is created variables: # using "docker" as the host is only possible if you alias the service below DOCKER_HOST: tcp://docker:2375 # could be wrong here but although Docker defaults to overlay2, # Docker-in-Docker (DIND) does not according to the following GitLab doc: # https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#use-the-overlayfs-driver DOCKER_DRIVER: overlay2 DOCKER_TLS_CERTDIR: "" services: - name: docker:dind alias: docker command: ["--tls=false"] script: - docker build --platform linux/x86_64 -t $DOCKER_IMAGE:$TAG . - docker push $DOCKER_IMAGE:$TAG before_script: - echo "$HARBOR_PASSWORD" | docker login -u "$HARBOR_USERNAME" --password-stdin "$HARBOR_HOST"
.gitlab-ci.yaml을 Push하고 Tag를 달아봅니다.
git tag -a alpha-v1.0.0 -m"Release version alpha-v1.0.0 for GitLab CI Harbor"
git push origin alpha-v1.0.0
Tag를 배포하면서 위에서 설정한 Pipeline 중 Container Image Push가 실행됩니다.
Harbor
Container Image가 Push 되었는지 확인을 해봅니다.
다음 글에서는 Kubernetes에서 Harbor 구축 진행을 설명 드리겠습니다.
감사합니다.