GitLab CI를 활용한 Harbor Registry로 Container Image Push
지난번 글에서 GitLab을 통해 Runner를 등록해보았습니다.
https://jeongchul.tistory.com/717
GitLab Project Runner using Docker
GitLab Project Runner using DockerGitLab에서 기본으로 제공되는 Runner 를 활용하여 CI를 이용하던 도중에 Pipeline의 Jobs 다음의 에러와 함께 실패가 되고 있었습니다.Email과 Google Chats에도 실패된 Alarm 들..실
jeongchul.tistory.com
이번 글에서는 Tag를 Push하면 빌드된 Container Image가 Harbor에 Push 되도록 설정을 진행해보겠습니다.
Reference: https://docs.gitlab.com/ee/user/project/integrations/harbor.html
Harbor | GitLab
GitLab product documentation.
docs.gitlab.com
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 구축 진행을 설명 드리겠습니다.
감사합니다.
'Git > GitLab' 카테고리의 다른 글
GitLab Group Runner Docker Container (1) | 2024.07.24 |
---|---|
GitLab Runner Docker Build Daemon 2375 port issue (0) | 2024.07.24 |
GitLab Project Runner using Docker (0) | 2024.07.20 |
GitLab CI Container 이미지 빌드와 GitLab Registry (1) | 2024.07.08 |
GitLab CI Golang 배포 (0) | 2024.07.08 |