@@ -3,22 +3,23 @@ name: Docker Multi-Arch Release
33on :
44 push :
55 tags :
6- - ' *'
6+ - ' *' # 自动触发:任何 tag 推送都会触发
77 workflow_dispatch :
88 inputs :
99 image_tag :
10- description : ' Docker image tag (e.g., v1.2.3)'
10+ description : ' Image tag to use (e.g., v1.2.3)'
1111 required : true
1212 default : ' manual-latest'
13-
14- permissions :
15- contents : read
16- packages : write
13+ push_latest :
14+ description : ' Also tag and push as latest? '
15+ required : false
16+ default : ' true '
1717
1818jobs :
1919 docker :
20- name : Build and Push Docker Images
20+ name : Build & Push Docker Images
2121 runs-on : ubuntu-latest
22+
2223 steps :
2324 - name : Checkout source
2425 uses : actions/checkout@v3
2930 - name : Set up Docker Buildx
3031 uses : docker/setup-buildx-action@v2
3132
32- - name : Login to DockerHub
33+ - name : Login to Docker Hub
3334 uses : docker/login-action@v2
3435 with :
3536 username : ${{ secrets.DOCKERHUB_USERNAME }}
@@ -49,25 +50,35 @@ jobs:
4950 username : ${{ secrets.ALI_USERNAME }}
5051 password : ${{ secrets.ALI_PASSWORD }}
5152
52- - name : Normalize image tag
53+ - name : Resolve tag
54+ id : tag
5355 run : |
5456 if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
5557 echo "TAG=${{ github.event.inputs.image_tag }}" >> $GITHUB_ENV
58+ echo "PUSH_LATEST=${{ github.event.inputs.push_latest }}" >> $GITHUB_ENV
5659 else
57- REF= ${GITHUB_REF##*/}
58- SAFE_TAG=$( echo "$REF" | sed 's#[^a-zA-Z0-9_.-]#-#g')
59- echo "TAG=$SAFE_TAG " >> $GITHUB_ENV
60+ TAG_NAME=" ${GITHUB_REF##*/}"
61+ echo "TAG=${TAG_NAME}" >> $GITHUB_ENV
62+ echo "PUSH_LATEST=true " >> $GITHUB_ENV
6063 fi
6164
62- - name : Build and push multi-platform image
65+ - name : Show resolved tags
66+ run : |
67+ echo "Resolved image tag: $TAG"
68+ echo "Push latest: $PUSH_LATEST"
69+
70+ - name : Build and push Docker images
6371 uses : docker/build-push-action@v5
6472 with :
6573 context : .
6674 push : true
6775 platforms : linux/amd64,linux/arm64
6876 tags : |
69- ${{ secrets.DOCKERHUB_USERNAME }}/stickerdownloader:${{ env.TAG }}
77+ docker.io/ ${{ secrets.DOCKERHUB_USERNAME }}/stickerdownloader:${{ env.TAG }}
7078 ghcr.io/${{ github.repository_owner }}/stickerdownloader:${{ env.TAG }}
7179 ${{ secrets.ALI_REGISTRY }}/${{ secrets.ALI_USERNAME }}/stickerdownloader:${{ env.TAG }}
80+ ${{ env.PUSH_LATEST == 'true' && format('docker.io/{0}/stickerdownloader:latest', secrets.DOCKERHUB_USERNAME) || '' }}
81+ ${{ env.PUSH_LATEST == 'true' && format('ghcr.io/{0}/stickerdownloader:latest', github.repository_owner) || '' }}
82+ ${{ env.PUSH_LATEST == 'true' && format('{0}/{1}/stickerdownloader:latest', secrets.ALI_REGISTRY, secrets.ALI_USERNAME) || '' }}
7283 cache-from : type=gha
73- cache-to : type=gha,mode=max
84+ cache-to : type=gha,mode=max
0 commit comments