name: Build and Release on Tag on: workflow_dispatch: inputs: branch: description: 'Branch to build the Docker image from' required: true default: 'main' jobs: build-and-publish: runs-on: ubuntu-latest steps: # Checkout repository - name: Checkout repository uses: actions/checkout@v3 - name: Extract Version id: extract_version run: | version=$(python3 -c "import version; print(version.__version__)") echo "VERSION=$version" >> $GITHUB_ENV # Set up Docker - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 # Log in to GHCR - name: Log in to GHCR uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} # Build and push Docker image to GHCR with version tag - name: Build and Push Docker Image uses: docker/build-push-action@v4 with: context: . platforms: linux/amd64,linux/arm64 push: true tags: | ghcr.io/${{ github.repository }}:${{ env.VERSION }} ghcr.io/${{ github.repository }}:latest # Read changelog for the current version - name: Read Changelog id: changelog run: | if [ -f changelogs/${{ env.VERSION }}.md ]; then changelog_content=$(cat changelogs/${{ env.VERSION }}.md) echo "CHANGELOG_CONTENT<> $GITHUB_ENV echo "$changelog_content" >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV else echo "CHANGELOG_CONTENT=No changelog available for this release." >> $GITHUB_ENV fi # # Generate auto-generated release notes # - name: Generate Auto Release Notes # id: release_notes # run: | # auto_notes=$(gh release create ${{ env.VERSION }} --generate-notes --prerelease --json body --jq .body) # echo "AUTO_RELEASE_NOTES<> $GITHUB_ENV # echo "$auto_notes" >> $GITHUB_ENV # echo "EOF" >> $GITHUB_ENV # Create a release on GitHub - name: Create GitHub Release uses: softprops/action-gh-release@v2 with: tag_name: ${{ env.VERSION }} name: Release ${{ env.VERSION }} body: | ${{ env.CHANGELOG_CONTENT }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}