Skip to content

Commit ef99b4f

Browse files
committed
Merge branch 'release/1.3.1'
2 parents 529eea4 + cdf903e commit ef99b4f

File tree

321 files changed

+100476
-82238
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

321 files changed

+100476
-82238
lines changed

.github/workflows/Build.yaml

Lines changed: 38 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,19 @@ jobs:
3333
uses: actions/checkout@v4
3434

3535
- name: Validate Gradle Wrapper
36-
uses: gradle/wrapper-validation-action@v2
36+
uses: gradle/wrapper-validation-action@v3
3737

3838
- name: Copy CI gradle.properties
3939
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
4040

41-
- name: Set up JDK 17
41+
- name: Set up JDK 21
4242
uses: actions/setup-java@v4
4343
with:
4444
distribution: 'zulu'
45-
java-version: 17
45+
java-version: 21
4646

4747
- name: Setup Gradle
48-
uses: gradle/actions/setup-gradle@v3
48+
uses: gradle/actions/setup-gradle@v4
4949
with:
5050
build-scan-publish: true
5151
build-scan-terms-of-use-url: "https://gradle.com/terms-of-service"
@@ -57,13 +57,6 @@ jobs:
5757
- name: Check spotless
5858
run: ./gradlew spotlessCheck --init-script gradle/init.gradle.kts --no-configuration-cache
5959

60-
- name: Remove Firebase References
61-
run: |
62-
sed -i -e '/mlkit/,+14d' -e '/google-services/d' -e '/firebase/d' build.gradle.kts
63-
sed -i -e '/with(target) {/,/^ }/d' -e '/CrashlyticsExtension/d' build-logic/convention/src/main/kotlin/AndroidApplicationFirebaseConventionPlugin.kt
64-
sed -i -e '/androidx.dev/d' settings.gradle.kts
65-
sed -i -e '/mlkit/,+14d' -e '/google-services/d' -e '/libs.firebase/d' build-logic/convention/build.gradle.kts
66-
6760
- name: Check Dependency Guard
6861
id: dependencyguard_verify
6962
continue-on-error: true
@@ -91,10 +84,10 @@ jobs:
9184
disable_globbing: true
9285
commit_message: "🤖 Updates baselines for Dependency Guard"
9386

94-
- name: Run all local screenshot tests (Roborazzi)
87+
- name: Run all local screenshot tests
9588
id: screenshotsverify
9689
continue-on-error: true
97-
run: ./gradlew verifyRoborazziFossReliantDebug
90+
run: ./gradlew validateFossReliantDebugScreenshotTest
9891

9992
- name: Prevent pushing new screenshots if this is a fork
10093
id: checkfork_screenshots
@@ -108,7 +101,7 @@ jobs:
108101
id: screenshotsrecord
109102
if: steps.screenshotsverify.outcome == 'failure' && github.event_name == 'pull_request'
110103
run: |
111-
./gradlew recordRoborazziFossReliantDebug
104+
./gradlew updateFossReliantDebugScreenshotTest
112105
113106
- name: Push new screenshots if available
114107
uses: stefanzweifel/git-auto-commit-action@v5
@@ -121,13 +114,13 @@ jobs:
121114
# Run local tests after screenshot tests to avoid wrong UP-TO-DATE. TODO: Ignore screenshots.
122115
- name: Run local tests and create report
123116
if: always()
124-
run: ./gradlew testFossReliantDebug
117+
run: ./gradlew testFossReliantDebugUnitTest
125118
# Replace task exclusions with `-Pandroidx.baselineprofile.skipgeneration` when
126119
# https://android-review.googlesource.com/c/platform/frameworks/support/+/2602790 landed in a
127120
# release build
128121

129122
- name: Build all build type and flavor permutations
130-
run: ./gradlew :app:assembleFossReliant :benchmarks:assembleFossReliant
123+
run: ./gradlew assembleFossReliant :benchmarks:assembleFossReliant
131124
-x pixel6Api33FossReliantNonMinifiedReleaseAndroidTest
132125
-x pixel6Api33FossReliantNonMinifiedBenchmarkAndroidTest
133126
-x collectFossReliantNonMinifiedReleaseBaselineProfile
@@ -147,7 +140,7 @@ jobs:
147140
path: '**/build/test-results/test*UnitTest/**.xml'
148141

149142
- name: Check lint
150-
run: ./gradlew :app:lintFossReliantRelease
143+
run: ./gradlew lintFossReliantRelease
151144

152145
- name: Upload lint reports (HTML)
153146
if: always()
@@ -159,6 +152,31 @@ jobs:
159152
- name: Check badging
160153
run: ./gradlew checkFossReliantReleaseBadging
161154

