* Overall build
* Enable nightly builds
* Enable Startup Profile generation for release builds
* Skip BP generation for regular Builds
* Test baseline profiles for all variants
* Cleanup
* Remove stale baseline-prof.txt
* Add generated profiles to .gitignore
* GMD
* Setup GMD in separate step
* Add GMD setup to all workflows
* Lower GMD specs
* Update GMD and Android SDK setup
* Add options test options for GMD startup
* Ensure only one device is used for bp / benchmark
* Apply guidance from issuetracker b/287312019
* Add new metrics for baseline profile measurement
Added custom metrics to better understand how effective a baseline
profile is. These TraceSectionMetrics keep track of JIT compilations
as well as class initializations which should go down when a BP is
properly applied to the app.
* Remove legacy benchmark build type
Now that we have the baseline profile gradle plugin,
there is no need for a benchmark build type.
The plugin does the setup and configuration and runs against the
correct app flavor.
* Remove explicit benchmark build type from benchmark module
* Remove stale build task exclusions
* Fix tracing import location
FYI @mlykotom
* Run dependencyGuard task during CI
Run the `dependencyGuard` task during CI, which will fail if there are
detected changes.
Change-Id: If5f2b18a4c765bd38a3353df2adaaa91cf1739c3
* Add actions to update dependency guard baselines
* Update baselines
* Better glob for update baselines action
Baseline profile generation is disabled for the PR level Build task. Release tasks require a fresh baseline profile. A new profile is generated using the baseline profile Gradle plugin.
* Prepare for usage of dex layout optimizations which can be actively used once NiA switches to AGP 8.2+.
* Add GMD config to release build
* Switch to macos-latest
* Update names for StartupBenchmark tests to better reflect states
* Stable release and recent GMD device
* Reduce flakiness by adding wait to benchmark
* More convenient waiting for objects
* Rename junit dependency to androidx-junit
* Only run baseline profile benchmarks during GH workflow
* Enable automatic BP generation for only release builds
* Disable BP generation from Build workflow
* Specify modules and skip benchmarking Build workflow
Bug: b/299334172
* [CI] Runs build in macos to generate a cache for androidTest runs
* Build projects before running emulator
* Fixes flaky coroutines test
* Moves spotless up in local tests job
* Enables config cache by setting problems to warn. Fixes#1022
* Adds screenshot tests using Roborazzi (Robolectric Native Graphics)
- Adds Roborazzi to convention plugins
- Adds Screenshot helper in :core-testing
- Creates screenshot suites for :app and :feature-foryou
* CI and spotless
* Moves :app tests to testDemo and makes NiaAppScreenSizesScreenshotTests prettier
* CI: Moves local tests to their own step
* CI: Adds --rerun to screenshot task
* CI: Moves screenshots before local tests
* CI: Fixes wrong if statement in workflow
* CI WIP: trying to trigger the push step
* CI: Re-enables roborazzi verification
* Fixes flaky screenshot tests by setting LocalInspectionMode on
* CI: screenshot commits now use the original author intead of bot account
* CI: Disables globbing because file_pattern didn't work
* CI: Trying new file pattern for png files
* CI: Adds a check for forks
* 🤖 Updates screenshots
* Code review: toml cleanup, comments
* Use new github.event.pull_request.head.repo.fork
Co-authored-by: Simon Marquis <contact@simon-marquis.fr>
* Uses Robolectric qualifiers to set the dpi, adds section to README
* Spotless
* Delegates creation of repository to Hilt in test
* Revert "Use new github.event.pull_request.head.repo.fork"
* 🤖 Updates screenshots
* Empty commit to trigger GHA on main branch
* Makes time zones deterministic in screenshot tests
* Increases GMD timeout to 90m, but it has to be reduced
---------
Co-authored-by: Simon Marquis <contact@simon-marquis.fr>
- Add `--no-parallel --max-workers=1` (was not able to trigger the error locally whit this combination).
- Remove useless `cleanManagedDevices` as devices are not persisted across runs.
- Rename test reports artifact to `test-reports-GMD` similar to `test-reports-${{ matrix.api-level }}`.
- Print disk space usage in case of failure.
- Create `LintConventionPlugin` to configure Lint on all compatible modules: Android applications, Android libraries and JVM modules.
- Run `lintProdRelease` in CI instead of the default `lintDemoDebug` which is less important compared to production code.
- Rearrange CI steps to make it more clear that Lint should is an additional step after build (build -> test -> lint).
- Enable SARIF support and upload results to GitHub's CodeQL to get inline feedback on PRs.
If we really need better perfs, we could restore `lint.checkDependencies = true` on the `:app` module and only execute `:app:lintProdRelease`.
But in practice, this does not change the total build time on this project.