1name: build 2 3on: 4 pull_request: {} 5 workflow_dispatch: {} 6 push: 7 branches: 8 - 'master' 9 tags-ignore: 10 - '**' 11 12env: 13 GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx2g -Dorg.gradle.daemon=false -Dkotlin.incremental=false" 14 15jobs: 16 jvm: 17 runs-on: ubuntu-latest 18 19 strategy: 20 fail-fast: false 21 matrix: 22 java-version: 23 - 8 24 - 11 25 - 17 26 - 19 27 28 steps: 29 - name: Checkout 30 uses: actions/checkout@v4 31 32 - name: Validate Gradle Wrapper 33 uses: gradle/actions/wrapper-validation@v4 34 35 - name: Configure JDK 36 uses: actions/setup-java@v4 37 with: 38 distribution: 'zulu' 39 java-version: 19 40 41 - name: Test 42 run: | 43 ./gradlew -Dkjs=false -Dknative=false -Dkwasm=false -Dtest.java.version=${{ matrix.java-version }} build --stacktrace 44 45 emulator: 46 runs-on: ubuntu-latest 47 steps: 48 # https://github.blog/changelog/2023-02-23-hardware-accelerated-android-virtualization-on-actions-windows-and-linux-larger-hosted-runners/ 49 - name: Enable KVM group perms 50 run: | 51 echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules 52 sudo udevadm control --reload-rules 53 sudo udevadm trigger --name-match=kvm 54 ls /dev/kvm 55 - uses: actions/checkout@v4 56 - uses: actions/setup-java@v4 57 with: 58 distribution: 'zulu' 59 java-version: 19 60 61 - uses: gradle/actions/setup-gradle@v4 62 63 - uses: reactivecircus/android-emulator-runner@v2 64 with: 65 api-level: 24 66 script: ./gradlew :okio-assetfilesystem:connectedCheck 67 68 loom: 69 runs-on: ubuntu-latest 70 71 strategy: 72 fail-fast: false 73 74 steps: 75 - name: Checkout 76 uses: actions/checkout@v4 77 78 - name: Validate Gradle Wrapper 79 uses: gradle/actions/wrapper-validation@v4 80 81 - name: Configure JDK 82 uses: actions/setup-java@v4 83 with: 84 distribution: 'zulu' 85 java-version: 19 86 87 - name: Test 88 run: | 89 ./gradlew -DloomEnabled=true build 90 91 all-platforms: 92 runs-on: ${{ matrix.os }} 93 94 strategy: 95 fail-fast: false 96 matrix: 97 os: [ macos-14, ubuntu-latest, windows-latest ] 98 99 steps: 100 - name: Checkout 101 uses: actions/checkout@v4 102 103 - name: Validate Gradle Wrapper 104 uses: gradle/actions/wrapper-validation@v4 105 106 - name: Configure JDK 107 uses: actions/setup-java@v4 108 with: 109 distribution: 'zulu' 110 java-version: 19 111 112 - name: Test 113 if: matrix.os != 'windows-latest' 114 run: | 115 ./gradlew build 116 117 - name: Test (No WASM) 118 if: matrix.os == 'windows-latest' 119 run: | 120 ./gradlew build -Dkwasm=false 121 122 - name: Save Test Reports 123 if: failure() 124 uses: actions/upload-artifact@v4 125 with: 126 name: test-reports 127 path: '**/build/reports' 128 129 publish: 130 runs-on: macos-14 131 if: github.repository == 'square/okio' && github.ref == 'refs/heads/master' 132 needs: [jvm, all-platforms, emulator] 133 134 steps: 135 - name: Checkout 136 uses: actions/checkout@v4 137 138 - name: Configure JDK 139 uses: actions/setup-java@v4 140 with: 141 distribution: 'zulu' 142 java-version: 19 143 144 - name: Upload Artifacts 145 run: | 146 ./gradlew publish --stacktrace 147 env: 148 ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.SONATYPE_NEXUS_USERNAME }} 149 ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.SONATYPE_NEXUS_PASSWORD }} 150 ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.ARTIFACT_SIGNING_PRIVATE_KEY }} 151 152 publish-website: 153 runs-on: ubuntu-latest 154 if: github.repository == 'square/okio' && github.ref == 'refs/heads/master' 155 needs: [jvm, all-platforms, emulator] 156 157 steps: 158 - name: Checkout 159 uses: actions/checkout@v4 160 with: 161 fetch-depth: 0 162 163 - name: Configure JDK 164 uses: actions/setup-java@v4 165 with: 166 distribution: 'zulu' 167 java-version: 19 168 169 - name: Set up Python 170 uses: actions/setup-python@v5 171 with: 172 python-version: 3.8 173 174 - name: Prepare docs 175 run: .buildscript/prepare_mkdocs.sh 176 177 - name: Build mkdocs 178 run: | 179 pip3 install mkdocs-material mkdocs-macros-plugin 180 mkdocs build 181 182 - name: Restore 1.x docs 183 run: .buildscript/restore_v1_docs.sh 184 185 - name: Deploy docs 186 if: success() 187 uses: JamesIves/github-pages-deploy-action@releases/v3 188 with: 189 GITHUB_TOKEN: ${{ secrets.GH_CLIPPY_TOKEN }} 190 BRANCH: gh-pages 191 FOLDER: site 192 SINGLE_COMMIT: true 193