155+
- name: Generate coverage reports for Jvm
156+
run: ./gradlew koverXmlReportFossReliantDebug; ./gradlew koverHtmlReportFossReliantDebug #koverHtmlReportJvm
157+
158+
# - name: Add coverage report to PR
159+
# id: kover
160+
# uses: mi-kas/kover-report@v1
161+
# with:
162+
# path: |
163+
# ${{ github.workspace }}/modules/analytics/build/reports/kover/reportJvm.xml
164+
#
165+
# title: Code Coverage
166+
# update-comment: true
167+
# min-coverage-overall: 40
168+
# min-coverage-changed-files: 60
169+
# token: ${{ secrets.GITHUB_TOKEN }}
170+
171+
- name: Upload local coverage reports (XML + HTML) (only API 30)
172+
uses: actions/upload-artifact@v4
173+
with:
174+
name: coverage-reports
175+
if-no-files-found: error
176+
compression-level: 1
177+
overwrite: false
178+
path: '**/build/reports/kover/'
179+
162180
androidTest:
163181
runs-on: ubuntu-latest
164182
timeout-minutes: 55
@@ -191,14 +209,14 @@ jobs:
191209
- name: Copy CI gradle.properties
192210
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
193211

194-
- name: Set up JDK 17
212+
- name: Set up JDK 21
195213
uses: actions/setup-java@v4
196214
with:
197215
distribution: 'zulu'
198-
java-version: 17
216+
java-version: 21
199217

200218
- name: Setup Gradle
201-
uses: gradle/actions/setup-gradle@v3
219+
uses: gradle/actions/setup-gradle@v4
202220
with:
203221
build-scan-publish: true
204222
build-scan-terms-of-use-url: "https://gradle.com/terms-of-service"
@@ -214,42 +232,9 @@ jobs:
214232
heap-size: 600M
215233
script: ./gradlew connectedFossReliantDebugAndroidTest --daemon
216234

217-
- name: Run local tests (including Roborazzi) for the combined coverage report (only API 30)
218-
if: matrix.api-level == 30
219-
# There is no need to verify Roborazzi tests to generate coverage.
220-
run: ./gradlew testFossReliantDebugUnitTest -Proborazzi.test.verify=false # Add Prod if we ever add JVM tests for prod
221-
222-
# Add `createProdDebugUnitTestCoverageReport` if we ever add JVM tests for prod
223-
- name: Generate coverage reports for Debug variants (only API 30)
224-
if: matrix.api-level == 30
225-
run: ./gradlew createFossReliantDebugCombinedCoverageReport
226-
227235
- name: Upload test reports
228236
if: always()
229237
uses: actions/upload-artifact@v4
230238
with:
231239
name: test-reports-${{ matrix.api-level }}
232240
path: '**/build/reports/androidTests'
233-
234-
- name: Display local test coverage (only API 30)
235-
if: matrix.api-level == 30
236-
id: jacoco
237-
uses: madrapps/jacoco-report@v1.6.1
238-
with:
239-
title: Combined test coverage report
240-
min-coverage-overall: 40
241-
min-coverage-changed-files: 60
242-
paths: |
243-
${{ github.workspace }}/**/build/reports/jacoco/**/*Report.xml
244-
token: ${{ secrets.TOKEN }}
245-
246-
- name: Upload local coverage reports (XML + HTML) (only API 30)
247-
if: matrix.api-level == 30
248-
uses: actions/upload-artifact@v4
249-
with:
250-
name: coverage-reports
251-
if-no-files-found: error
252-
compression-level: 1
253-
overwrite: false
254-
path: '**/build/reports/jacoco/'
255-

