Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
201 changes: 129 additions & 72 deletions .github/workflows/Build.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Build
name: CI

on:
workflow_dispatch:
Expand All @@ -12,37 +12,30 @@ concurrency:
cancel-in-progress: true

jobs:
test_and_apk:
name: "Local tests and APKs"
checks:
runs-on: ubuntu-latest

permissions:
contents: write
pull-requests: write
security-events: write

timeout-minutes: 60

timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: actions/checkout@v4

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

- name: Set up JDK 21
uses: actions/setup-java@v4
- uses: actions/setup-java@v5
with:
distribution: 'zulu'
distribution: zulu
java-version: 21

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- uses: gradle/actions/setup-gradle@v4
with:
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
build-scan-publish: true
build-scan-terms-of-use-url: "https://gradle.com/terms-of-service"
build-scan-terms-of-use-agree: "yes"
build-scan-terms-of-use-url: https://gradle.com/terms-of-service
build-scan-terms-of-use-agree: yes

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

- name: Check build-logic
run: ./gradlew :build-logic:convention:check
Expand Down Expand Up @@ -99,38 +92,29 @@ jobs:
disable_globbing: true
commit_message: "🤖 Updates graphs"

- name: Run all local screenshot tests (Roborazzi)
id: screenshotsverify
continue-on-error: true
run: ./gradlew verifyRoborazziDemoDebug
- name: Check badging
run: ./gradlew :app:checkProdReleaseBadging

- name: Prevent pushing new screenshots if this is a fork
id: checkfork_screenshots
continue-on-error: false
if: steps.screenshotsverify.outcome == 'failure' && github.event.pull_request.head.repo.full_name != github.repository
run: |
echo "::error::Screenshot tests failed, please create a PR in your fork first."
echo "Your fork's CI will take screenshots for your fork."
exit 1
assemble:
runs-on: ubuntu-latest
timeout-minutes: 40
steps:
- uses: actions/checkout@v4

# Runs if previous job failed
- name: Generate new screenshots if verification failed and it's a PR
id: screenshotsrecord
if: steps.screenshotsverify.outcome == 'failure' && github.event_name == 'pull_request'
run: |
./gradlew recordRoborazziDemoDebug
- uses: actions/setup-java@v5
with:
distribution: zulu
java-version: 21

- name: Push new screenshots if available
uses: stefanzweifel/git-auto-commit-action@v5
if: steps.screenshotsrecord.outcome == 'success'
- uses: gradle/actions/setup-gradle@v4
with:
file_pattern: '*/*.png'
disable_globbing: true
commit_message: "🤖 Updates screenshots"
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
build-scan-publish: true
build-scan-terms-of-use-url: https://gradle.com/terms-of-service
build-scan-terms-of-use-agree: yes

# Run local tests after screenshot tests to avoid wrong UP-TO-DATE. TODO: Ignore screenshots.
- name: Run local tests
run: ./gradlew testDemoDebug :lint:test
- name: Copy CI gradle.properties
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties

- name: Build all build type and flavor permutations
run: ./gradlew :app:assemble -PminifyWithR8=false
Expand All @@ -141,19 +125,26 @@ jobs:
name: APKs
path: '**/build/outputs/apk/**/*.apk'

- name: Upload JVM local results (XML)
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
lint:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4

- uses: actions/setup-java@v5
with:
name: local-test-results
path: '**/build/test-results/test*UnitTest/**.xml'
distribution: zulu
java-version: 21

- name: Upload screenshot results (PNG)
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
- uses: gradle/actions/setup-gradle@v4
with:
name: screenshot-test-results
path: '**/build/outputs/roborazzi/*_compare.png'
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
build-scan-publish: true
build-scan-terms-of-use-url: https://gradle.com/terms-of-service
build-scan-terms-of-use-agree: yes

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

- name: Check lint
run: ./gradlew :app:lintProdRelease :app-nia-catalog:lintRelease :lint:lint
Expand Down Expand Up @@ -186,10 +177,79 @@ jobs:
sarif_file: './lint/'
category: lint

- name: Check badging
run: ./gradlew :app:checkProdReleaseBadging
unit-tests:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
security-events: write
timeout-minutes: 20
steps:
- uses: actions/checkout@v4

- uses: actions/setup-java@v5
with:
distribution: zulu
java-version: 21

- uses: gradle/actions/setup-gradle@v4
with:
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
build-scan-publish: true
build-scan-terms-of-use-url: https://gradle.com/terms-of-service
build-scan-terms-of-use-agree: yes

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

- name: Run all local screenshot tests (Roborazzi)
id: screenshotsverify
continue-on-error: true
run: ./gradlew verifyRoborazziDemoDebug

