name: Create Release on: push: tags: - 'v*' permissions: {} jobs: quality: permissions: contents: read uses: ./.github/workflows/ci.yml release: needs: quality runs-on: ubuntu-latest permissions: contents: write steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Resolve previous tag id: tags shell: bash run: | current="${GITHUB_REF_NAME}" previous="$(git tag --list 'v*' --sort=-version:refname | grep -v "^${current}$" | head -n 1 || true)" echo "current=${current}" >> "$GITHUB_OUTPUT" echo "previous=${previous}" >> "$GITHUB_OUTPUT" - name: Build release notes shell: bash run: | current="${{ steps.tags.outputs.current }}" previous="${{ steps.tags.outputs.previous }}" if [ -n "$previous" ]; then git log --pretty='- %s (%h)' "${previous}..${current}" > RELEASE_NOTES.md else git log --pretty='- %s (%h)' "${current}" > RELEASE_NOTES.md fi if [ ! -s RELEASE_NOTES.md ]; then echo "- Release ${current}" > RELEASE_NOTES.md fi - name: Create GitHub release uses: softprops/action-gh-release@v2 with: tag_name: ${{ steps.tags.outputs.current }} name: Release ${{ steps.tags.outputs.current }} body_path: RELEASE_NOTES.md draft: false prerelease: ${{ contains(steps.tags.outputs.current, '-alpha') || contains(steps.tags.outputs.current, '-beta') || contains(steps.tags.outputs.current, '-rc') }}