-
Notifications
You must be signed in to change notification settings - Fork 556
Fix part of #1719, part of #3709: Add build stats CI workflow #4092
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
244 commits
Select commit
Hold shift + click to select a range
8a3f45c
Add script for computing AAB/APK differences.
BenHenning ecb742a
Add workflow to show build stats.
BenHenning 4e9ce47
Add missing new build vars.
BenHenning a34041e
Tests + docs + build changes.
BenHenning 498d24e
Fix CommandExecutorImpl's timeout feature.
BenHenning a9b686d
Lint fixes.
BenHenning b06d2b2
Merge branch 'develop' into add-build-stats-ci-workflow
BenHenning 4a9f003
Fix post-merge conflicts.
BenHenning a19c1a5
Fix workflow name.
BenHenning ae737ad
Fix workflow names & IDs.
BenHenning f0af5e5
Temporarily disable workflows -> faster iteration.
BenHenning 4dfdd35
Add Proguard exemption.
BenHenning 7895214
Remove broken & unneeded copy line.
BenHenning 88adf22
Fix variable reference for comment body.
BenHenning accf003
Add more collapsing in comment.
BenHenning 532bfe5
Only isolate special script deps.
BenHenning 693ce0a
Re-enable CI workflows.
BenHenning b587830
Merge branch 'develop' into add-build-stats-ci-workflow
BenHenning 2a5f6e0
Post-merge fixes & wording improvements.
BenHenning 53de383
Upgrade to Kotlin 1.6.
BenHenning 9061529
Fix guava_jre deps & in bundle tool client.
BenHenning 31a7605
Buildifier lint fixes.
BenHenning 9ca7e2b
Migrate to rules_jvm_external 5.1.
BenHenning 7238b59
Fix JVm dep build warnings.
BenHenning f6188ac
Fix Maven license check & update the list.
BenHenning 2c3b6ea
Fix issues with compute_affected_tests.
BenHenning c325bc9
Use base SHA for computing affected tests.
BenHenning 2012647
Merge branch 'upgrade-compute-affected-tests' into update-rules-jvm-e…
BenHenning 47f9c02
Post-merge lint fix.
BenHenning 8ae5aa8
Fix updated TODOs.
BenHenning de3cf14
Merge branch 'upgrade-compute-affected-tests' into update-rules-jvm-e…
BenHenning b2ca68b
Fix Dagger structure.
BenHenning 839be0f
Upgrade Dagger version.
BenHenning c2fe337
Fix test builds that depend on Dagger generation.
BenHenning a543500
Update Maven dependency licenses.
BenHenning b882832
Fix broken test & binary builds.
BenHenning c5b940b
Add support for Kotlin 1.6.
BenHenning 10ae796
Correctly interact with rules_kotlin.
BenHenning 1cf7b76
Fix upgrade by downgrading Moshi to 1.13.
BenHenning d2799f0
Turn on warnings as errors for Kotlin.
BenHenning 86dacfb
Fix Java build & other warnings.
BenHenning bc62b22
Try to fix AndroidX databinding compile race.
BenHenning 6f9bbd6
Fix static check failures.
BenHenning 7cc591d
Merge branch 'upgrade-to-kotlin1.6' into add-build-stats-ci-workflow
BenHenning a4790a4
Post-merge fixes.
BenHenning b74ecbb
Fix Proguard builds (temp) and static failures.
BenHenning aaa0299
Merge branch 'develop' into upgrade-compute-affected-tests
BenHenning d520fa9
Merge branch 'upgrade-compute-affected-tests' into update-rules-jvm-e…
BenHenning 037be61
Merge branch 'update-rules-jvm-external' into update-dagger-structure
BenHenning 756534a
Merge branch 'update-dagger-structure' into upgrade-to-kotlin1.6
BenHenning a92e37c
Fix CI breakages, including Gradle.
BenHenning bb8592b
Merge branch 'upgrade-to-kotlin1.6' into add-build-stats-ci-workflow
BenHenning 9890877
Post-merge dep fixes + test fix.
BenHenning f118fa2
Undo unnecessary changes.
BenHenning d8792a8
Fix broken CI checks.
BenHenning 6b5291f
Merge branch 'upgrade-to-kotlin1.6' into add-build-stats-ci-workflow
BenHenning 125be3c
Post-merge fixes.
BenHenning 59f7f87
Address self-review comments.
BenHenning 0709b3d
Fix broken tests.
BenHenning e44b59d
Address TODOs as part of the migration.
BenHenning d2df104
Merge branch 'upgrade-to-kotlin1.6' into add-build-stats-ci-workflow
BenHenning 3b7df64
Post-merge fixes.
BenHenning a40f75a
Update build stats workflow.
BenHenning 8a19b4e
Merge branch 'develop' into upgrade-compute-affected-tests
BenHenning 773f7ff
Fix breakage from develop.
BenHenning 311951f
Merge branch 'upgrade-compute-affected-tests' into update-rules-jvm-e…
BenHenning 9e377d5
Merge branch 'update-rules-jvm-external' into update-dagger-structure
BenHenning f087488
Merge branch 'update-dagger-structure' into upgrade-to-kotlin1.6
BenHenning 413952c
Merge branch 'upgrade-to-kotlin1.6' into add-build-stats-ci-workflow
BenHenning e7435a5
Fix hanging CoroutineExecutorService test.
BenHenning 0b4fefa
Merge branch 'upgrade-to-kotlin1.6' into add-build-stats-ci-workflow
BenHenning c0b3894
Permant-ify temporary TODOs for new tests.
BenHenning ec33a12
Upgrade runner for build stats.
BenHenning 8a8101b
Fix broken Gradle build.
BenHenning d629d71
Merge branch 'upgrade-to-kotlin1.6' into add-build-stats-ci-workflow
BenHenning 525a601
Merge branch 'develop' into upgrade-compute-affected-tests
BenHenning 6cca78f
Merge branch 'upgrade-compute-affected-tests' into update-rules-jvm-e…
BenHenning 327114d
Post-merge fixes.
BenHenning bb4ff28
Merge branch 'update-rules-jvm-external' into update-dagger-structure
BenHenning 5d924f4
Post-merge fixes.
BenHenning 8690354
Merge branch 'update-dagger-structure' into upgrade-to-kotlin1.6
BenHenning 66bf94f
Post-merge fixes.
BenHenning 667bf89
Fix a variety of dev platform-specific issues.
BenHenning fb59232
Tidy some things up, and revert fragment test.
BenHenning 2551d4b
Fix test behavior inconsistency in test.
BenHenning 714f3ea
Merge branch 'develop' into fix-platform-specific-issues
BenHenning 7488b9f
Fix broken ProfileAndDeviceIdFragmentTest test.
BenHenning e3d4091
Merge branch 'develop' into fix-platform-specific-issues
BenHenning 5671673
Post-merge fix.
BenHenning f5ed0c9
Merge branch 'fix-platform-specific-issues' into upgrade-compute-affe…
BenHenning bd1466d
Merge branch 'develop' into fix-platform-specific-issues
BenHenning d9b38ea
Merge branch 'fix-platform-specific-issues' into upgrade-compute-affe…
BenHenning 9f1a2ec
Some follow-up post-merge fixes.
BenHenning 39a3add
Make TodoOpenCheck locally runnable.
BenHenning 4f7bfd6
Simplify GitHubIssue & some static fixes/docs.
BenHenning 000bba3
Add ScriptBackgroundCoroutineDispatcher.
BenHenning 79878cd
Some more robustness fixes.
BenHenning a5f71d6
Merge branch 'fix-platform-specific-issues' into introduce-better-scr…
BenHenning 0b55bd4
Post-merge fixes.
BenHenning 53d6727
Merge branch 'introduce-better-script-execution-support' into make-to…
BenHenning 00c7c28
Post-merge fixes & adjustments.
BenHenning bd97611
Fix BUILD file lint issue.
BenHenning d54829d
Merge branch 'fix-platform-specific-issues' into introduce-better-scr…
BenHenning fa9cae4
Merge branch 'introduce-better-script-execution-support' into make-to…
BenHenning 0618b12
Static fix checks.
BenHenning fb148ea
Merge branch 'make-todo-check-locally-runnable' into upgrade-compute-…
BenHenning ab326ff
Post-merge fixes.
BenHenning d5bfad5
Merge branch 'upgrade-compute-affected-tests' of github.com:oppia/opp…
BenHenning 1067a18
Merge branch 'upgrade-compute-affected-tests' into update-rules-jvm-e…
BenHenning 1e2df14
Post-merge fixes.
BenHenning 211487c
Merge branch 'develop' into fix-platform-specific-issues
BenHenning 1a666a9
Post-merge fixes.
BenHenning a2ee5d3
Add smoke tests for instr. binaries & tests.
BenHenning d5b9012
Some minor refactoring for readability.
BenHenning e6ec869
Fixed broken instrumentation builds.
BenHenning 9f50469
Merge branch 'develop' into fix-instrumentation-build-failure
BenHenning 8dbf4dc
Add missing CODEOWNERS line.
BenHenning 9c38057
Remove old files from CODEOWNERS.
BenHenning f2ff4e3
Merge branch 'fix-instrumentation-build-failure' into fix-platform-sp…
BenHenning fad48ed
Add missing tests for TestBlazeWorkspace changes.
BenHenning e1802c8
Add missing Firebase auth tests.
BenHenning 00c32f6
Merge branch 'fix-instrumentation-build-failure' into fix-platform-sp…
BenHenning 2f87f4d
Merge branch 'fix-platform-specific-issues' into introduce-better-scr…
BenHenning aa3547c
Merge branch 'introduce-better-script-execution-support' into make-to…
BenHenning d3cbd93
Post-merge fixes for previously missed tests.
BenHenning 13e4358
Merge branch 'fix-platform-specific-issues' into introduce-better-scr…
BenHenning 622aced
Merge branch 'introduce-better-script-execution-support' into make-to…
BenHenning 50f41d2
Merge branch 'develop' into fix-instrumentation-build-failure
BenHenning c8df70e
Merge branch 'fix-instrumentation-build-failure' into fix-platform-sp…
BenHenning c85d421
Merge branch 'develop' into fix-instrumentation-build-failure
BenHenning dcf27b6
Merge branch 'fix-instrumentation-build-failure' into fix-platform-sp…
BenHenning 2369514
Merge branch 'develop' into fix-platform-specific-issues
BenHenning c7ec5d4
Merge branch 'fix-platform-specific-issues' into introduce-better-scr…
BenHenning 4b418bd
Merge branch 'introduce-better-script-execution-support' into make-to…
BenHenning d6a9f70
Merge branch 'make-todo-check-locally-runnable' into upgrade-compute-…
BenHenning 8de4d51
Improve new test robustness.
BenHenning 3f69f11
Fix updated Maven license deps.
BenHenning ea8e0b1
Merge branch 'introduce-better-script-execution-support' into make-to…
BenHenning 2916770
Update scripts/src/javatests/org/oppia/android/scripts/common/GitClie…
BenHenning f2d810a
Merge branch 'develop' into fix-platform-specific-issues
BenHenning 808f412
Merge branch 'fix-platform-specific-issues' into introduce-better-scr…
BenHenning 2315aea
Merge branch 'introduce-better-script-execution-support' into make-to…
BenHenning af51395
Add tests for GitHubClient & TodoOpenCheck.
BenHenning 6856e3c
Merge branch 'develop' into fix-platform-specific-issues
BenHenning 5a050de
Merge branch 'fix-platform-specific-issues' into introduce-better-scr…
BenHenning 13b8d4b
Merge branch 'introduce-better-script-execution-support' into make-to…
BenHenning 280b3ec
Add missing docs.
BenHenning 0bd7e2f
Merge branch 'make-todo-check-locally-runnable' into upgrade-compute-…
BenHenning 5951c0f
Post-merge fixes.
BenHenning ee71b32
Merge branch 'upgrade-compute-affected-tests' into update-rules-jvm-e…
BenHenning 3627067
Update Maven dep list checker & updater scripts.
BenHenning a5eb624
Merge branch 'develop' into introduce-better-script-execution-support
BenHenning ae239b3
Merge branch 'introduce-better-script-execution-support' into make-to…
BenHenning 34ea6aa
Fix broken TodoOpenCheck tests & check exemptions.
BenHenning df61985
Merge branch 'make-todo-check-locally-runnable' into upgrade-compute-…
BenHenning 161ae8d
Merge branch 'upgrade-compute-affected-tests' into update-rules-jvm-e…
BenHenning 8c87993
Fix broken checks & failing static checks.
BenHenning bb6e681
Merge branch 'update-rules-jvm-external' into update-dagger-structure
BenHenning 5c812a1
Post merge build, test, and static check fixes.
BenHenning 57c275c
Merge branch 'update-dagger-structure' into upgrade-to-kotlin1.6
BenHenning e0e74d5
Merge branch 'develop' into introduce-better-script-execution-support
BenHenning 2dd0cd7
Merge branch 'introduce-better-script-execution-support' into make-to…
BenHenning 79a2f0f
Merge branch 'make-todo-check-locally-runnable' into upgrade-compute-…
BenHenning 60458bf
Merge branch 'upgrade-compute-affected-tests' into update-rules-jvm-e…
BenHenning 228a037
Merge branch 'update-rules-jvm-external' into update-dagger-structure
BenHenning 195d604
Some post-merge fixes.
BenHenning 3bdd1e0
Merge branch 'update-dagger-structure' into upgrade-to-kotlin1.6
BenHenning 7cd345b
Silence deprecation warnings.
BenHenning 70df9b3
Merge branch 'develop' into introduce-better-script-execution-support
BenHenning 04fc8b8
Merge branch 'introduce-better-script-execution-support' into make-to…
BenHenning c301eed
Address reviewer comment.
BenHenning 51a96ce
Merge branch 'develop' into introduce-better-script-execution-support
seanlip b3e2fd9
Merge commit 'e2f94e41e4cba3bc5b5f3af65f7c43a6543b4c52' into introduc…
BenHenning 73a8bce
Merge branch 'introduce-better-script-execution-support' into make-to…
BenHenning f48f78e
Merge branch 'develop' into make-todo-check-locally-runnable
BenHenning 02ccc87
Merge branch 'develop' into make-todo-check-locally-runnable
BenHenning 28fcb9d
Merge branch 'make-todo-check-locally-runnable' into upgrade-compute-…
BenHenning aa8988c
Merge branch 'upgrade-compute-affected-tests' into update-rules-jvm-e…
BenHenning 658c9f0
Merge branch 'update-rules-jvm-external' into update-dagger-structure
BenHenning 53d42e1
Merge branch 'update-dagger-structure' into upgrade-to-kotlin1.6
BenHenning 4cf06d4
Address self-review comments.
BenHenning 0cc5d5d
Merge branch 'upgrade-compute-affected-tests' into update-rules-jvm-e…
BenHenning c43c036
Address review comment.
BenHenning c30a839
Merge branch 'update-rules-jvm-external' into update-dagger-structure
BenHenning fbac9a2
Post-merge fixes.
BenHenning 840de58
Merge branch 'update-dagger-structure' into upgrade-to-kotlin1.6
BenHenning ce2c34b
Fix NetworkLoggingInterceptorTest.
BenHenning 0f48cf5
Fix more tests & upgrade Robolectric.
BenHenning caf6f28
Fix more broken tests.
BenHenning 118d32f
Undo Robolectric upgrade.
BenHenning 956b358
Upgrade to rules_kotlin 1.5.0 beta 3.
BenHenning dd84da3
Merge branch 'upgrade-to-newer-rules-kotlin' into upgrade-to-kotlin1.6
BenHenning f5c07fc
Fix build-time Kotlin & Java warnings.
BenHenning 0429177
Fix a few follow-up issues.
BenHenning 8dcb531
Merge branch 'fix-build-time-kotlin-java-warnings' into upgrade-to-ko…
BenHenning c24069b
Merge branch 'upgrade-to-kotlin1.6' into add-build-stats-ci-workflow
BenHenning c2fee1b
Post-merge fixes.
BenHenning 3dc6b7b
Merge branch 'develop' into upgrade-compute-affected-tests
BenHenning acd1c0d
Merge branch 'develop' into upgrade-compute-affected-tests
BenHenning c672af0
Address reviewer comment.
BenHenning 1b19f5b
Merge branch 'upgrade-compute-affected-tests' into update-rules-jvm-e…
BenHenning 3e923e2
Follow-up variable rename for clarity.
BenHenning 9af41bd
Merge branch 'update-rules-jvm-external' into update-dagger-structure
BenHenning 6100394
Merge branch 'update-dagger-structure' into upgrade-to-newer-rules-ko…
BenHenning b6c3ebe
Merge branch 'upgrade-to-newer-rules-kotlin' into fix-build-time-kotl…
BenHenning d3cea44
Merge branch 'fix-build-time-kotlin-java-warnings' into upgrade-to-ko…
BenHenning da57feb
Address static check failures.
BenHenning 32733a0
Merge branch 'upgrade-to-kotlin1.6' into add-build-stats-ci-workflow
BenHenning 441e293
Move forward TODO fixes from #4937.
BenHenning 2f1eed7
Remove unused view model bridge classes.
BenHenning 0c96f8d
Merge branch 'fix-build-time-kotlin-java-warnings' into upgrade-to-ko…
BenHenning afde202
Merge branch 'upgrade-to-kotlin1.6' into add-build-stats-ci-workflow
BenHenning e57be5b
Rework CI workflow.
BenHenning a07d3a6
Address all reviewer comments.
BenHenning 785d408
Pull in other warning fixes from #4886.
BenHenning 7ccba36
Merge branch 'fix-build-time-kotlin-java-warnings' into upgrade-to-ko…
BenHenning f74d059
Pulled forward Gradle change from #4886.
BenHenning baa2c50
Merge branch 'upgrade-to-kotlin1.6' into add-build-stats-ci-workflow
BenHenning 7951d46
Merge branch 'develop' into update-rules-jvm-external
BenHenning d4d8646
Merge branch 'develop' into update-rules-jvm-external
BenHenning b6cfd74
Merge branch 'update-rules-jvm-external' into update-dagger-structure
BenHenning 0468e81
Merge branch 'develop' into update-dagger-structure
BenHenning 47ad078
Merge branch 'update-dagger-structure' into upgrade-to-newer-rules-ko…
BenHenning 828e43e
Merge branch 'upgrade-to-newer-rules-kotlin' into fix-build-time-kotl…
BenHenning eda781e
Merge branch 'fix-build-time-kotlin-java-warnings' into upgrade-to-ko…
BenHenning 82c530a
Down version to 1.6.10.
BenHenning 05bc1c2
Merge branch 'upgrade-to-kotlin1.6' into add-build-stats-ci-workflow
BenHenning 7c186c3
Merge branch 'develop' into upgrade-to-newer-rules-kotlin
BenHenning dffff83
Merge branch 'upgrade-to-newer-rules-kotlin' into fix-build-time-kotl…
BenHenning bc79bf7
Address review comment.
BenHenning 2d3f5d5
Merge branch 'develop' into fix-build-time-kotlin-java-warnings
BenHenning bc98d27
Merge branch 'fix-build-time-kotlin-java-warnings' into upgrade-to-ko…
BenHenning bacbc2a
Merge branch 'upgrade-to-kotlin1.6' into add-build-stats-ci-workflow
BenHenning 4b26fd5
Merge branch 'develop' into fix-build-time-kotlin-java-warnings
BenHenning fd69342
Merge branch 'fix-build-time-kotlin-java-warnings' into upgrade-to-ko…
BenHenning 3dcc2ac
Merge branch 'develop' into fix-build-time-kotlin-java-warnings
BenHenning 4cbf04c
Merge branch 'fix-build-time-kotlin-java-warnings' into upgrade-to-ko…
BenHenning f97c111
Add config for Kotlin warnings.
BenHenning e9ac7f3
Address reviewer comment.
BenHenning c1d6959
Merge branch 'upgrade-to-kotlin1.6' into add-build-stats-ci-workflow
BenHenning 3b682f0
Address lint failures.
BenHenning 9af2662
Merge branch 'upgrade-to-kotlin1.6' into add-build-stats-ci-workflow
BenHenning 89a184d
Merge branch 'develop' into upgrade-to-kotlin1.6
BenHenning cae201f
Merge branch 'upgrade-to-kotlin1.6' into add-build-stats-ci-workflow
BenHenning File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,216 @@ | ||
# Contains jobs corresponding to stats, including build stats due to changes in a PR. | ||
|
||
name: Stats Checks & Reports | ||
|
||
on: | ||
workflow_dispatch: | ||
schedule: | ||
- cron: "30 02 * * *" | ||
|
||
permissions: | ||
pull-requests: write | ||
|
||
jobs: | ||
find_open_pull_requests: | ||
name: Find open PRs | ||
runs-on: ubuntu-20.04 | ||
outputs: | ||
matrix: ${{ steps.compute-pull-request-matrix.outputs.matrix }} | ||
env: | ||
GH_TOKEN: ${{ github.token }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- name: Compute PR matrix | ||
id: compute-pull-request-matrix | ||
# Remove spaces to ensure the matrix output is on one line. Reference: | ||
# https://stackoverflow.com/a/3232433. | ||
run: | | ||
CURRENT_OPEN_PR_INFO="$(gh pr list --json number,baseRefName,headRefName,headRepository,headRepositoryOwner | tr -d '[:space:]')" | ||
echo "matrix={\"prInfo\": $CURRENT_OPEN_PR_INFO}" >> "$GITHUB_OUTPUT" | ||
build_stats: | ||
name: Build Stats | ||
needs: find_open_pull_requests | ||
runs-on: ubuntu-20.04 | ||
# Reduce parallelization due to high build times, and allow individual PRs to fail. | ||
strategy: | ||
fail-fast: false | ||
max-parallel: 5 | ||
matrix: ${{ fromJson(needs.find_open_pull_requests.outputs.matrix) }} | ||
env: | ||
ENABLE_CACHING: false | ||
CACHE_DIRECTORY: ~/.bazel_cache | ||
steps: | ||
- name: Compute PR head owner/repo reference | ||
env: | ||
PR_HEAD_REPO: ${{ matrix.prInfo.headRepository.name }} | ||
PR_HEAD_REPO_OWNER: ${{ matrix.prInfo.headRepositoryOwner.login }} | ||
run: | | ||
echo "PR_HEAD=$PR_HEAD_REPO_OWNER/$PR_HEAD_REPO" >> "$GITHUB_ENV" | ||
- name: Print PR information for this run | ||
env: | ||
PR_BASE_REF_NAME: ${{ matrix.prInfo.baseRefName }} | ||
PR_HEAD_REF_NAME: ${{ matrix.prInfo.headRefName }} | ||
PR_NUMBER: ${{ matrix.prInfo.number }} | ||
run: | | ||
echo "PR $PR_NUMBER is merging into $PR_BASE_REF_NAME from https://github.com/$PR_HEAD branch $PR_HEAD_REF_NAME." | ||
- name: Set up JDK 9 | ||
uses: actions/setup-java@v1 | ||
with: | ||
java-version: 9 | ||
|
||
- name: Set up Bazel | ||
uses: abhinavsingh/setup-bazel@v3 | ||
with: | ||
version: 4.0.0 | ||
|
||
# For reference on this & the later cache actions, see: | ||
# https://github.com/actions/cache/issues/239#issuecomment-606950711 & | ||
# https://github.com/actions/cache/issues/109#issuecomment-558771281. Note that these work | ||
# with Bazel since Bazel can share the most recent cache from an unrelated build and still | ||
# benefit from incremental build performance (assuming that actions/cache aggressively removes | ||
# older caches due to the 5GB cache limit size & Bazel's large cache size). | ||
- uses: actions/cache@v2 | ||
id: cache | ||
with: | ||
path: ${{ env.CACHE_DIRECTORY }} | ||
key: ${{ runner.os }}-${{ env.CACHE_DIRECTORY }}-bazel-binary-${{ github.sha }} | ||
restore-keys: | | ||
${{ runner.os }}-${{ env.CACHE_DIRECTORY }}-bazel-binary- | ||
${{ runner.os }}-${{ env.CACHE_DIRECTORY }}-bazel- | ||
# This check is needed to ensure that Bazel's unbounded cache growth doesn't result in a | ||
# situation where the cache never updates (e.g. due to exceeding GitHub's cache size limit) | ||
# thereby only ever using the last successful cache version. This solution will result in a | ||
# few slower CI actions around the time cache is detected to be too large, but it should | ||
# incrementally improve thereafter. | ||
- name: Ensure cache size | ||
env: | ||
BAZEL_CACHE_DIR: ${{ env.CACHE_DIRECTORY }} | ||
run: | | ||
# See https://stackoverflow.com/a/27485157 for reference. | ||
EXPANDED_BAZEL_CACHE_PATH="${BAZEL_CACHE_DIR/#\~/$HOME}" | ||
CACHE_SIZE_MB=$(du -smc $EXPANDED_BAZEL_CACHE_PATH | grep total | cut -f1) | ||
echo "Total size of Bazel cache (rounded up to MBs): $CACHE_SIZE_MB" | ||
# Use a 4.5GB threshold since actions/cache compresses the results, and Bazel caches seem | ||
# to only increase by a few hundred megabytes across changes for unrelated branches. This | ||
# is also a reasonable upper-bound (local tests as of 2021-03-31 suggest that a full build | ||
# of the codebase (e.g. //...) from scratch only requires a ~2.1GB uncompressed/~900MB | ||
# compressed cache). | ||
if [[ "$CACHE_SIZE_MB" -gt 4500 ]]; then | ||
echo "Cache exceeds cut-off; resetting it (will result in a slow build)" | ||
rm -rf $EXPANDED_BAZEL_CACHE_PATH | ||
fi | ||
- name: Configure Bazel to use a local cache | ||
env: | ||
BAZEL_CACHE_DIR: ${{ env.CACHE_DIRECTORY }} | ||
run: | | ||
EXPANDED_BAZEL_CACHE_PATH="${BAZEL_CACHE_DIR/#\~/$HOME}" | ||
echo "Using $EXPANDED_BAZEL_CACHE_PATH as Bazel's cache path" | ||
echo "build --disk_cache=$EXPANDED_BAZEL_CACHE_PATH" >> $HOME/.bazelrc | ||
shell: bash | ||
|
||
# This checks out the actual true develop branch separately to ensure that the stats check is | ||
# run from the latest develop rather than the base branch (which might be different for | ||
# chained PRs). | ||
- name: Check out develop repository | ||
uses: actions/checkout@v4 | ||
with: | ||
path: develop | ||
|
||
- name: Set up build environment | ||
uses: ./develop/.github/actions/set-up-android-bazel-build-environment | ||
|
||
- name: Check Bazel environment | ||
run: | | ||
cd develop | ||
bazel info | ||
- name: Check out base repository and branch | ||
env: | ||
PR_BASE_REF_NAME: ${{ matrix.prInfo.baseRefName }} | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
ref: ${{ env.PR_BASE_REF_NAME }} | ||
path: base | ||
|
||
- name: Check out head repository and branch | ||
env: | ||
PR_HEAD_REF_NAME: ${{ matrix.prInfo.headRefName }} | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
repository: ${{ env.PR_HEAD }} | ||
ref: ${{ env.PR_HEAD_REF_NAME }} | ||
path: head | ||
|
||
# Note that Bazel is shutdown between builds since multiple Bazel servers will otherwise end | ||
# up being active (due to multiple repositories being used) and this can quickly overwhelm CI | ||
# worker resources. | ||
- name: Build Oppia dev, alpha, beta, and GA (feature branch) | ||
run: | | ||
cd head | ||
git log -n 1 | ||
bazel build -- //:oppia_dev //:oppia_alpha //:oppia_beta //:oppia_ga | ||
cp bazel-bin/oppia_dev.aab ../develop/oppia_dev_with_changes.aab | ||
cp bazel-bin/oppia_alpha.aab ../develop/oppia_alpha_with_changes.aab | ||
cp bazel-bin/oppia_beta.aab ../develop/oppia_beta_with_changes.aab | ||
cp bazel-bin/oppia_ga.aab ../develop/oppia_ga_with_changes.aab | ||
bazel shutdown | ||
- name: Build Oppia dev, alpha, beta, and GA (base branch) | ||
run: | | ||
cd base | ||
git log -n 1 | ||
bazel build -- //:oppia_dev //:oppia_alpha //:oppia_beta //:oppia_ga | ||
cp bazel-bin/oppia_dev.aab ../develop/oppia_dev_without_changes.aab | ||
cp bazel-bin/oppia_alpha.aab ../develop/oppia_alpha_without_changes.aab | ||
cp bazel-bin/oppia_beta.aab ../develop/oppia_beta_without_changes.aab | ||
cp bazel-bin/oppia_ga.aab ../develop/oppia_ga_without_changes.aab | ||
bazel shutdown | ||
- name: Run stats analysis tool (develop branch) | ||
run: | | ||
cd develop | ||
git log -n 1 | ||
bazel run //scripts:compute_aab_differences -- \ | ||
$(pwd)/brief_build_summary.log $(pwd)/full_build_summary.log \ | ||
dev $(pwd)/oppia_dev_without_changes.aab $(pwd)/oppia_dev_with_changes.aab \ | ||
alpha $(pwd)/oppia_alpha_without_changes.aab $(pwd)/oppia_alpha_with_changes.aab \ | ||
beta $(pwd)/oppia_beta_without_changes.aab $(pwd)/oppia_beta_with_changes.aab \ | ||
ga $(pwd)/oppia_ga_without_changes.aab $(pwd)/oppia_ga_with_changes.aab | ||
# Reference: https://github.com/peter-evans/create-or-update-comment#setting-the-comment-body-from-a-file. | ||
# Also, for multi-line env values, see: https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings. | ||
- name: Extract reports for uploading & commenting | ||
env: | ||
PR_NUMBER: ${{ matrix.prInfo.number }} | ||
id: compute-comment-body | ||
run: | | ||
{ | ||
echo 'comment_body<<EOF' | ||
cat $GITHUB_WORKSPACE/develop/brief_build_summary.log | ||
echo EOF | ||
} >> "$GITHUB_OUTPUT" | ||
FULL_BUILD_SUMMARY_FILE_NAME="full_build_summary_pr_$PR_NUMBER.log" | ||
FULL_BUILD_SUMMARY_FILE_PATH="$GITHUB_WORKSPACE/develop/$FULL_BUILD_SUMMARY_FILE_NAME" | ||
echo "FULL_BUILD_SUMMARY_FILE_NAME=$FULL_BUILD_SUMMARY_FILE_NAME" >> "$GITHUB_ENV" | ||
echo "FULL_BUILD_SUMMARY_FILE_PATH=$FULL_BUILD_SUMMARY_FILE_PATH" >> "$GITHUB_ENV" | ||
cp "$GITHUB_WORKSPACE/develop/full_build_summary.log" "$FULL_BUILD_SUMMARY_FILE_PATH" | ||
- name: Add build stats summary comment | ||
env: | ||
PR_NUMBER: ${{ matrix.prInfo.number }} | ||
uses: peter-evans/create-or-update-comment@v1 | ||
with: | ||
issue-number: ${{ env.PR_NUMBER }} | ||
body: ${{ steps.compute-comment-body.outputs.comment_body }} | ||
|
||
- uses: actions/upload-artifact@v2 | ||
with: | ||
name: ${{ env.FULL_BUILD_SUMMARY_FILE_NAME }} | ||
path: ${{ env.FULL_BUILD_SUMMARY_FILE_PATH }} |
This file contains hidden or 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
This file contains hidden or 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
BUILD_SDK_VERSION = 33 | ||
BUILD_TOOLS_VERSION = "29.0.2" |
This file contains hidden or 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
This file contains hidden or 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
69 changes: 69 additions & 0 deletions
69
scripts/src/java/org/oppia/android/scripts/apkstats/Aapt2Client.kt
This file contains hidden or 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
package org.oppia.android.scripts.apkstats | ||
|
||
import org.oppia.android.scripts.common.CommandExecutor | ||
import org.oppia.android.scripts.common.CommandExecutorImpl | ||
import org.oppia.android.scripts.common.ScriptBackgroundCoroutineDispatcher | ||
import java.io.File | ||
|
||
/** | ||
* General utility for interfacing with AAPT2 in the local system at the specified working directory | ||
* path and contained within the specified Android SDK (per the given path). | ||
* | ||
* Note that in order for binary dependencies to utilize this client, they must add a 'data' | ||
* dependency on the AAPT2 binary included as part of the Android SDK, e.g.: | ||
* | ||
* ```bazel | ||
* data = ["@androidsdk//:aapt2_binary"] | ||
* ``` | ||
* | ||
* @property workingDirectoryPath the path to the working directory in which instances of AAPT2 | ||
* should be executed | ||
* @property buildToolsVersion the version of Android build tools installed & that should be used. | ||
* This value should be coordinated with the build system used by the APKs accessed by this | ||
* utility. | ||
* @param scriptBgDispatcher the [ScriptBackgroundCoroutineDispatcher] to be used for running the | ||
* AAPT2 command | ||
* @property commandExecutor the [CommandExecutor] to use when accessing AAPT2 | ||
*/ | ||
class Aapt2Client( | ||
private val workingDirectoryPath: String, | ||
private val buildToolsVersion: String, | ||
scriptBgDispatcher: ScriptBackgroundCoroutineDispatcher, | ||
private val commandExecutor: CommandExecutor = CommandExecutorImpl(scriptBgDispatcher) | ||
) { | ||
private val workingDirectory by lazy { File(workingDirectoryPath) } | ||
// Note that this pathing will not work by default on Windows (since executables end with '.exe'). | ||
private val aapt2Path by lazy { | ||
File("external/androidsdk", "build-tools/$buildToolsVersion/aapt2").absolutePath | ||
} | ||
|
||
// CLI reference: https://developer.android.com/studio/command-line/apkanalyzer. | ||
|
||
/** Returns the permissions dump as reported by AAPT2 for the specified APK. */ | ||
fun dumpPermissions(inputApkPath: String): List<String> { | ||
return executeApkAnalyzerCommand("dump", "permissions", inputApkPath) | ||
} | ||
|
||
/** Returns the resources dump as reported by AAPT2 for the specified APK. */ | ||
fun dumpResources(inputApkPath: String): List<String> { | ||
return executeApkAnalyzerCommand("dump", "resources", inputApkPath) | ||
} | ||
|
||
/** | ||
* Returns badging information, that is, high-level details like supported locales and densities, | ||
* from the specified APK's manifest. | ||
*/ | ||
fun dumpBadging(inputApkPath: String): List<String> { | ||
return executeApkAnalyzerCommand("dump", "badging", inputApkPath) | ||
} | ||
|
||
private fun executeApkAnalyzerCommand(vararg arguments: String): List<String> { | ||
val result = commandExecutor.executeCommand(workingDirectory, aapt2Path, *arguments) | ||
check(result.exitCode == 0) { | ||
"Expected zero exit code (not ${result.exitCode}) for command: ${result.command}." + | ||
"\nStandard output:\n${result.output.joinToString("\n")}" + | ||
"\nError output:\n${result.errorOutput.joinToString("\n")}" | ||
} | ||
return result.output | ||
} | ||
} |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.