diff --git a/.github/actions/setup-gradle/action.yml b/.github/actions/setup-gradle/action.yml index 58a74bc7..b62e8f21 100644 --- a/.github/actions/setup-gradle/action.yml +++ b/.github/actions/setup-gradle/action.yml @@ -1,46 +1,37 @@ -name: "Setup Gradle" -description: "Setup konan relocation and gradle caching specific to kotlin MPP" +name: 'Setup Gradle' +description: 'Setup JDK and Gradle' inputs: - os: - required: true - description: "OS" - default: ${{ matrix.os }} cache-disabled: - description: When 'true', all caching is disabled. No entries will be written to or read from the cache. - required: false - default: false + description: 'gradle.cache-disabled' + default: 'false' cache-read-only: - description: | - When 'true', existing entries will be read from the cache but no entries will be written. - By default this value is 'false' for workflows on the GitHub default branch and 'true' for workflows on other branches. - required: false - default: ${{ github.event.repository != null && github.ref_name != github.event.repository.default_branch }} + description: 'gradle.cache-read-only' + default: 'true' runs: - # noinspection YAMLSchemaValidation - using: "composite" + using: 'composite' steps: - - if: inputs.os != 'windows-latest' - run: echo "KONAN_DATA_DIR=${HOME}/.gradle/konan" >> $GITHUB_ENV - shell: bash - - if: inputs.os == 'windows-latest' - run: echo "KONAN_DATA_DIR=${USERPROFILE}\.gradle\konan" >> $GITHUB_ENV - shell: bash - - uses: actions/setup-java@v3 + # On Windows/Linux runners temurin JDK 8, 11, 17, 21 are cached + # On macOS arm64 runners temurin JDK 11, 17, 21 are cached; temurin JDK 8 is not available to download + - uses: actions/setup-java@v4 + with: + distribution: ${{ (runner.os == 'macOS' && runner.arch == 'ARM64') && 'zulu' || 'temurin' }} + java-version: 8 + - uses: actions/setup-java@v4 with: distribution: 'temurin' + # the latest listed version will be used for executions of Gradle java-version: | - 8 11 17 21 - - name: Setup gradle - uses: gradle/gradle-build-action@v2 + - uses: gradle/wrapper-validation-action@v2 + - uses: gradle/actions/setup-gradle@v3 with: + build-scan-publish: true + build-scan-terms-of-service-url: "https://gradle.com/terms-of-service" + build-scan-terms-of-service-agree: "yes" + cache-disabled: ${{ inputs.cache-disabled }} cache-read-only: ${{ inputs.cache-read-only }} - gradle-home-cache-includes: | - caches - notifications - konan - nodejs - yarn + + gradle-home-cache-cleanup: true diff --git a/.github/workflows/ci-samples.yml b/.github/workflows/ci-samples.yml index ec1c00e4..3af1408d 100644 --- a/.github/workflows/ci-samples.yml +++ b/.github/workflows/ci-samples.yml @@ -14,14 +14,12 @@ jobs: strategy: fail-fast: false matrix: - os: [ ubuntu-latest, windows-latest, macos-latest ] + os: [ ubuntu-latest, windows-latest, macos-14 ] sample: [ chat ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: ./.github/actions/setup-gradle with: cache-read-only: true - - uses: gradle/gradle-build-action@v2 - with: - arguments: build --continue - build-root-directory: samples/${{ matrix.sample }} + - run: ./gradlew build --continue + working-directory: samples/${{ matrix.sample }} diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index 26bfd543..b6f6ce10 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -2,43 +2,32 @@ name: Publish RELEASE to Maven Central on: workflow_call: +concurrency: + group: publish-release + cancel-in-progress: false + jobs: publish: if: github.repository == 'rsocket/rsocket-kotlin' - runs-on: macos-latest - concurrency: - group: publish-release - cancel-in-progress: false + runs-on: macos-14 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: ./.github/actions/setup-gradle with: cache-disabled: true - name: Publish to Maven Local (prepare packages) - uses: gradle/gradle-build-action@v2 + run: ./gradlew publishToMavenLocal -Pversion=${{ github.ref_name }} --no-configuration-cache env: ORG_GRADLE_PROJECT_signingKey: ${{secrets.signingKey}} ORG_GRADLE_PROJECT_signingPassword: ${{secrets.signingPassword}} ORG_GRADLE_PROJECT_sonatypeUsername: ${{secrets.sonatypeUsername}} ORG_GRADLE_PROJECT_sonatypePassword: ${{secrets.sonatypePassword}} - with: - arguments: | - publishToMavenLocal - --scan - --info - -Pversion=${{ github.ref_name }} - name: Publish release to Maven Central (version ${{ github.ref_name }}) - uses: gradle/gradle-build-action@v2 + run: ./gradlew publishAllPublicationsToMavenCentralRepository -Pversion=${{ github.ref_name }} --no-configuration-cache env: ORG_GRADLE_PROJECT_signingKey: ${{secrets.signingKey}} ORG_GRADLE_PROJECT_signingPassword: ${{secrets.signingPassword}} ORG_GRADLE_PROJECT_sonatypeUsername: ${{secrets.sonatypeUsername}} ORG_GRADLE_PROJECT_sonatypePassword: ${{secrets.sonatypePassword}} - with: - arguments: | - publishAllPublicationsToSonatypeRepository - --scan - --info - -Pversion=${{ github.ref_name }} diff --git a/.github/workflows/publish-snapshot.yml b/.github/workflows/publish-snapshot.yml index 33a6b749..4f00a8e0 100644 --- a/.github/workflows/publish-snapshot.yml +++ b/.github/workflows/publish-snapshot.yml @@ -6,18 +6,20 @@ on: type: boolean required: true +concurrency: + group: publish-snapshot-${{ github.ref_name }} + cancel-in-progress: false + jobs: publish: if: github.repository == 'rsocket/rsocket-kotlin' - runs-on: macos-latest - concurrency: - group: publish-snapshot-${{ github.ref_name }} - cancel-in-progress: false + runs-on: macos-14 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: ./.github/actions/setup-gradle with: cache-read-only: true + - if: inputs.add-branch-suffix id: set-version run: | @@ -26,23 +28,7 @@ jobs: echo "::set-output name=version-suffix::$branch_name" - name: Publish to Maven Local (prepare packages) - uses: gradle/gradle-build-action@v2 - with: - arguments: | - publishToMavenLocal - --scan - --info - -PversionSuffix=${{ steps.set-version.outputs.version-suffix }} - -PgithubUsername=${{ github.actor }} - -PgithubPassword=${{ github.token }} + run: ./gradlew publishToMavenLocal -PversionSuffix=${{ steps.set-version.outputs.version-suffix }} -PgithubUsername=${{ github.actor }} -PgithubPassword=${{ github.token }} --no-configuration-cache - name: Publish snapshot to Github Packages (version x.y.z-${{ steps.set-version.outputs.version-suffix }}-SNAPSHOT) - uses: gradle/gradle-build-action@v2 - with: - arguments: | - publishAllPublicationsToGithubRepository - --scan - --info - -PversionSuffix=${{ steps.set-version.outputs.version-suffix }} - -PgithubUsername=${{ github.actor }} - -PgithubPassword=${{ github.token }} + run: ./gradlew publishAllPublicationsToGithubRepository -PversionSuffix=${{ steps.set-version.outputs.version-suffix }} -PgithubUsername=${{ github.actor }} -PgithubPassword=${{ github.token }} --no-configuration-cache diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 7664a6c6..3aad4ba2 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -1,87 +1,45 @@ name: Run tests on all platforms on: [ workflow_call, workflow_dispatch ] -jobs: - jvm-test: - name: Run JVM tests - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: ./.github/actions/setup-gradle - - name: Run tests - timeout-minutes: 15 - uses: gradle/gradle-build-action@v2 - with: - arguments: | - jvmAllTest - --scan - --info - --continue - - if: always() - uses: actions/upload-artifact@v3 - with: - name: test-reports - path: "**/build/test-results/*Test/TEST-*.xml" - retention-days: 1 +defaults: + run: + shell: bash - js-test: - name: Run JS tests - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: ./.github/actions/setup-gradle - - name: Run tests - timeout-minutes: 15 - uses: gradle/gradle-build-action@v2 - with: - arguments: | - jsNodeTest - jsBrowserTest - --scan - --info - --continue - - if: always() - uses: actions/upload-artifact@v3 - with: - name: test-reports - path: "**/build/test-results/*Test/TEST-*.xml" - retention-days: 1 - - native-test: - name: Run Native(${{ matrix.target }}) tests +jobs: + run-tests: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: - os: [ macos-latest ] - target: [ macosX64, iosX64, tvosX64, watchosX64 ] + os: [ 'ubuntu-latest' ] + target: [ 'jvmAll', 'js', 'native' ] include: - - os: ubuntu-latest - target: linuxX64 - - os: windows-latest - target: mingwX64 + - os: 'macos-14' + target: 'macos' + - os: 'macos-14' + target: 'ios' + - os: 'macos-14' + target: 'watchos' + - os: 'macos-14' + target: 'tvos' + - os: 'windows-latest' + target: 'native' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: ./.github/actions/setup-gradle - - name: Run tests + + - run: ./gradlew ${{ matrix.target }}Test --continue timeout-minutes: 30 - uses: gradle/gradle-build-action@v2 - with: - arguments: | - ${{ matrix.target }}Test - ${{ matrix.target }}ReleaseTest - --scan - --info - --continue - - if: always() - uses: actions/upload-artifact@v3 + + - if: always() && !cancelled() + uses: actions/upload-artifact@v4 with: - name: test-reports + name: test-reports-${{ matrix.target }} path: "**/build/test-results/*Test/TEST-*.xml" retention-days: 1 publish-test-results: - needs: [ jvm-test, js-test, native-test ] + needs: [ run-tests ] if: always() name: Publish test report runs-on: ubuntu-latest @@ -89,10 +47,11 @@ jobs: checks: write pull-requests: write steps: - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: - name: test-reports + pattern: test-reports-* path: test-reports + merge-multiple: 'true' - name: Publish Test Report uses: EnricoMi/publish-unit-test-result-action@v2 with: @@ -104,17 +63,11 @@ jobs: strategy: fail-fast: false matrix: - os: [ 'ubuntu-latest', 'macos-latest', 'windows-latest' ] + os: [ 'ubuntu-latest', 'macos-14', 'windows-latest' ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: ./.github/actions/setup-gradle - - name: Build project without running tests - uses: gradle/gradle-build-action@v2 with: - arguments: | - build - publishToMavenLocal - --scan - --info - --continue - -Prsocketbuild.skipTests=true + cache-read-only: ${{ github.ref_name != 'main' }} + + - run: ./gradlew build publishToMavenLocal --continue -Pckbuild.skipTests=true