name: Release on: push: branches: [master] # Prevent concurrent releases concurrency: group: release cancel-in-progress: false jobs: release: runs-on: ubuntu-latest permissions: contents: write steps: - uses: actions/checkout@v4 with: fetch-depth: 0 # full history for tag checks - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 - name: Extract version from build.gradle.kts id: version run: | VERSION=$(grep -oP 'version\s*=\s*"\K[^"]+' build.gradle.kts) echo "version=$VERSION" >> "$GITHUB_OUTPUT" echo "Detected version: $VERSION" - name: Check if tag already exists id: tag_check run: | if git rev-parse "v${{ steps.version.outputs.version }}" >/dev/null 2>&1; then echo "exists=true" >> "$GITHUB_OUTPUT" echo "Tag v${{ steps.version.outputs.version }} already exists — skipping release." else echo "exists=false" >> "$GITHUB_OUTPUT" fi - name: Build if: steps.tag_check.outputs.exists == 'false' run: ./gradlew build - name: Create tag and GitHub release if: steps.tag_check.outputs.exists == 'false' uses: softprops/action-gh-release@v2 with: tag_name: v${{ steps.version.outputs.version }} name: v${{ steps.version.outputs.version }} generate_release_notes: true files: build/libs/*.jar