feat: tag docker images with extra labels (!85)

Add a new build step to tag docker images with extra labels:
- `:latest`
- `:<major>`
- `:<major>.<minor>`

This job is only triggered on main release tags.

https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/-/merge_requests/85
This commit is contained in:
Hector 2023-06-20 07:20:11 +00:00
parent f29e127f5f
commit 812f506432
2 changed files with 30 additions and 4 deletions

View File

@ -46,13 +46,25 @@ release:
GIT_DEPTH: 0 GIT_DEPTH: 0
rules: rules:
- if: $CI_COMMIT_TAG =~ /^v.*$/ - if: $CI_COMMIT_TAG =~ /^v.*$/
script: | script:
# GITLAB_TOKEN is needed to create GitLab releases. - docker run --rm --privileged \
# DOCKER_* are needed to push Docker images.
docker run --rm --privileged \
-v $PWD:/go/src/gitlab.com/hectorjsmith/fail2ban-prometheus-exporter \ -v $PWD:/go/src/gitlab.com/hectorjsmith/fail2ban-prometheus-exporter \
-w /go/src/gitlab.com/hectorjsmith/fail2ban-prometheus-exporter \ -w /go/src/gitlab.com/hectorjsmith/fail2ban-prometheus-exporter \
-v /var/run/docker.sock:/var/run/docker.sock \ -v /var/run/docker.sock:/var/run/docker.sock \
-e DOCKER_USERNAME -e DOCKER_PASSWORD -e DOCKER_REGISTRY \ -e DOCKER_USERNAME -e DOCKER_PASSWORD -e DOCKER_REGISTRY \
-e GITLAB_TOKEN \ -e GITLAB_TOKEN \
goreleaser/goreleaser release --clean goreleaser/goreleaser release --clean
tag images:
stage: release
image: docker:stable
services:
- docker:dind
needs:
- release
rules:
- if: $CI_COMMIT_TAG =~ /^v\d+\.\d+\.\d+$/
variables:
IMAGE_NAME: registry.gitlab.com/hectorjsmith/fail2ban-prometheus-exporter
script:
- ./.gitlab-ci/tagLatestImage.sh

14
.gitlab-ci/tagLatestImage.sh Executable file
View File

@ -0,0 +1,14 @@
#!/bin/sh
VERSION=`echo $CI_COMMIT_TAG | cut -c 2-`
MAJOR=`echo $VERSION | cut -d "." -f 1`
MINOR=`echo $VERSION | cut -d "." -f 2`
echo "version: $VERSION (major: $MAJOR; minor: $MINOR)"
docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
docker pull $IMAGE_NAME:$VERSION
docker tag $IMAGE_NAME:$VERSION $IMAGE_NAME:latest
docker tag $IMAGE_NAME:$VERSION $IMAGE_NAME:$MAJOR
docker tag $IMAGE_NAME:$VERSION $IMAGE_NAME:$MAJOR.$MINOR
docker push $IMAGE_NAME