• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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