@@ -2,13 +2,13 @@ name: Build and Push Docker Images
22
33on :
44 push :
5- branches :
6- - main
5+ # branches:
6+ # - main
77 tags :
88 - " v*"
9- pull_request :
10- branches :
11- - main
9+ # pull_request:
10+ # branches:
11+ # - main
1212
1313env :
1414 DOCKERHUB_USERNAME : charmy1220
@@ -43,35 +43,27 @@ jobs:
4343 uses : docker/setup-buildx-action@v3
4444
4545 - name : Log in to Docker Hub
46- if : github.event_name != 'pull_request'
4746 uses : docker/login-action@v3
4847 with :
4948 registry : ${{ env.REGISTRY }}
5049 username : ${{ env.DOCKERHUB_USERNAME }}
5150 password : ${{ env.DOCKERHUB_TOKEN }}
5251
53- - name : Extract metadata
54- id : meta
55- uses : docker/metadata-action@v5
56- with :
57- images : ${{ env.REGISTRY }}/${{ env.DOCKERHUB_USERNAME }}/${{ matrix.service.image }}
58- tags : |
59- type=ref,event=branch
60- type=ref,event=pr
61- type=semver,pattern={{version}}
62- type=semver,pattern={{major}}.{{minor}}
63- type=semver,pattern={{major}}
64- type=raw,value=latest,enable={{is_default_branch}}
52+ - name : Extract tag name
53+ id : extract_tag
54+ run : |
55+ TAG_NAME=${GITHUB_REF#refs/tags/}
56+ echo "tag_name=$TAG_NAME" >> $GITHUB_OUTPUT
57+ echo "Extracted tag: $TAG_NAME"
6558
6659 - name : Build and push Docker image
6760 uses : docker/build-push-action@v5
6861 timeout-minutes : 30
6962 with :
7063 context : ${{ matrix.service.context }}
7164 file : ${{ matrix.service.dockerfile }}
72- push : ${{ github.event_name != 'pull_request' }}
73- tags : ${{ steps.meta.outputs.tags }}
74- labels : ${{ steps.meta.outputs.labels }}
65+ push : true
66+ tags : ${{ env.REGISTRY }}/${{ env.DOCKERHUB_USERNAME }}/${{ matrix.service.image }}:${{ steps.extract_tag.outputs.tag_name }}
7567 cache-from : type=gha
7668 cache-to : type=gha,mode=max
7769 platforms : linux/amd64
@@ -82,49 +74,50 @@ jobs:
8274 needs : build-and-push
8375 runs-on : ubuntu-latest
8476 if : startsWith(github.ref, 'refs/tags/v')
77+ permissions :
78+ contents : write
79+ discussions : write
8580
8681 steps :
8782 - name : Checkout code
8883 uses : actions/checkout@v4
8984 with :
9085 fetch-depth : 0
9186
87+ - name : Extract tag name
88+ id : extract_tag
89+ run : |
90+ TAG_NAME=${GITHUB_REF#refs/tags/}
91+ echo "tag_name=$TAG_NAME" >> $GITHUB_OUTPUT
92+ echo "Current tag: $TAG_NAME"
93+
9294 - name : Generate changelog
9395 id : changelog
9496 run : |
95- # get current tag and previous tag
96- CURRENT_TAG=${GITHUB_REF#refs/tags/}
97+ CURRENT_TAG=${{ steps.extract_tag.outputs.tag_name }}
9798 PREVIOUS_TAG=$(git describe --tags --abbrev=0 HEAD~1 2>/dev/null || echo "")
9899
99- echo "current_tag=$CURRENT_TAG" >> $GITHUB_OUTPUT
100+ echo "## 🚀 Release $CURRENT_TAG" > CHANGELOG.md
101+ echo "" >> CHANGELOG.md
102+ echo "### 📦 Docker Images" >> CHANGELOG.md
103+ echo "- \`${{ env.DOCKERHUB_USERNAME }}/lmeterx-be:$CURRENT_TAG\`" >> CHANGELOG.md
104+ echo "- \`${{ env.DOCKERHUB_USERNAME }}/lmeterx-eng:$CURRENT_TAG\`" >> CHANGELOG.md
105+ echo "- \`${{ env.DOCKERHUB_USERNAME }}/lmeterx-fe:$CURRENT_TAG\`" >> CHANGELOG.md
106+ echo "" >> CHANGELOG.md
100107
101- # generate changelog
102108 if [ -n "$PREVIOUS_TAG" ]; then
103- echo "## 🚀 Changes in $CURRENT_TAG" > CHANGELOG.md
104- echo "" >> CHANGELOG.md
105- echo "### 📦 Docker Images" >> CHANGELOG.md
106- echo "- \`${{ env.DOCKERHUB_USERNAME }}/lmeterx-be:$CURRENT_TAG\`" >> CHANGELOG.md
107- echo "- \`${{ env.DOCKERHUB_USERNAME }}/lmeterx-eng:$CURRENT_TAG\`" >> CHANGELOG.md
108- echo "- \`${{ env.DOCKERHUB_USERNAME }}/lmeterx-fe:$CURRENT_TAG\`" >> CHANGELOG.md
109- echo "" >> CHANGELOG.md
110- echo "### 📝 Commits" >> CHANGELOG.md
109+ echo "### 📝 Changes since $PREVIOUS_TAG" >> CHANGELOG.md
111110 git log --pretty=format:"- %s (%h)" $PREVIOUS_TAG..$CURRENT_TAG >> CHANGELOG.md
112111 else
113- echo "## 🚀 Release $CURRENT_TAG" > CHANGELOG.md
114- echo "" >> CHANGELOG.md
115- echo "### 📦 Docker Images" >> CHANGELOG.md
116- echo "- \`${{ env.DOCKERHUB_USERNAME }}/lmeterx-be:$CURRENT_TAG\`" >> CHANGELOG.md
117- echo "- \`${{ env.DOCKERHUB_USERNAME }}/lmeterx-eng:$CURRENT_TAG\`" >> CHANGELOG.md
118- echo "- \`${{ env.DOCKERHUB_USERNAME }}/lmeterx-fe:$CURRENT_TAG\`" >> CHANGELOG.md
119- echo "" >> CHANGELOG.md
120- echo "Initial release" >> CHANGELOG.md
112+ echo "### 📝 Initial Release" >> CHANGELOG.md
113+ echo "This is the initial release of LMeterX." >> CHANGELOG.md
121114 fi
122115
123116 - name : Create GitHub Release
124117 uses : softprops/action-gh-release@v1
125118 with :
126- tag_name : ${{ steps.changelog .outputs.current_tag }}
127- name : Release ${{ steps.changelog .outputs.current_tag }}
119+ tag_name : ${{ steps.extract_tag .outputs.tag_name }}
120+ name : Release ${{ steps.extract_tag .outputs.tag_name }}
128121 body_path : CHANGELOG.md
129122 draft : false
130123 prerelease : false
@@ -134,7 +127,7 @@ jobs:
134127
135128 - name : Update docker-compose.yml
136129 run : |
137- CURRENT_TAG=${GITHUB_REF#refs/tags/ }
130+ CURRENT_TAG=${{ steps.extract_tag.outputs.tag_name } }
138131
139132 # update docker-compose.yml with new image tags
140133 sed -i "s|${{ env.DOCKERHUB_USERNAME }}/lmeterx-be:.*|${{ env.DOCKERHUB_USERNAME }}/lmeterx-be:$CURRENT_TAG|g" docker-compose.yml
@@ -146,7 +139,7 @@ jobs:
146139 git config --local user.email "[email protected] " 147140 git config --local user.name "GitHub Action"
148141 git add docker-compose.yml
149- git diff --staged --quiet || git commit -m "Update docker-compose.yml to use ${{ steps.changelog .outputs.current_tag }} images"
142+ git diff --staged --quiet || git commit -m "Update docker-compose.yml to use ${{ steps.extract_tag .outputs.tag_name }} images"
150143 git push origin HEAD:main
151144 env :
152145 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments