How to version Docker images with GitLab CI/CD

For this example we will use GitLab Container Registry and we will version the images by commit

Variables of GitLab

CI_REGISTRY_USER: User actually of GitLab
CI_REGISTRY_PASSWORD: Password actually of GitLab
CI_REGISTRY: “registry.gitlab.co…


This content originally appeared on DEV Community and was authored by Nelson Adonis Hernandez

For this example we will use GitLab Container Registry and we will version the images by commit

Variables of GitLab

CI_REGISTRY_USER: User actually of GitLab
CI_REGISTRY_PASSWORD: Password actually of GitLab
CI_REGISTRY: "registry.gitlab.com"
CI_PROJECT_PATH: "gitlab-example/my-project"
CI_COMMIT_SHORT_SHA: Recent commit ID

1.Docker Login (GitLab Container registry)

docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY

2.Build image with ID COMMIT SHA

docker build . -t $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA

3.Get ID from previous image

IMAGE_ID=$(docker images | grep $CI_REGISTRY/$CI_PROJECT_PATH\/$IMAGE_NAME | awk '{print $3}')

4.Retag image latest with digest from previous image

docker tag $IMAGE_ID $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:latest

5.Push image latest and commit sha

docker push $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA
docker push $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:latest

6.Pipeline

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.Images in Docker Registry

The latest image will always point to the latest version

68713c41   Published 1 minute ago
41.58 MiB  Digest: 2fd477a

latest     Published 1 minute ago
41.58 MiB  Digest: 2fd477a

Image description


This content originally appeared on DEV Community and was authored by Nelson Adonis Hernandez


Print Share Comment Cite Upload Translate Updates
APA

Nelson Adonis Hernandez | Sciencx (2022-02-11T16:29:43+00:00) How to version Docker images with GitLab CI/CD. Retrieved from https://www.scien.cx/2022/02/11/how-to-version-docker-images-with-gitlab-ci-cd/

MLA
" » How to version Docker images with GitLab CI/CD." Nelson Adonis Hernandez | Sciencx - Friday February 11, 2022, https://www.scien.cx/2022/02/11/how-to-version-docker-images-with-gitlab-ci-cd/
HARVARD
Nelson Adonis Hernandez | Sciencx Friday February 11, 2022 » How to version Docker images with GitLab CI/CD., viewed ,<https://www.scien.cx/2022/02/11/how-to-version-docker-images-with-gitlab-ci-cd/>
VANCOUVER
Nelson Adonis Hernandez | Sciencx - » How to version Docker images with GitLab CI/CD. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/02/11/how-to-version-docker-images-with-gitlab-ci-cd/
CHICAGO
" » How to version Docker images with GitLab CI/CD." Nelson Adonis Hernandez | Sciencx - Accessed . https://www.scien.cx/2022/02/11/how-to-version-docker-images-with-gitlab-ci-cd/
IEEE
" » How to version Docker images with GitLab CI/CD." Nelson Adonis Hernandez | Sciencx [Online]. Available: https://www.scien.cx/2022/02/11/how-to-version-docker-images-with-gitlab-ci-cd/. [Accessed: ]
rf:citation
» How to version Docker images with GitLab CI/CD | Nelson Adonis Hernandez | Sciencx | https://www.scien.cx/2022/02/11/how-to-version-docker-images-with-gitlab-ci-cd/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.