.github/workflows/Release.yml

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
name: GitHub Release with APKs
2+
3+
on:
4+
push:
5+
tags:
6+
- 'p[0-9]+.[0-9]+.[0-9]+'
7+
8+
jobs:
9+
build:
10+
runs-on: ubuntu-latest
11+
timeout-minutes: 120
12+
13+
steps:
14+
- name: Enable KVM group perms
15+
run: |
16+
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
17+
sudo udevadm control --reload-rules
18+
sudo udevadm trigger --name-match=kvm
19+
ls /dev/kvm
20+
21+
- name: Checkout
22+
uses: actions/checkout@v4
23+
24+
- name: Validate Gradle Wrapper
25+
uses: gradle/wrapper-validation-action@v3
26+
27+
- name: Copy CI gradle.properties
28+
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
29+
30+
- name: Set up JDK 21
31+
uses: actions/setup-java@v4
32+
with:
33+
distribution: 'zulu'
34+
java-version: 21
35+
36+
- name: Install GMD image for baseline profile generation
37+
run: yes | "$ANDROID_HOME"/cmdline-tools/latest/bin/sdkmanager "system-images;android-33;aosp_atd;x86_64"
38+
39+
- name: Accept Android licenses
40+
run: yes | "$ANDROID_HOME"/cmdline-tools/latest/bin/sdkmanager --licenses || true
41+
42+
- name: Build release variant including baseline profile generation
43+
run: ./gradlew :app:assembleFossReliantRelease
44+
-Pandroid.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
45+
-Pandroid.testoptions.manageddevices.emulator.gpu="swiftshader_indirect"
46+
-Pandroid.experimental.testOptions.managedDevices.emulator.showKernelLogging=true
47+
-Pandroid.experimental.androidTest.numManagedDeviceShards=1
48+
-Pandroid.experimental.testOptions.managedDevices.maxConcurrentDevices=1
49+
- name: Create Release
50+
id: create_release
51+
uses: actions/create-release@v1
52+
env:
53+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
54+
with:
55+
tag_name: ${{ github.ref }}
56+
release_name: ${{ github.ref }}
57+
draft: true
58+
prerelease: false
59+
60+
- name: Upload app
61+
uses: actions/upload-release-asset@v1
62+
env:
63+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
64+
with:
65+
upload_url: ${{ steps.create_release.outputs.upload_url }}
66+
asset_path: app/build/outputs/apk/fossReliant/release/app-fossReliant-release.apk
67+
asset_name: app-fossreliant-release.apk
68+
asset_content_type: application/vnd.android.package-archive
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
name: PlayStore Release with Bundle and map text
2+
3+
#on:
4+
# push:
5+
# tags:
6+
# - '[0-9]+.[0-9]+.[0-9]+'
7+
on: workflow_dispatch
8+
9+
10+
jobs:
11+
build:
12+
runs-on: ubuntu-latest
13+
timeout-minutes: 120
14+
15+
steps:
16+
- name: Enable KVM group perms
17+
run: |
18+
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
19+
sudo udevadm control --reload-rules
20+
sudo udevadm trigger --name-match=kvm
21+
ls /dev/kvm
22+
23+
- name: Checkout
24+
uses: actions/checkout@v4
25+
26+
- name: Validate Gradle Wrapper
27+
uses: gradle/wrapper-validation-action@v1
28+
29+
- name: Copy CI gradle.properties
30+
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
31+
32+
- name: Set up JDK 21
33+
uses: actions/setup-java@v4
34+
with:
35+
distribution: 'zulu'
36+
java-version: 21
37+
38+
- name: Install GMD image for baseline profile generation
39+
run: yes | "$ANDROID_HOME"/cmdline-tools/latest/bin/sdkmanager "system-images;android-33;aosp_atd;x86_64"
40+
41+
- name: Setup build tool version variable
42+
shell: bash
43+
run: |
44+
BUILD_TOOL_VERSION=$(ls /usr/local/lib/android/sdk/build-tools/ | tail -n 1)
45+
echo "BUILD_TOOL_VERSION=$BUILD_TOOL_VERSION" >> $GITHUB_ENV
46+
echo Last build tool version is: $BUILD_TOOL_VERSION
47+
48+
- name: Accept Android licenses
49+
run: yes | "$ANDROID_HOME"/cmdline-tools/latest/bin/sdkmanager --licenses || true
50+
51+
- name: Build release variant including baseline profile generation
52+
run: ./gradlew :app:bundleRelease
53+
-Pandroid.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
54+
-Pandroid.testoptions.manageddevices.emulator.gpu="swiftshader_indirect"
55+
-Pandroid.experimental.testOptions.managedDevices.emulator.showKernelLogging=true
56+
-Pandroid.experimental.androidTest.numManagedDeviceShards=1
57+
-Pandroid.experimental.testOptions.managedDevices.maxConcurrentDevices=1
58+
59+
- name: Sign Bundle
60+
uses: r0adkll/sign-android-release@v1
61+
id: sign_app
62+
with:
63+
releaseDirectory: app/build/outputs/bundle/release
64+
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
65+
alias: ${{ secrets.ALIAS }}
66+
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
67+
keyPassword: ${{ secrets.KEY_PASSWORD }}
68+
env:
69+
BUILD_TOOLS_VERSION: ${{ env.BUILD_TOOL_VERSION }}
70+
71+
- uses: actions/upload-artifact@v4
72+
with:
73+
name: release_bundle
74+
path: ${{steps.sign_app.outputs.signedReleaseFile}}
75+
76+
- uses: actions/upload-artifact@v4
77+
with:
78+
name: mapping
79+
path: app/build/outputs/mapping/release/mapping.txt
80+
81+
- uses: actions/upload-artifact@v4
82+
with:
83+
name: distribution
84+
path: distribution
85+
86+
deploy-play-store:
87+
needs: [ build ]
88+
runs-on: ubuntu-latest
89+
steps:
90+
# 1
91+
- uses: actions/download-artifact@v4
92+
with:
93+
name: release_bundle
94+
- name: 'Echo download path'
95+
run: echo ${{steps.download.outputs.download-path}}
96+
97+
- uses: actions/download-artifact@v4
98+
with:
99+
name: mapping
100+
- name: 'Echo download path'
101+
run: echo ${{steps.download.outputs.download-path}}
102+
103+
- uses: actions/download-artifact@v4
104+
with:
105+
name: distribution
106+
- name: Display structure of downloaded files
107+
run: ls -R
108+
- name: 'Echo download path'
109+
run: echo ${{steps.download.outputs.download-path}}
110+
# 2
111+
- name: Publish to Play Store internal test track
112+
uses: r0adkll/upload-google-play@v1.0.18
113+
with:
114+
serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
115+
# 3
116+
packageName: com.mshdabiola.skeletonandroid
117+
releaseFiles: app-release.aab
118+
track: internal
119+
status: completed
120+
inAppUpdatePriority: 2
121+
mappingFile: mapping.txt
122+
whatsNewDirectory: whatsnew

0 commit comments

Comments
 (0)