Skip to content

Merge pull request #1691 from google/1.6 #2951

Merge pull request #1691 from google/1.6

Merge pull request #1691 from google/1.6 #2951

Workflow file for this run

name: Build & test
on:
push:
branches:
- main
- compose-1.0
- compose-1.0
- compose-1.1
- compose-1.2
- compose-1.3
- compose-1.4
- compose-1.5
paths-ignore:
- '**.md'
pull_request:
jobs:
build:
# Skip build if head commit contains 'skip ci'
if: "!contains(github.event.head_commit.message, 'skip ci')"
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@v2
with:
# Fetch expanded history, which is needed for affected module detection
fetch-depth: '500'
- name: Copy CI gradle.properties
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
- name: Setup java
uses: actions/setup-java@v3
with:
distribution: temurin
java-version: 17
- name: Decrypt secrets
run: release/signing-setup.sh ${{ secrets.ENCRYPT_KEY }}
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
- name: Build
run: |
./gradlew --scan --stacktrace \
spotlessCheck \
assemble \
metalavaCheckCompatibilityRelease \
lintDebug
- name: Unit Tests
run: |
./scripts/run-tests.sh \
--unit-tests \
--run-affected \
--affected-base-ref=$BASE_REF
- name: Upload test results
if: always()
uses: actions/upload-artifact@v2
with:
name: test-results-robolectric
path: |
**/build/test-results/*
**/build/reports/*
- name: Clean secrets
if: always()
run: release/signing-cleanup.sh
test:
runs-on: macos-latest
needs: build
timeout-minutes: 70
strategy:
# Allow tests to continue on other devices if they fail on one device.
fail-fast: false
matrix:
api-level: [ 22, 26, 29 ]
shard: [ 0, 1 ] # Need to update shard-count below if this changes
env:
TERM: dumb
steps:
- uses: actions/checkout@v3
with:
# Fetch expanded history, which is needed for affected module detection
fetch-depth: '500'
- name: Copy CI gradle.properties
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
- name: Setup java
uses: actions/setup-java@v3
with:
distribution: temurin
java-version: 17
- name: Decrypt secrets
run: release/signing-setup.sh ${{ secrets.ENCRYPT_KEY }}
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
# Determine what emulator image to use. We run all API 28+ emulators using
# the google_apis image
- name: Determine emulator target
id: determine-target
env:
API_LEVEL: ${{ matrix.api-level }}
run: |
TARGET="default"
if [ "$API_LEVEL" -ge "28" ]; then
TARGET="google_apis"
fi
echo "TARGET=$TARGET" >> $GITHUB_OUTPUT
- name: Determine emulator arch
id: determine-arch
env:
API_LEVEL: ${{ matrix.api-level }}
run: |
ARCH="x86"
if [ "$API_LEVEL" -ge "31" ]; then
ARCH="x86_64"
fi
echo "ARCH=$ARCH" >> $GITHUB_OUTPUT
- name: Run tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
arch: ${{ steps.determine-arch.outputs.ARCH }}
target: ${{ steps.determine-target.outputs.TARGET }}
profile: Galaxy Nexus
script: ./scripts/run-tests.sh --log-file=logcat.txt --run-affected --affected-base-ref=$BASE_REF --shard-index=${{ matrix.shard }} --shard-count=2
- name: Clean secrets
if: always()
run: release/signing-cleanup.sh
- name: Upload logs
if: always()
uses: actions/upload-artifact@v2
with:
name: logs-${{ matrix.api-level }}-${{ steps.determine-target.outputs.TARGET }}-${{ matrix.shard }}
path: logcat.txt
- name: Upload test results
if: always()
uses: actions/upload-artifact@v2
with:
name: test-results-${{ matrix.api-level }}-${{ steps.determine-target.outputs.TARGET }}-${{ matrix.shard }}
path: |
**/build/reports/*
**/build/outputs/*/connected/*
deploy:
if: github.event_name == 'push' # only deploy for pushed commits (not PRs)
runs-on: ubuntu-latest
needs: [ build, test ]
timeout-minutes: 30
env:
TERM: dumb
steps:
- uses: actions/checkout@v2
- name: Copy CI gradle.properties
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
- name: Setup java
uses: actions/setup-java@v3
with:
distribution: temurin
java-version: 17
- name: Decrypt secrets
run: release/signing-setup.sh ${{ secrets.ENCRYPT_KEY }}
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
- name: Deploy to Sonatype
run: ./gradlew publish --no-parallel --stacktrace --no-configuration-cache
env:
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.SONATYPE_NEXUS_USERNAME }}
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.SONATYPE_NEXUS_PASSWORD }}
- name: Clean secrets
if: always()
run: release/signing-cleanup.sh