name: release
on:
  push:
    tags:
    - "v*"
  workflow_dispatch:
    inputs:
      release_version:
        description: "Release version"
        required: true
        default: ""
      create_release:
        description: "Create release"
        required: true
        default: "true"

jobs:
  create-release:
    name: create-release
    runs-on: ubuntu-latest
    outputs:
      upload_url: ${{ steps.release.outputs.upload_url }}
      release_version: ${{ env.RELEASE_VERSION }}
    steps:
    - name: Get the release version from the tag (push)
      shell: bash
      if: env.RELEASE_VERSION == '' && github.event_name == 'push'
      run: |
        # See: https://github.community/t5/GitHub-Actions/How-to-get-just-the-tag-name/m-p/32167/highlight/true#M1027
        echo "RELEASE_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
        echo "version is: ${{ env.RELEASE_VERSION }}"
    - name: Get the release version from the tag (dispatch)
      shell: bash
      if: github.event_name == 'workflow_dispatch'
      run: |
        echo "RELEASE_VERSION=${{ github.event.inputs.release_version }}" >> $GITHUB_ENV
        echo "version is: ${{ env.RELEASE_VERSION }}"
    - name: Checkout repository
      uses: actions/checkout@v5
      with:
        fetch-depth: 1
    - name: Create GitHub release
      id: release
      if: github.event.inputs.create_release == 'true' || github.event_name == 'push'
      uses: actions/create-release@v1
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      with:
        tag_name: ${{ env.RELEASE_VERSION }}
        release_name: ${{ env.RELEASE_VERSION }}

Graph