name: JVM on: push: paths: - "**.java" - "**.kt" - "**.kts" - "**.gradle" - ".github/workflows/jvm.yml" pull_request: paths: - "**.java" - "**.kt" - "**.kts" - "**.gradle" - ".github/workflows/jvm.yml" jobs: build-and-test: name: Build and Test runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] steps: - name: Checkout uses: actions/checkout@v4 with: lfs: true - name: Setup Java uses: actions/setup-java@v4 with: cache: 'gradle' distribution: 'adopt' java-version: '11' - name: Build with Gradle run: ./gradlew build publish-snapshot: name: Publish Snapshot to GitHub Packages needs: build-and-test if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} runs-on: ubuntu-latest permissions: packages: write contents: read steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 lfs: true - name: Setup Java uses: actions/setup-java@v4 with: cache: 'gradle' distribution: 'adopt' java-version: '11' - name: Build with Gradle run: ./gradlew build - name: Publish the preview package run: ./gradlew publishAllPublicationsToGitHubPackagesRepository env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} publish-release: name: Publish Packages to Maven Central and GitHub Packages needs: build-and-test # Only run on this on proper semver (vX.Y.Z) tags if: ${{ github.ref_type == 'tag' && startsWith(github.ref_name, 'v') }} runs-on: ubuntu-latest permissions: packages: write contents: write steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 lfs: true - name: Setup Java uses: actions/setup-java@v4 with: cache: 'gradle' distribution: 'adopt' java-version: '11' - name: Build with Gradle run: ./gradlew build - name: Publish the package run: ./gradlew publish env: MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}