release-tag.yml 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. name: Create Release Tag
  2. on:
  3. push:
  4. tags:
  5. - 'v*.*.*'
  6. workflow_dispatch:
  7. inputs:
  8. tag:
  9. description: 'Tag to create (e.g. v1.2.3)'
  10. required: true
  11. type: string
  12. permissions:
  13. contents: write
  14. jobs:
  15. release:
  16. name: Create Release
  17. if: github.repository == 'vbenjs/vue-vben-admin'
  18. runs-on: ubuntu-latest
  19. steps:
  20. - name: Checkout code
  21. uses: actions/checkout@v6
  22. with:
  23. fetch-depth: 0
  24. - name: Extract version
  25. id: version
  26. run: |
  27. if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
  28. raw_tag="${{ inputs.tag }}"
  29. else
  30. raw_tag="${GITHUB_REF_NAME}"
  31. fi
  32. # Normalize: ensure v prefix
  33. tag="${raw_tag}"
  34. [[ "${tag:0:1}" != "v" ]] && tag="v${tag}"
  35. version="${tag#v}"
  36. major="${version%%.*}"
  37. echo "tag=${tag}" >> "${GITHUB_OUTPUT}"
  38. echo "version=${version}" >> "${GITHUB_OUTPUT}"
  39. echo "major=${major}" >> "${GITHUB_OUTPUT}"
  40. - uses: release-drafter/release-drafter@v7
  41. with:
  42. version: ${{ steps.version.outputs.version }}
  43. publish: true
  44. env:
  45. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}