name: Release on: push: tags: - 'v*.*.*' permissions: contents: write jobs: tests: uses: ./.github/workflows/tests.yml secrets: inherit release: needs: tests runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v6 - name: Determine if pre-release id: prerelease run: | TAG="${{ github.ref_name }}" if [[ "$TAG" == *"-"* ]]; then echo "flag=--prerelease" >> $GITHUB_OUTPUT else echo "flag=" >> $GITHUB_OUTPUT fi - name: Create GitHub Release run: gh release create "${{ github.ref_name }}" --generate-notes ${{ steps.prerelease.outputs.flag }} env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} cleanup: needs: tests if: failure() runs-on: ubuntu-latest permissions: contents: write steps: - name: Checkout code uses: actions/checkout@v6 - name: Delete tag on test failure run: git push --delete origin "${{ github.ref_name }}"