diff --git a/.github/workflows/cache-core.yml b/.github/workflows/cache-core.yml new file mode 100644 index 000000000..03af96105 --- /dev/null +++ b/.github/workflows/cache-core.yml @@ -0,0 +1,50 @@ +name: Core Cache + +on: + push: + branches: [main] + paths: + - 'jni/deltachat-core-rust' + - 'jni/Android.mk' + - 'jni/Application.mk' + - 'jni/dc_wrapper.c' + - 'scripts/ndk-make.sh' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + with: + submodules: recursive + + - uses: android-actions/setup-android@v3 + - uses: nttld/setup-ndk@v1 + id: setup-ndk + with: + ndk-version: r27 + + - uses: Swatinem/rust-cache@v2 + with: + working-directory: jni/deltachat-core-rust + + - name: Get deltachat-core-rust submodule hash + id: core-hash + run: echo "hash=$(git rev-parse HEAD:jni/deltachat-core-rust)" >> $GITHUB_OUTPUT + + - name: Cache compiled core + id: cache-core + uses: actions/cache@v4 + with: + path: | + jni/arm64-v8a + libs/arm64-v8a + key: core-arm64-v8a-${{ steps.core-hash.outputs.hash }}-${{ hashFiles('jni/Android.mk', 'jni/Application.mk', 'jni/dc_wrapper.c', 'scripts/ndk-make.sh') }}-ndk-r27 + + - name: Compile core + if: steps.cache-core.outputs.cache-hit != 'true' + env: + ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }} + run: | + export PATH="${PATH}:${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/" + scripts/install-toolchains.sh && scripts/ndk-make.sh arm64-v8a diff --git a/.github/workflows/preview-apk.yml b/.github/workflows/preview-apk.yml index 3453f61b6..109a5ba70 100644 --- a/.github/workflows/preview-apk.yml +++ b/.github/workflows/preview-apk.yml @@ -46,9 +46,9 @@ jobs: id: core-hash run: echo "hash=$(git rev-parse HEAD:jni/deltachat-core-rust)" >> $GITHUB_OUTPUT - - name: Cache compiled core - id: cache-core - uses: actions/cache@v4 + - name: Restore compiled core + id: core-cache + uses: actions/cache/restore@v4 with: path: | jni/arm64-v8a @@ -56,6 +56,7 @@ jobs: key: core-arm64-v8a-${{ steps.core-hash.outputs.hash }}-${{ hashFiles('jni/Android.mk', 'jni/Application.mk', 'jni/dc_wrapper.c', 'scripts/ndk-make.sh') }}-ndk-r27 - name: Compile core + if: steps.core-cache.outputs.cache-hit != 'true' env: ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }} run: |