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
This content originally appeared on DEV Community and was authored by Nelson Adonis Hernandez
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/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.