ci: fix svu install #156
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| pull_request: | |
| push: | |
| branches-ignore: | |
| - 'dependabot/**' | |
| workflow_dispatch: | |
| inputs: | |
| perform_release: | |
| description: 'Perform release' | |
| default: false | |
| type: boolean | |
| release_notes: | |
| description: Release notes (use \n for newlines) | |
| type: string | |
| required: false | |
| bump: | |
| description: 'Bump type' | |
| required: false | |
| default: 'next' | |
| type: choice | |
| options: | |
| - 'next' | |
| - 'major' | |
| - 'minor' | |
| - 'patch' | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| name: Test | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'temurin' | |
| java-version: 23 | |
| cache: 'gradle' | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v5 | |
| - name: Gradle build | |
| run: ./gradlew build | |
| - name: Upload Unit Test Reports | |
| if: always() | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: test-reports | |
| path: '**/build/reports/tests/' | |
| version: | |
| runs-on: macos-latest | |
| if: github.repository_owner == 'gotson' && github.ref == 'refs/heads/main' | |
| outputs: | |
| version_current: ${{ steps.versions.outputs.version_current }} | |
| version_next: ${{ steps.versions.outputs.version_next }} | |
| should_release: ${{ steps.versions.outputs.should_release }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up Homebrew | |
| id: set-up-homebrew | |
| uses: Homebrew/actions/setup-homebrew@master | |
| - name: Install svu | |
| run: brew install --cask caarlos0/tap/svu | |
| - name: Compute next version for release | |
| if: inputs.perform_release | |
| run: | | |
| echo "VERSION_NEXT=`svu ${{ inputs.bump }}`" | tee -a $GITHUB_ENV | |
| echo "VERSION_NEXT_SUFFIX=`svu ${{ inputs.bump }}`" | tee -a $GITHUB_ENV | |
| - name: Compute next version for snapshot | |
| if: inputs.perform_release != true | |
| run: | | |
| echo "VERSION_NEXT=`svu next`" | tee -a $GITHUB_ENV | |
| echo "VERSION_NEXT_SUFFIX=`svu next`-SNAPSHOT" | tee -a $GITHUB_ENV | |
| - name: Set Versions | |
| id: versions | |
| run: | | |
| echo "version_current=`svu current`" >> $GITHUB_OUTPUT | |
| echo "version_next=${{ env.VERSION_NEXT_SUFFIX }}" >> $GITHUB_OUTPUT | |
| [[ `svu current` != ${{ env.VERSION_NEXT }} ]] && echo "should_release=true" >> $GITHUB_OUTPUT || echo | |
| release: | |
| needs: [ version, test ] | |
| runs-on: ubuntu-latest | |
| if: needs.version.outputs.should_release | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| fetch-depth: 0 | |
| - name: Display versions | |
| run: | | |
| echo "Current version: ${{ needs.version.outputs.version_current }}, should release: ${{ needs.version.outputs.version_next }}" | |
| - name: Update version in gradle.properties | |
| run: echo "version=${{ needs.version.outputs.version_next }}" > gradle.properties | |
| - name: Setup Java | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '11' | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v5 | |
| - name: Create release notes | |
| run: | | |
| mkdir release_notes | |
| echo -e "${{ inputs.release_notes }}" >> release_notes/release_notes.md | |
| echo "Release notes:" | |
| cat release_notes/release_notes.md | |
| echo "" | |
| - name: Nexus publish | |
| env: | |
| ORG_GRADLE_PROJECT_signingKey: ${{ secrets.GPG_KEY }} | |
| ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.GPG_PASSPHRASE }} | |
| ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.MAVENCENTRAL_USER }} | |
| ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.MAVENCENTRAL_PASSWORD }} | |
| run: ./gradlew publishToSonatype closeAndReleaseStagingRepositories | |
| - name: Release commit and push | |
| uses: EndBug/add-and-commit@v9 | |
| if: inputs.perform_release | |
| with: | |
| message: 'chore(release): ${{ needs.version.outputs.version_next }} [skip ci]' | |
| default_author: github_actions | |
| - name: JReleaser full release | |
| if: inputs.perform_release | |
| env: | |
| JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: ./gradlew jreleaserFullRelease |