Updated version to 0.11.2 #54
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build and Push Docker Image to GHCR | |
| on: | |
| push: | |
| tags: | |
| - 'v*.*.*' | |
| workflow_dispatch: | |
| env: | |
| REGISTRY: ghcr.io | |
| IMAGE_NAME: ${{ github.repository }} | |
| jobs: | |
| build-and-push: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| packages: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 # Fetch all history for release notes | |
| - name: Set up QEMU for multi-architecture builds | |
| uses: docker/setup-qemu-action@v3 | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Log in to GitHub Container Registry | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ${{ env.REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Extract metadata (tags, labels) | |
| id: meta | |
| uses: docker/metadata-action@v5 | |
| with: | |
| images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
| tags: | | |
| type=semver,pattern={{version}} | |
| type=semver,pattern={{major}}.{{minor}} | |
| type=semver,pattern={{major}} | |
| type=raw,value=latest,enable=true | |
| - name: Build and push Docker image | |
| id: build-push | |
| uses: docker/build-push-action@v5 | |
| with: | |
| context: . | |
| platforms: linux/amd64,linux/arm64 | |
| push: true | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| cache-from: type=gha | |
| cache-to: type=gha,mode=max | |
| provenance: false | |
| sbom: false | |
| - name: Image digest | |
| run: echo "Image pushed with digest ${{ steps.build-push.outputs.digest }}" | |
| - name: Generate release notes | |
| id: release_notes | |
| run: | | |
| # Get the previous tag | |
| PREVIOUS_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "") | |
| # Generate commit log - extract PR descriptions from merge commits | |
| if [ -z "$PREVIOUS_TAG" ]; then | |
| # First release, get only merge commits (PR merges) | |
| RAW_COMMITS=$(git log --merges --pretty=format:"%s|||%b|||%h" --first-parent) | |
| else | |
| # Get merge commits since last tag | |
| RAW_COMMITS=$(git log ${PREVIOUS_TAG}..HEAD --merges --pretty=format:"%s|||%b|||%h" --first-parent) | |
| fi | |
| # Process commits to extract meaningful messages | |
| COMMITS="" | |
| while IFS= read -r line; do | |
| if [ -n "$line" ]; then | |
| SUBJECT=$(echo "$line" | cut -d'|' -f1) | |
| BODY=$(echo "$line" | cut -d'|' -f4 | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') | |
| HASH=$(echo "$line" | cut -d'|' -f7) | |
| # If body exists and is not empty, use it; otherwise use subject | |
| if [ -n "$BODY" ] && [ "$BODY" != "" ]; then | |
| # Capitalize first letter of body | |
| MESSAGE=$(echo "$BODY" | sed 's/^./\U&/') | |
| COMMITS="${COMMITS}- ${MESSAGE} (${HASH})"$'\n' | |
| else | |
| COMMITS="${COMMITS}- ${SUBJECT} (${HASH})"$'\n' | |
| fi | |
| fi | |
| done <<< "$RAW_COMMITS" | |
| # Create release notes | |
| echo "## What's Changed" > release_notes.md | |
| echo "" >> release_notes.md | |
| if [ -z "$COMMITS" ]; then | |
| echo "- Minor updates and improvements" >> release_notes.md | |
| else | |
| echo "$COMMITS" >> release_notes.md | |
| fi | |
| echo "" >> release_notes.md | |
| echo "## Docker Images" >> release_notes.md | |
| echo "" >> release_notes.md | |
| echo "This release is available as a Docker image:" >> release_notes.md | |
| echo '```bash' >> release_notes.md | |
| echo "docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${GITHUB_REF_NAME#v}" >> release_notes.md | |
| echo '```' >> release_notes.md | |
| echo "" >> release_notes.md | |
| if [ -z "$PREVIOUS_TAG" ]; then | |
| echo "**Full Changelog**: https://github.com/${{ github.repository }}/commits/${GITHUB_REF_NAME}" >> release_notes.md | |
| else | |
| echo "**Full Changelog**: https://github.com/${{ github.repository }}/compare/${PREVIOUS_TAG}...${GITHUB_REF_NAME}" >> release_notes.md | |
| fi | |
| cat release_notes.md | |
| - name: Create GitHub Release | |
| uses: softprops/action-gh-release@v1 | |
| with: | |
| body_path: release_notes.md | |
| draft: false | |
| prerelease: false | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| # Restart HF Space after successful build | |
| restart-hf-space: | |
| needs: build-and-push | |
| if: success() | |
| uses: ./.github/workflows/hf-space-restart.yml | |
| secrets: inherit |