Skip to content

Validate empty results #3134

Validate empty results

Validate empty results #3134

Workflow file for this run

name: CI
on:
push:
branches:
- main
tags:
- v*
pull_request:
jobs:
code-style:
runs-on: macos-latest
timeout-minutes: 60
env:
ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_URL: ${{ secrets.ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_URL }}
ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_USERNAME: ${{ secrets.ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_USERNAME }}
ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_PASSWORD: ${{ secrets.ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_PASSWORD }}
steps:
- uses: actions/checkout@v3
- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
- name: set up JDK
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: 17
- uses: gradle/gradle-build-action@v2
with:
cache-disabled: true
- name: Check convention plugins code style with Spotless
run: ./gradlew -p gradle/build-logic spotlessCheck
- name: Check code style with Spotless
run: ./gradlew spotlessCheck
- name: Check code style with SwiftLint
run: fastlane ios lint
working-directory: ios-app/Tivi
android:
needs: [code-style]
runs-on: ubuntu-latest
timeout-minutes: 60
env:
ORG_GRADLE_PROJECT_TIVI_TMDB_API_KEY: ${{ secrets.ORG_GRADLE_PROJECT_TIVI_TMDB_API_KEY }}
ORG_GRADLE_PROJECT_TIVI_TRAKT_CLIENT_ID: ${{ secrets.ORG_GRADLE_PROJECT_TIVI_TRAKT_CLIENT_ID }}
ORG_GRADLE_PROJECT_TIVI_TRAKT_CLIENT_SECRET: ${{ secrets.ORG_GRADLE_PROJECT_TIVI_TRAKT_CLIENT_SECRET }}
ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_URL: ${{ secrets.ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_URL }}
ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_USERNAME: ${{ secrets.ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_USERNAME }}
ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_PASSWORD: ${{ secrets.ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_PASSWORD }}
ORG_GRADLE_PROJECT_TIVI_RELEASE_KEYSTORE_PWD: ${{ secrets.ORG_GRADLE_PROJECT_TIVI_RELEASE_KEYSTORE_PWD }}
ORG_GRADLE_PROJECT_TIVI_RELEASE_KEY_PWD: ${{ secrets.ORG_GRADLE_PROJECT_TIVI_RELEASE_KEY_PWD }}
steps:
- name: Generate build number
shell: bash
run: echo "ORG_GRADLE_PROJECT_TIVI_VERSIONCODE=$(( $GITHUB_RUN_NUMBER + 10000 ))" >> $GITHUB_ENV
- uses: actions/checkout@v3
- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
- name: set up JDK
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: 17
- uses: gradle/gradle-build-action@v2
with:
cache-disabled: true
- name: Decrypt secrets
run: ./release/decrypt-secrets.sh
env:
ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }}
- name: Build Android App (skipping benchmark variant)
run: |
./gradlew \
:android-app:app:bundle \
:android-app:app:build \
lint \
-x :android-app:app:assembleStandardBenchmark \
-x :android-app:app:bundleStandardBenchmark
# - name: Run smoke tests on Gradle Managed Device
# # --info used to add a repro to https://issuetracker.google.com/issues/193118030
# # config cache is disabled due to https://issuetracker.google.com/issues/262270582
# run: |
# ./gradlew api31QaDebugAndroidTest \
# -Dorg.gradle.workers.max=1 \
# -Pandroid.testoptions.manageddevices.emulator.gpu="swiftshader_indirect" \
# --info \
# --no-configuration-cache
- name: Clean secrets
if: always()
run: ./release/clean-secrets.sh
- name: Upload build outputs
if: always()
uses: actions/upload-artifact@v3
with:
name: android-build-outputs
path: android-app/app/build/outputs
- name: Upload reports
if: always()
uses: actions/upload-artifact@v3
with:
name: android-reports
path: |
**/build/reports/*
- name: Upload test results
if: always()
uses: actions/upload-artifact@v3
with:
name: android-test-results
path: |
**/build/test-results/*
desktop:
needs: [code-style]
runs-on: ubuntu-latest
timeout-minutes: 60
env:
ORG_GRADLE_PROJECT_TIVI_TMDB_API_KEY: ${{ secrets.ORG_GRADLE_PROJECT_TIVI_TMDB_API_KEY }}
ORG_GRADLE_PROJECT_TIVI_TRAKT_CLIENT_ID: ${{ secrets.ORG_GRADLE_PROJECT_TIVI_TRAKT_CLIENT_ID }}
ORG_GRADLE_PROJECT_TIVI_TRAKT_CLIENT_SECRET: ${{ secrets.ORG_GRADLE_PROJECT_TIVI_TRAKT_CLIENT_SECRET }}
ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_URL: ${{ secrets.ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_URL }}
ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_USERNAME: ${{ secrets.ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_USERNAME }}
ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_PASSWORD: ${{ secrets.ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_PASSWORD }}
steps:
- uses: actions/checkout@v3
- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
- name: set up JDK
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: 17
- uses: gradle/gradle-build-action@v2
with:
cache-disabled: true
- name: Build Desktop App
run: ./gradlew jvmTest :desktop-app:packageDistributionForCurrentOS
- name: Upload build outputs
if: always()
uses: actions/upload-artifact@v3
with:
name: desktop-build-binaries
path: desktop-app/build/compose/binaries
- name: Upload reports
if: always()
uses: actions/upload-artifact@v3
with:
name: desktop-reports
path: |
**/build/reports/*
- name: Upload test results
if: always()
uses: actions/upload-artifact@v3
with:
name: desktop-test-results
path: |
**/build/test-results/*
ios-app:
needs: [code-style]
runs-on: macos-latest
timeout-minutes: 60
env:
ORG_GRADLE_PROJECT_TIVI_TMDB_API_KEY: ${{ secrets.ORG_GRADLE_PROJECT_TIVI_TMDB_API_KEY }}
ORG_GRADLE_PROJECT_TIVI_TRAKT_CLIENT_ID: ${{ secrets.ORG_GRADLE_PROJECT_TIVI_TRAKT_CLIENT_ID }}
ORG_GRADLE_PROJECT_TIVI_TRAKT_CLIENT_SECRET: ${{ secrets.ORG_GRADLE_PROJECT_TIVI_TRAKT_CLIENT_SECRET }}
ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_URL: ${{ secrets.ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_URL }}
ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_USERNAME: ${{ secrets.ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_USERNAME }}
ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_PASSWORD: ${{ secrets.ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_PASSWORD }}
FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: 60
steps:
- uses: actions/checkout@v3
- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
- name: set up JDK
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: 17
- uses: gradle/gradle-build-action@v2
with:
cache-disabled: true
- name: Decrypt secrets
run: ./release/decrypt-secrets.sh
env:
ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }}
- name: Build iOS application
run: fastlane ios build
working-directory: ios-app/Tivi
env:
API_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ID }}
API_KEY_CONTENTS: ${{ secrets.APP_STORE_CONNECT_API_KEY_CONTENTS }}
ISSUER_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_ISSUER_ID }}
MATCH_PASSWORD: ${{ secrets.FASTLANE_MATCH_PASSWORD }}
MATCH_GIT_BASIC_AUTHORIZATION: ${{ secrets.FASTLANE_MATCH_GH_PAT }}
TIVI_BUILD_NUMBER: ${{ github.run_number }}
- name: Upload build outputs
if: always()
continue-on-error: true
uses: actions/upload-artifact@v3
with:
name: ios-build-outputs
path: |
ios-app/Tivi/*.ipa
ios-app/Tivi/*.dSYM.zip
- name: Upload build logs
if: always()
uses: actions/upload-artifact@v3
with:
name: ios-logs
path: |
**/fastlane-buildlog
ios-test:
needs: [code-style]
runs-on: macos-latest
timeout-minutes: 60
env:
ORG_GRADLE_PROJECT_TIVI_TMDB_API_KEY: ${{ secrets.ORG_GRADLE_PROJECT_TIVI_TMDB_API_KEY }}
ORG_GRADLE_PROJECT_TIVI_TRAKT_CLIENT_ID: ${{ secrets.ORG_GRADLE_PROJECT_TIVI_TRAKT_CLIENT_ID }}
ORG_GRADLE_PROJECT_TIVI_TRAKT_CLIENT_SECRET: ${{ secrets.ORG_GRADLE_PROJECT_TIVI_TRAKT_CLIENT_SECRET }}
ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_URL: ${{ secrets.ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_URL }}
ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_USERNAME: ${{ secrets.ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_USERNAME }}
ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_PASSWORD: ${{ secrets.ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_PASSWORD }}
steps:
- uses: actions/checkout@v3
- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
- name: set up JDK
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: 17
- uses: gradle/gradle-build-action@v2
with:
cache-disabled: true
- name: iosX64Test
# Disable CC due to https://github.com/google/ksp/issues/1463
run: ./gradlew iosX64Test --no-configuration-cache
- name: Upload reports
if: always()
uses: actions/upload-artifact@v3
with:
name: ios-reports
path: |
**/build/reports/*
- name: Upload test results
if: always()
uses: actions/upload-artifact@v3
with:
name: ios-test-results
path: |
**/build/test-results/*
publish:
if: github.ref == 'refs/heads/main'
needs: [android, ios-app, ios-test, desktop]
runs-on: macos-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v3
- name: Decrypt secrets
run: ./release/decrypt-secrets.sh
env:
ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }}
- uses: actions/download-artifact@v3
with:
name: android-build-outputs
path: android-app/app/build/outputs
- name: Publish QA build to internal track
uses: r0adkll/upload-google-play@v1.1.1
with:
serviceAccountJson: release/play-account.json
packageName: app.tivi
track: internal
releaseFiles: android-app/app/build/outputs/bundle/qaRelease/app-qa-release.aab
mappingFile: android-app/app/build/outputs/mapping/qaRelease/mapping.txt
- name: Publish build to alpha track
uses: r0adkll/upload-google-play@v1.1.1
with:
serviceAccountJson: release/play-account.json
packageName: app.tivi
track: alpha
releaseFiles: android-app/app/build/outputs/bundle/standardRelease/app-standard-release.aab
mappingFile: android-app/app/build/outputs/mapping/standardRelease/mapping.txt
- uses: actions/download-artifact@v3
with:
name: ios-build-outputs
path: ios-app/Tivi
- name: Publish to TestFlight
run: fastlane ios uploadtestflight
working-directory: ios-app/Tivi
env:
API_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ID }}
API_KEY_CONTENTS: ${{ secrets.APP_STORE_CONNECT_API_KEY_CONTENTS }}
ISSUER_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_ISSUER_ID }}
MATCH_PASSWORD: ${{ secrets.FASTLANE_MATCH_PASSWORD }}
MATCH_GIT_BASIC_AUTHORIZATION: ${{ secrets.FASTLANE_MATCH_GH_PAT }}