1+ name : Build and Push Docker Image
2+
3+ on :
4+ release :
5+ types : [published]
6+ push :
7+ tags :
8+ - ' v*'
9+
10+ env :
11+ REGISTRY : ghcr.io
12+ IMAGE_NAME : ${{ github.repository }}
13+
14+ jobs :
15+ build-and-push :
16+ runs-on : ubuntu-latest
17+ permissions :
18+ contents : read
19+ packages : write
20+
21+ steps :
22+ - name : Checkout repository
23+ uses : actions/checkout@v5
24+
25+ - name : Set up Docker Buildx
26+ uses : docker/setup-buildx-action@v3
27+
28+ - name : Log in to GitHub Container Registry
29+ uses : docker/login-action@v3
30+ with :
31+ registry : ${{ env.REGISTRY }}
32+ username : ${{ github.actor }}
33+ password : ${{ secrets.GITHUB_TOKEN }}
34+
35+ - name : Extract metadata
36+ id : meta
37+ uses : docker/metadata-action@v5
38+ with :
39+ images : ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
40+ tags : |
41+ type=ref,event=tag
42+ type=semver,pattern={{version}}
43+ type=semver,pattern={{major}}.{{minor}}
44+ type=semver,pattern={{major}}
45+ type=raw,value=latest,enable={{is_default_branch}}
46+ type=sha,prefix={{branch}}-
47+
48+ - name : Build and push Docker image
49+ uses : docker/build-push-action@v6
50+ with :
51+ context : .
52+ platforms : linux/amd64,linux/arm64
53+ push : true
54+ tags : ${{ steps.meta.outputs.tags }}
55+ labels : ${{ steps.meta.outputs.labels }}
56+ cache-from : type=gha
57+ cache-to : type=gha,mode=max
58+
59+ - name : Generate build summary
60+ run : |
61+ echo "## Docker Image Build Summary" >> $GITHUB_STEP_SUMMARY
62+ echo "" >> $GITHUB_STEP_SUMMARY
63+ echo "**Image:** \`${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}\`" >> $GITHUB_STEP_SUMMARY
64+ echo "" >> $GITHUB_STEP_SUMMARY
65+ echo "**Tags:**" >> $GITHUB_STEP_SUMMARY
66+ echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
67+ echo "${{ steps.meta.outputs.tags }}" >> $GITHUB_STEP_SUMMARY
68+ echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
69+ echo "" >> $GITHUB_STEP_SUMMARY
70+ echo "**Platforms:** linux/amd64, linux/arm64" >> $GITHUB_STEP_SUMMARY
0 commit comments