Skip to content

Commit 4dec804

Browse files
committed
docker action, tag and latest
1 parent de33ed4 commit 4dec804

1 file changed

Lines changed: 51 additions & 18 deletions

File tree

‎.github/workflows/docker-image.yml‎

Lines changed: 51 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ on:
55
types:
66
- published
77
workflow_dispatch:
8+
inputs:
9+
use_latest_tag:
10+
description: 'Tag as latest (only applies when running from a tag)'
11+
required: false
12+
type: boolean
13+
default: false
814

915
env:
1016
REGISTRY: ghcr.io
@@ -44,26 +50,54 @@ jobs:
4450
if [ "${{ github.event_name }}" == "release" ]; then
4551
RELEASE_VERSION="${{ github.event.release.tag_name }}"
4652
echo "VERSION=${RELEASE_VERSION}" >> $GITHUB_ENV
53+
echo "IS_TAG=true" >> $GITHUB_ENV
4754
elif [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
48-
BRANCH_NAME="${{ github.ref_name }}"
49-
echo "VERSION=${BRANCH_NAME}" >> $GITHUB_ENV
55+
REF_NAME="${{ github.ref_name }}"
56+
echo "VERSION=${REF_NAME}" >> $GITHUB_ENV
57+
58+
# Check if we're running from a tag (version tag pattern)
59+
if [[ "${REF_NAME}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+.*$ ]]; then
60+
echo "IS_TAG=true" >> $GITHUB_ENV
61+
echo "📋 Running from tag: ${REF_NAME}"
62+
else
63+
echo "IS_TAG=false" >> $GITHUB_ENV
64+
echo "📋 Running from branch: ${REF_NAME}"
65+
fi
5066
fi
5167
5268
- name: Generate Docker tags
5369
run: |
5470
BASE_TAG="${{ env.REGISTRY }}/${{ env.LOWER_CASE_REPO_NAME }}:${{ env.VERSION }}"
5571
72+
# Determine if we should add latest tag
73+
ADD_LATEST=false
74+
5675
if [ "${{ github.event_name }}" == "release" ]; then
57-
# For releases: add both version tag and latest
76+
# Always add latest for published releases
77+
ADD_LATEST=true
78+
TRIGGER_INFO="published release"
79+
elif [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
80+
if [ "${{ env.IS_TAG }}" == "true" ] && [ "${{ github.event.inputs.use_latest_tag }}" == "true" ]; then
81+
# Add latest for manual dispatch from tag when requested
82+
ADD_LATEST=true
83+
TRIGGER_INFO="manual dispatch from tag (with latest)"
84+
elif [ "${{ env.IS_TAG }}" == "true" ]; then
85+
TRIGGER_INFO="manual dispatch from tag (no latest)"
86+
else
87+
TRIGGER_INFO="manual dispatch from branch (no latest)"
88+
fi
89+
fi
90+
91+
if [ "$ADD_LATEST" == "true" ]; then
5892
TAGS="${BASE_TAG},${{ env.REGISTRY }}/${{ env.LOWER_CASE_REPO_NAME }}:latest"
59-
echo "DOCKER_TAGS=${TAGS}" >> $GITHUB_ENV
60-
echo "TAGGING_MODE=release (with latest)" >> $GITHUB_ENV
93+
echo "WILL_TAG_LATEST=true" >> $GITHUB_ENV
6194
else
62-
# For manual dispatch: only version tag (branch name)
6395
TAGS="${BASE_TAG}"
64-
echo "DOCKER_TAGS=${TAGS}" >> $GITHUB_ENV
65-
echo "TAGGING_MODE=manual dispatch (no latest)" >> $GITHUB_ENV
96+
echo "WILL_TAG_LATEST=false" >> $GITHUB_ENV
6697
fi
98+
99+
echo "DOCKER_TAGS=${TAGS}" >> $GITHUB_ENV
100+
echo "TRIGGER_INFO=${TRIGGER_INFO}" >> $GITHUB_ENV
67101
68102
- name: Extract metadata (tags, labels) for Docker
69103
id: meta
@@ -73,7 +107,7 @@ jobs:
73107
tags: |
74108
type=ref,event=branch
75109
type=ref,event=tag
76-
type=raw,value=latest,enable=${{ github.event_name == 'release' }}
110+
type=raw,value=latest,enable=${{ env.WILL_TAG_LATEST == 'true' }}
77111
78112
- name: Build and push Docker image
79113
uses: docker/build-push-action@v5
@@ -90,14 +124,13 @@ jobs:
90124
run: |
91125
echo "✅ Docker images built and pushed successfully!"
92126
echo "🐋 Images built:"
93-
if [ "${{ github.event_name }}" == "release" ]; then
94-
echo " - ${{ env.REGISTRY }}/${{ env.LOWER_CASE_REPO_NAME }}:${{ env.VERSION }}"
127+
echo " - ${{ env.REGISTRY }}/${{ env.LOWER_CASE_REPO_NAME }}:${{ env.VERSION }}"
128+
129+
if [ "${{ env.WILL_TAG_LATEST }}" == "true" ]; then
95130
echo " - ${{ env.REGISTRY }}/${{ env.LOWER_CASE_REPO_NAME }}:latest"
96-
echo "📝 Triggered by release: ${{ github.event.release.tag_name }}"
97-
echo "🏷️ Tagged as 'latest' because this is a published release"
98-
else
99-
echo " - ${{ env.REGISTRY }}/${{ env.LOWER_CASE_REPO_NAME }}:${{ env.VERSION }}"
100-
echo "📝 Triggered by manual workflow dispatch on branch: ${{ github.ref_name }}"
101-
echo "🏷️ No 'latest' tag for manual builds"
102131
fi
103-
echo "🔧 Tagging mode: ${{ env.TAGGING_MODE }}"
132+
133+
echo "📝 Trigger: ${{ env.TRIGGER_INFO }}"
134+
echo "🏷️ Version: ${{ env.VERSION }}"
135+
echo "🏷️ Is tag: ${{ env.IS_TAG }}"
136+
echo "🏷️ Tagged as latest: ${{ env.WILL_TAG_LATEST }}"

0 commit comments

Comments
 (0)