diff --git a/.github/workflows/docker-build-remote.yml b/.github/workflows/docker-build-remote.yml index f524263..aee0336 100644 --- a/.github/workflows/docker-build-remote.yml +++ b/.github/workflows/docker-build-remote.yml @@ -613,3 +613,81 @@ jobs: echo "========================================" echo "๐ŸŽ‰ ๆ‰€ๆœ‰ๆญฅ้ฉŸๅทฒๆˆๅŠŸๅฎŒๆˆ๏ผ" echo "========================================" + + # ======================================== + # Step 17: ็”Ÿๆˆ Changelog + # ่ชชๆ˜Ž๏ผšๅพž git log ็”Ÿๆˆ่ฎŠๆ›ด่จ˜้Œ„ + # ======================================== + - name: ๐Ÿ“ Generate Changelog + if: ${{ !contains(github.event.inputs.image_tag, 'test') && !contains(github.event.inputs.image_tag, 'dev') && !contains(github.event.inputs.image_tag, 'alpha') && !contains(github.event.inputs.image_tag, 'beta') }} + id: changelog + run: | + echo "========================================" + echo "๐Ÿ“ ็”Ÿๆˆ Changelog" + echo "========================================" + + # ๅ–ๅพ—ๅฎŒๆ•ด git history + git fetch --unshallow 2>/dev/null || git fetch --all + + # ๅ–ๅพ—ๅ‰ไธ€ๅ€‹ tag + PREVIOUS_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "") + + if [ -z "$PREVIOUS_TAG" ]; then + echo "๐Ÿ“‹ ็„กๅ‰ไธ€ๅ€‹ tag๏ผŒๅ–ๅพ—ๆ‰€ๆœ‰ commits..." + CHANGELOG=$(git log --pretty=format:"- %s (%h)" HEAD) + else + echo "๐Ÿ“‹ ๅ–ๅพ— ${PREVIOUS_TAG} ๅˆฐ HEAD ็š„ commits..." + CHANGELOG=$(git log --pretty=format:"- %s (%h)" ${PREVIOUS_TAG}..HEAD) + fi + + # ๅปบ็ซ‹ changelog ๆช”ๆกˆ + cat > changelog.txt << EOF + ## ๐Ÿ“ฆ Docker Image + + **Image:** \`${{ env.DOCKER_IMAGE_REPO }}:${{ github.event.inputs.image_tag }}\` + + ### ๐Ÿ—๏ธ ๆ”ฏๆด็š„ๆžถๆง‹ + - \`linux/amd64\` + - \`linux/arm64\` + + ### ๐Ÿ“ฅ ๆ‹‰ๅ–ๆ˜ ๅƒ + \`\`\`bash + # ๆ‹‰ๅ–ๆŒ‡ๅฎš็‰ˆๆœฌ + docker pull ${{ env.DOCKER_IMAGE_REPO }}:${{ github.event.inputs.image_tag }} + + # ๆ‹‰ๅ–ๆœ€ๆ–ฐ็‰ˆๆœฌ + docker pull ${{ env.DOCKER_IMAGE_REPO }}:latest + \`\`\` + + ### ๐Ÿ“‹ ่ฎŠๆ›ด่จ˜้Œ„ + ${CHANGELOG} + + ### ๐Ÿ”— ็›ธ้—œ้€ฃ็ต + - [Docker Hub](https://hub.docker.com/r/${{ env.DOCKER_IMAGE_REPO }}/tags) + - [ๅฎŒๆ•ดๆ–‡ไปถ](https://github.com/${{ github.repository }}/blob/main/README.md) + + --- + *ๆญค Release ็”ฑ GitHub Actions ่‡ชๅ‹•ๅ‰ตๅปบ* + EOF + + echo "" + echo "โœ… Changelog ๅทฒ็”Ÿๆˆ๏ผš" + cat changelog.txt + echo "========================================" + + # ======================================== + # Step 18: ๅ‰ตๅปบ GitHub Release + # ่ชชๆ˜Ž๏ผš็‚บๆญฃๅผ็‰ˆๆœฌ่‡ชๅ‹•ๅ‰ตๅปบ GitHub Release + # ======================================== + - name: ๐Ÿ“ฆ Create GitHub Release + if: ${{ !contains(github.event.inputs.image_tag, 'test') && !contains(github.event.inputs.image_tag, 'dev') && !contains(github.event.inputs.image_tag, 'alpha') && !contains(github.event.inputs.image_tag, 'beta') }} + uses: softprops/action-gh-release@v2 + with: + tag_name: v${{ github.event.inputs.image_tag }} + name: v${{ github.event.inputs.image_tag }} + body_path: changelog.txt + draft: false + prerelease: false + generate_release_notes: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}