GitLab CI/CD로 Docker 이미지 버전을 지정하는 방법
4373 단어 devopsgitlabnelsoncodedocker
GitLab의 변수
CI_REGISTRY_USER: GitLab의 실제 사용자
CI_REGISTRY_PASSWORD: 실제로 GitLab의 비밀번호
CI_REGISTRY: "registry.gitlab.com"
CI_PROJECT_PATH: "gitlab-example/my-project"
CI_COMMIT_SHORT_SHA: 최근 커밋 ID
1.Docker 로그인(GitLab 컨테이너 레지스트리)
docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
2. ID COMMIT SHA로 이미지 빌드
docker build . -t $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA
3.이전 이미지에서 ID 가져오기
IMAGE_ID=$(docker images | grep $CI_REGISTRY/$CI_PROJECT_PATH\/$IMAGE_NAME | awk '{print $3}')
4.이전 이미지의 다이제스트를 사용하여 최신 이미지에 태그 다시 지정
docker tag $IMAGE_ID $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:latest
5. 최신 이미지를 푸시하고 샤를 커밋합니다.
docker push $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA
docker push $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:latest
6.파이프라인
build:
image: docker:19.03.12
stage: build
services:
- docker:19.03.12-dind
rules:
- if: $CI_PIPELINE_SOURCE == "push"
variables:
IMAGE_NAME: "my-app"
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
# BUILD IMAGE WITH COMMIT SHA
- docker build . -t $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA
# RETAG IMAGE LATEST WITH DIGEST FROM PREVIOUS IMAGE
- IMAGE_ID=$(docker images | grep $CI_REGISTRY/$CI_PROJECT_PATH\/$IMAGE_NAME | awk '{print $3}')
- docker tag $IMAGE_ID $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:latest
# PUSH IMAGE COMMIT SHA and LATEST
- docker push $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA
- docker push $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:latest
8. Docker 레지스트리의 이미지
최신 이미지는 항상 최신 버전을 가리킵니다.
68713c41 Published 1 minute ago
41.58 MiB Digest: 2fd477a
latest Published 1 minute ago
41.58 MiB Digest: 2fd477a
Reference
이 문제에 관하여(GitLab CI/CD로 Docker 이미지 버전을 지정하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nelsoncode/how-to-version-docker-images-with-gitlab-cicd-3j3n텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)