- name: Prevent pushing new screenshots if this is a fork
id: checkfork_screenshots
continue-on-error: false
if: steps.screenshotsverify.outcome == 'failure' && github.event.pull_request.head.repo.full_name != github.repository
run: |
echo "::error::Screenshot tests failed, please create a PR in your fork first."
echo "Your fork's CI will take screenshots for your fork."
exit 1

# Runs if previous job failed
- name: Generate new screenshots if verification failed and it's a PR
id: screenshotsrecord
if: steps.screenshotsverify.outcome == 'failure' && github.event_name == 'pull_request'
run: |
./gradlew recordRoborazziDemoDebug

androidTest:
- name: Push new screenshots if available
uses: stefanzweifel/git-auto-commit-action@v5
if: steps.screenshotsrecord.outcome == 'success'
with:
file_pattern: '*/*.png'
disable_globbing: true
commit_message: "🤖 Updates screenshots"

# Run local tests after screenshot tests to avoid wrong UP-TO-DATE. TODO: Ignore screenshots.
- name: Run local tests
run: ./gradlew testDemoDebug :lint:test

- name: Upload JVM local results (XML)
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: local-test-results
path: '**/build/test-results/test*UnitTest/**.xml'

- name: Upload screenshot results (PNG)
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: screenshot-test-results
path: '**/build/outputs/roborazzi/*_compare.png'

instrumented-tests:
runs-on: ubuntu-latest
timeout-minutes: 55
strategy:
Expand All @@ -208,32 +268,29 @@ jobs:
docker-images: false # Takes 16s, enable if needed in the future
large-packages: false # includes google-cloud-sdk and it's slow

- uses: actions/checkout@v4

- name: Enable KVM group perms
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
ls /dev/kvm

- name: Checkout
uses: actions/checkout@v4

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

- name: Set up JDK 21
uses: actions/setup-java@v4
- uses: actions/setup-java@v5
with:
distribution: 'zulu'
distribution: zulu
java-version: 21

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- uses: gradle/actions/setup-gradle@v4
with:
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
build-scan-publish: true
build-scan-terms-of-use-url: "https://gradle.com/terms-of-service"
build-scan-terms-of-use-agree: "yes"
build-scan-terms-of-use-url: https://gradle.com/terms-of-service
build-scan-terms-of-use-agree: yes

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

- name: Build projects and run instrumentation tests
uses: reactivecircus/android-emulator-runner@v2
Expand Down
26 changes: 10 additions & 16 deletions .github/workflows/NightlyBaselineProfiles.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@ jobs:
timeout-minutes: 60

steps:
- name: Checkout
uses: actions/checkout@v4
- uses: actions/checkout@v4

- name: Enable KVM group perms
run: |
Expand All @@ -27,32 +26,27 @@ jobs:
sudo udevadm trigger --name-match=kvm
ls /dev/kvm

- 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@v4
- uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: 17
distribution: zulu
java-version: 21

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- uses: gradle/actions/setup-gradle@v4
with:
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
build-scan-publish: true
build-scan-terms-of-use-url: "https://gradle.com/terms-of-service"
build-scan-terms-of-use-agree: "yes"
build-scan-terms-of-use-url: https://gradle.com/terms-of-service
build-scan-terms-of-use-agree: yes

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

- name: Setup Android SDK
uses: android-actions/setup-android@v3

- name: Accept licenses
run: yes | sdkmanager --licenses || true

- name: Check build-logic
run: ./gradlew :build-logic:convention:check

- name: Setup GMD
run: ./gradlew :benchmarks:pixel6Api33Setup
--info
Expand Down
27 changes: 12 additions & 15 deletions .github/workflows/Release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,33 +13,29 @@ jobs:
timeout-minutes: 120

steps:
- uses: actions/checkout@v4

- name: Enable KVM group perms
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
ls /dev/kvm

- name: Checkout

uses: actions/checkout@v4

- 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@v4
- uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: 17
distribution: zulu
java-version: 21

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- uses: gradle/actions/setup-gradle@v4
with:
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
build-scan-publish: true
build-scan-terms-of-use-url: "https://gradle.com/terms-of-service"
build-scan-terms-of-use-agree: "yes"
build-scan-terms-of-use-url: https://gradle.com/terms-of-service
build-scan-terms-of-use-agree: yes

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

- name: Setup Android SDK
uses: android-actions/setup-android@v3
Expand All @@ -60,6 +56,7 @@ jobs:
-Pandroid.experimental.testOptions.managedDevices.emulator.showKernelLogging=true
-Pandroid.experimental.androidTest.numManagedDeviceShards=1
-Pandroid.experimental.testOptions.managedDevices.maxConcurrentDevices=1

- name: Create Release
id: create_release
uses: actions/create-release@v1
Expand Down
Loading