Cache Android builds on GitHub Actions (#1922)
Summary: Builds up a file with checksums of all `build.gradle` files. Deliberately excludes the `gradle.properties` which changes all the time. The cache shouldn't require nuking except in some rare circumstances. Pull Request resolved: https://github.com/facebook/flipper/pull/1922 Test Plan: From 41 minutes down to 17: https://github.com/passy/flipper-1/actions/runs/561501374 Reviewed By: mweststrate Differential Revision: D26427242 Pulled By: passy fbshipit-source-id: ff1d7370d477c9d7b57c62082ec985108a5ba698
This commit is contained in:
committed by
Facebook GitHub Bot
parent
d42932c111
commit
3cda93dade
9
.github/workflows/android-sample.yml
vendored
9
.github/workflows/android-sample.yml
vendored
@@ -15,6 +15,15 @@ jobs:
|
|||||||
java-version: 1.8
|
java-version: 1.8
|
||||||
- name: Install NDK 21
|
- name: Install NDK 21
|
||||||
run: echo "y" | sudo /usr/local/lib/android/sdk/tools/bin/sdkmanager --install "ndk;21.0.6113669" "ndk;20.0.5594570" --sdk_root=${ANDROID_SDK_ROOT}
|
run: echo "y" | sudo /usr/local/lib/android/sdk/tools/bin/sdkmanager --install "ndk;21.0.6113669" "ndk;20.0.5594570" --sdk_root=${ANDROID_SDK_ROOT}
|
||||||
|
- name: Compute build cache
|
||||||
|
run: ./scripts/checksum-android.sh checksum-android.txt
|
||||||
|
- uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
~/.gradle/caches/modules-*
|
||||||
|
~/.gradle/caches/jars-*
|
||||||
|
~/.gradle/caches/build-cache-*
|
||||||
|
key: gradle-${{ hashFiles('checksum-android.txt') }}
|
||||||
- name: Build with Gradle
|
- name: Build with Gradle
|
||||||
run: ./gradlew :sample:assembleDebug :tutorial:assembleDebug
|
run: ./gradlew :sample:assembleDebug :tutorial:assembleDebug
|
||||||
- name: upload artifact
|
- name: upload artifact
|
||||||
|
|||||||
9
.github/workflows/publish-android.yml
vendored
9
.github/workflows/publish-android.yml
vendored
@@ -28,6 +28,15 @@ jobs:
|
|||||||
run: echo '${{ secrets.GPG_KEY_CONTENTS }}' | base64 -d > /tmp/secring.gpg
|
run: echo '${{ secrets.GPG_KEY_CONTENTS }}' | base64 -d > /tmp/secring.gpg
|
||||||
- name: Update gradle.properties
|
- name: Update gradle.properties
|
||||||
run: echo -e "signing.secretKeyRingFile=/tmp/secring.gpg\nsigning.keyId=${{ secrets.SIGNING_KEY_ID }}\nsigning.password=${{ secrets.SIGNING_PASSWORD }}" >> gradle.properties
|
run: echo -e "signing.secretKeyRingFile=/tmp/secring.gpg\nsigning.keyId=${{ secrets.SIGNING_KEY_ID }}\nsigning.password=${{ secrets.SIGNING_PASSWORD }}" >> gradle.properties
|
||||||
|
- name: Compute build cache
|
||||||
|
run: ./scripts/checksum-android.sh checksum-android.txt
|
||||||
|
- uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
~/.gradle/caches/modules-*
|
||||||
|
~/.gradle/caches/jars-*
|
||||||
|
~/.gradle/caches/build-cache-*
|
||||||
|
key: gradle-${{ hashFiles('checksum-android.txt') }}
|
||||||
- name: Build artifacts
|
- name: Build artifacts
|
||||||
run: ./gradlew :sample:assembleDebug :sample:assembleRelease && ./gradlew :android:assembleRelease
|
run: ./gradlew :sample:assembleDebug :sample:assembleRelease && ./gradlew :android:assembleRelease
|
||||||
- name: Upload Archives
|
- name: Upload Archives
|
||||||
|
|||||||
28
scripts/checksum-android.sh
Executable file
28
scripts/checksum-android.sh
Executable file
@@ -0,0 +1,28 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
#
|
||||||
|
# This source code is licensed under the MIT license found in the
|
||||||
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
RESULT_FILE=$1
|
||||||
|
|
||||||
|
if [ -f "$RESULT_FILE" ]; then
|
||||||
|
rm "$RESULT_FILE"
|
||||||
|
fi
|
||||||
|
touch "$RESULT_FILE"
|
||||||
|
|
||||||
|
checksum_file() {
|
||||||
|
openssl sha256 "$1" | awk '{print $2}'
|
||||||
|
}
|
||||||
|
|
||||||
|
FILES=()
|
||||||
|
while read -r -d ''; do
|
||||||
|
FILES+=("$REPLY")
|
||||||
|
done < <(find . -type f \( -name "build.gradle*" -o -name "gradle-wrapper.properties" \) -print0)
|
||||||
|
|
||||||
|
# Loop through files and append checksum to result file
|
||||||
|
for FILE in "${FILES[@]}"; do
|
||||||
|
checksum_file "$FILE" >> "$RESULT_FILE"
|
||||||
|
done
|
||||||
|
|
||||||
|
sort "$RESULT_FILE" -o "$RESULT_FILE"
|
||||||
Reference in New Issue
Block a user