Merge pull request #224 from lihenggui/renovate/all #442
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
on: | |
push: | |
branches: | |
- main | |
paths-ignore: | |
- '.idea/**' | |
- '.gitattributes' | |
- '.github/**.json' | |
- '.gitignore' | |
- '.gitmodules' | |
- '**.md' | |
- 'LICENSE' | |
- 'NOTICE' | |
pull_request: | |
paths-ignore: | |
- '.idea/**' | |
- '.gitattributes' | |
- '.github/**.json' | |
- '.gitignore' | |
- '.gitmodules' | |
- '**.md' | |
- 'LICENSE' | |
- 'NOTICE' | |
concurrency: | |
group: build-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
timeout-minutes: 120 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Validate Gradle Wrapper | |
uses: gradle/wrapper-validation-action@v1 | |
- name: Copy CI gradle.properties | |
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties | |
- name: Write sign info | |
if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main' && github.repository == 'lihenggui/Blocker' | |
run: | | |
if [ ! -z "${{ secrets.KEYSTORE }}" ]; then | |
echo releaseStorePassword='${{ secrets.SIGNING_STORE_PASSWORD }}' >> gradle.properties | |
echo releaseKeyAlias='${{ secrets.SIGNING_KEY_ALIAS }}' >> gradle.properties | |
echo releaseKeyPassword='${{ secrets.SIGNING_KEY_PASSWORD }}' >> gradle.properties | |
echo releaseStoreFile='${{ github.workspace }}/key.jks' >> gradle.properties | |
echo ${{ secrets.KEYSTORE }} | base64 --decode > ${{ github.workspace }}/key.jks | |
fi | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: 17 | |
- name: Setup Gradle | |
uses: gradle/gradle-build-action@v2.6.0 | |
- name: Accept Android licenses | |
run: yes | "$ANDROID_HOME"/cmdline-tools/latest/bin/sdkmanager --licenses || true | |
- name: Check spotless | |
run: ./gradlew spotlessCheck --init-script gradle/init.gradle.kts --no-configuration-cache | |
- name: Build all build type and flavor permutations | |
run: ./gradlew assemble | |
- name: Upload Foss apk | |
if: success() && github.event_name != 'pull_request' && github.repository == 'lihenggui/Blocker' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Foss-APK | |
path: ${{ github.workspace }}/app-compose/build/outputs/apk/foss/release | |
- name: Upload Market apk | |
if: success() && github.event_name != 'pull_request' && github.repository == 'lihenggui/Blocker' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Market-APK | |
path: ${{ github.workspace }}/app-compose/build/outputs/apk/market/release | |
- name: Upload build outputs (Raw-APKs) | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Raw-APKs | |
path: '**/build/outputs/apk/**/*.apk' | |
- name: Upload mappings | |
if: success() && github.event_name != 'pull_request' && github.ref == 'refs/heads/main' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: mappings | |
path: "app-compose/build/outputs/mapping/marketRelease" | |
- name: Set apk path | |
id: apk-path | |
run: | | |
foss_path=$(find **/build/outputs/apk/foss -name '*.apk' -type f | head -1) | |
echo "foss_path=$foss_path" >> $GITHUB_OUTPUT | |
market_path=$(find **/build/outputs/apk/market -name '*.apk' -type f | head -1) | |
echo "market_path=$market_path" >> $GITHUB_OUTPUT | |
- name: Get apk info | |
if: success() && github.event_name != 'pull_request' && github.repository == 'lihenggui/Blocker' | |
id: apk-info | |
uses: zhaobozhen/apk-info-action@1.1.2 | |
with: | |
apk-path: ${{ steps.apk-path.outputs.foss_path }} | |
- name: Run local tests | |
run: ./gradlew testfossDebug testMarketDebug | |
- name: Upload test results (XML) | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-results | |
path: '**/build/test-results/test*UnitTest/**.xml' | |
- name: Check lint | |
run: ./gradlew :app-compose:lintMarketRelease :lint:lint | |
- name: Upload lint reports (HTML) | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: lint-reports | |
path: '**/build/reports/lint-results-*.html' | |
androidTest: | |
needs: build | |
runs-on: macOS-latest # enables hardware acceleration in the virtual machine | |
timeout-minutes: 60 | |
strategy: | |
matrix: | |
api-level: [ 26, 30 ] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Copy CI gradle.properties | |
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: 17 | |
- name: Setup Gradle | |
uses: gradle/gradle-build-action@v2.6.0 | |
- name: Run instrumentation tests | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: ${{ matrix.api-level }} | |
arch: x86_64 | |
disable-animations: true | |
disk-size: 6000M | |
heap-size: 600M | |
script: ./gradlew connectedMarketDebugAndroidTest --daemon | |
- name: Upload test reports | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-reports-${{ matrix.api-level }} | |
path: '**/build/reports/androidTests' | |
androidTest-GMD: | |
needs: build | |
runs-on: macOS-latest # enables hardware acceleration in the virtual machine | |
timeout-minutes: 55 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Copy CI gradle.properties | |
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: 17 | |
- name: Setup Gradle | |
uses: gradle/gradle-build-action@v2.6.0 | |
- name: Setup Android SDK | |
uses: android-actions/setup-android@v2 | |
- name: Build AndroidTest apps | |
run: ./gradlew packageFossDebug packageFossDebugAndroidTest | |
- name: Run instrumented tests with GMD | |
run: ./gradlew cleanManagedDevices --unused-only && | |
./gradlew ciFossDebugAndroidTest -Dorg.gradle.workers.max=1 | |
-Pandroid.testoptions.manageddevices.emulator.gpu="swiftshader_indirect" -Pandroid.experimental.testOptions.managedDevices.emulator.showKernelLogging=true | |
- name: Upload test reports | |
if: success() || failure() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-reports | |
path: '**/build/reports/androidTests' |