From 5c4a2a8ffc6905d006440d13c7e958716836a7bd Mon Sep 17 00:00:00 2001 From: WorldTeacher Date: Wed, 19 Nov 2025 19:24:55 +0100 Subject: [PATCH] feat: update release workflow to auto create release based on PR --- .gitea/workflows/release.yml | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 33daaf6..2ee3262 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -18,12 +18,39 @@ on: - "major" - "minor" - "patch" + pull_request: + types: [closed] + branches: + - main jobs: build: runs-on: ubuntu-latest + # Only run on merged PRs with [release-*] or manual workflow_dispatch + if: | + github.event_name == 'workflow_dispatch' || + (github.event_name == 'pull_request' && github.event.pull_request.merged == true && contains(github.event.pull_request.title, '[release-')) steps: + - name: Determine bump type + id: bump_type + run: | + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + echo "type=${{ github.event.inputs.bump }}" >> $GITHUB_OUTPUT + else + # Extract bump type from PR title: [release-patch], [release-minor], [release-major] + PR_TITLE="${{ github.event.pull_request.title }}" + if [[ "$PR_TITLE" =~ \[release-major\] ]]; then + echo "type=major" >> $GITHUB_OUTPUT + elif [[ "$PR_TITLE" =~ \[release-minor\] ]]; then + echo "type=minor" >> $GITHUB_OUTPUT + elif [[ "$PR_TITLE" =~ \[release-patch\] ]]; then + echo "type=patch" >> $GITHUB_OUTPUT + else + echo "type=patch" >> $GITHUB_OUTPUT + fi + fi + - name: Checkout code uses: actions/checkout@v4.2.2 with: @@ -52,7 +79,7 @@ jobs: id: bump run: | uv tool install bump-my-version - uv tool run bump-my-version bump ${{ github.event.inputs.bump }} + uv tool run bump-my-version bump ${{ steps.bump_type.outputs.type }} # echo the version to github env, the version is shown by using uv tool run bump-my-version show current_version echo "VERSION<> $GITHUB_ENV echo "$(uv tool run bump-my-version show current_version)" >> $GITHUB_ENV @@ -82,7 +109,7 @@ jobs: echo "IMAGE_REPO=${{ secrets.REGISTRY }}/$(echo '${{ github.repository }}' | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV - name: Docker meta - if: ${{ github.event.inputs.docker_release == 'true' }} + if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.docker_release == 'true' || github.event_name == 'pull_request' }} id: meta uses: docker/metadata-action@v5 with: @@ -92,7 +119,7 @@ jobs: type=raw,value=${{ env.VERSION }} - name: Build and push Docker image - if: ${{ github.event.inputs.docker_release == 'true' }} + if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.docker_release == 'true' || github.event_name == 'pull_request' }} uses: docker/build-push-action@v6 with: context: . @@ -118,7 +145,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITEA_TOKEN }} - name: Create Gitea Release - if: ${{ github.event.inputs.github_release == 'true' }} + if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.github_release == 'true' || github.event_name == 'pull_request' }} uses: softprops/action-gh-release@v1 with: tag_name: v${{ env.VERSION }}