feat(ci): add timestamp-based image tags with commit hash

Push images with versioned tags in format TIMESTAMP-COMMIT and
frontend-TIMESTAMP-COMMIT for better traceability and rollback support.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-03-15 02:35:33 -04:00
parent 28e2ded501
commit 03105a2f87
+12 -4
View File
@@ -4,7 +4,6 @@ stages:
variables: variables:
DOCKER_DRIVER: overlay2 DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: "/certs" DOCKER_TLS_CERTDIR: "/certs"
IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
LATEST_TAG: $CI_REGISTRY_IMAGE:latest LATEST_TAG: $CI_REGISTRY_IMAGE:latest
build-and-push: build-and-push:
@@ -15,14 +14,23 @@ build-and-push:
before_script: before_script:
- echo "Logging into GitLab Container Registry..." - echo "Logging into GitLab Container Registry..."
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
# Generate timestamp and short commit hash for tags
- export TIMESTAMP=$(date -u +%Y%m%d%H%M%S)
- export SHORT_COMMIT=$(echo $CI_COMMIT_SHA | cut -c1-7)
- export VERSIONED_TAG=$CI_REGISTRY_IMAGE:${TIMESTAMP}-${SHORT_COMMIT}
- export FRONTEND_TAG=$CI_REGISTRY_IMAGE:frontend-${TIMESTAMP}-${SHORT_COMMIT}
script: script:
- echo "Building Docker image..." - echo "Building Docker image..."
- docker build -t $IMAGE_TAG -t $LATEST_TAG . - docker build -t $VERSIONED_TAG -t $FRONTEND_TAG -t $LATEST_TAG .
- echo "Pushing Docker image to registry..." - echo "Pushing Docker image to registry..."
- docker push $IMAGE_TAG - docker push $VERSIONED_TAG
- docker push $FRONTEND_TAG
- docker push $LATEST_TAG - docker push $LATEST_TAG
- echo "Build and push completed successfully!" - echo "Build and push completed successfully!"
- echo "Image available at $IMAGE_TAG" - echo "Images available at:"
- echo " $VERSIONED_TAG"
- echo " $FRONTEND_TAG"
- echo " $LATEST_TAG"
rules: rules:
- if: $CI_COMMIT_BRANCH == "main" - if: $CI_COMMIT_BRANCH == "main"
when: always when: always