1
0

plugin-release.yml 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. name: Plugin Release
  2. on:
  3. workflow_dispatch:
  4. inputs:
  5. version:
  6. description: 'Plugin version to release, for example 6.2.0'
  7. required: true
  8. type: string
  9. permissions:
  10. contents: write
  11. jobs:
  12. release:
  13. runs-on: ubuntu-latest
  14. env:
  15. RELEASE_VERSION: ${{ inputs.version }}
  16. steps:
  17. - name: Checkout
  18. uses: actions/checkout@v4
  19. with:
  20. fetch-depth: 0
  21. - name: Setup Python
  22. uses: actions/setup-python@v5
  23. with:
  24. python-version: '3.11'
  25. - name: Validate release metadata
  26. run: |
  27. python webnovel-writer/scripts/sync_plugin_version.py \
  28. --check \
  29. --expected-version "$RELEASE_VERSION"
  30. - name: Validate release notes
  31. run: |
  32. python webnovel-writer/scripts/validate_release_notes.py \
  33. --version "$RELEASE_VERSION"
  34. - name: Validate plugin package
  35. run: python webnovel-writer/scripts/validate_plugin_package.py
  36. - name: Create and push tag
  37. run: |
  38. if git rev-parse "v$RELEASE_VERSION" >/dev/null 2>&1; then
  39. echo "Tag v$RELEASE_VERSION already exists"
  40. exit 1
  41. fi
  42. echo "Releasing commit $(git rev-parse HEAD) as v$RELEASE_VERSION"
  43. git tag "v$RELEASE_VERSION"
  44. git push origin "v$RELEASE_VERSION"
  45. - name: Create GitHub Release
  46. uses: softprops/action-gh-release@v2
  47. with:
  48. tag_name: v${{ inputs.version }}
  49. name: v${{ inputs.version }}
  50. body_path: releases/v${{ inputs.version }}.md