name: Release on: workflow_dispatch: inputs: release_version: description: 'Release version (e.g. 3.2.3)' required: true next_snapshot: description: 'Next development version (default: auto-increment patch, e.g. 3.2.4) without the "-SNAPSHOT" word' required: false permissions: contents: write id-token: write attestations: write defaults: run: shell: bash jobs: release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up JDK uses: actions/setup-java@v5 with: distribution: 'temurin' java-version: '21' cache: 'maven' - name: Configure Git run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" - name: Set release version run: mvn versions:set -DnewVersion=${{ inputs.release_version }} -DgenerateBackupPoms=false - name: Build Release run: mvn package appassembler:assemble assembly:single checksum:files -DskipTests - name: Attest build provenance uses: actions/attest-build-provenance@v2 with: subject-path: | target/utPLSQL-cli.zip target/utPLSQL-cli.zip.sha256 - name: Commit and tag release version run: | git add pom.xml git commit -m "Release v${{ inputs.release_version }}" git tag -a "v${{ inputs.release_version }}" -m "Release ${{ inputs.release_version }}" - name: Calculate and set next development version run: | if [[ -n "${{ inputs.next_snapshot }}" ]]; then NEXT="${{ inputs.next_snapshot }}-SNAPSHOT" else IFS='.' read -r major minor patch <<< "${{ inputs.release_version }}" NEXT="${major}.${minor}.$((patch + 1))-SNAPSHOT" fi mvn -B versions:set -DnewVersion="$NEXT" -DgenerateBackupPoms=false git add pom.xml git commit -m "Prepare next development version $NEXT [skip ci]" - name: Push commits and tag run: | git push origin HEAD:${{ github.ref_name }} git push origin "v${{ inputs.release_version }}" - name: Create GitHub Release uses: softprops/action-gh-release@v2 with: tag_name: v${{ inputs.release_version }} name: "utPLSQL-cli v${{ inputs.release_version }}" generate_release_notes: true fail_on_unmatched_files: true files: | target/utPLSQL-cli.zip target/utPLSQL-cli.zip.sha256