Update dependency org.jetbrains.kotlinx:kotlinx-serialization-json to v1.7.3 #727
Workflow file for this run
This file contains 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
name: Android and iOS CI Pipeline | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
types: [opened, synchronize] | |
concurrency: | |
group: ci-${{ github.ref }}-${{ github.head_ref }} | |
cancel-in-progress: true | |
env: | |
JDK_VERSION: 17 | |
DISTRIBUTION: 'zulu' | |
jobs: | |
android: | |
runs-on: ubuntu-latest | |
env: | |
TMDB_API_KEY: ${{ secrets.TMDB_API_KEY }} | |
TMDB_API_URL: ${{ secrets.TMDB_API_URL }} | |
TRAKT_CLIENT_ID: ${{ secrets.TRAKT_CLIENT_ID }} | |
TRAKT_CLIENT_SECRET: ${{ secrets.TRAKT_CLIENT_SECRET }} | |
TRAKT_REDIRECT_URI: ${{ secrets.TRAKT_REDIRECT_URI }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Set up JDK | |
uses: actions/setup-java@v4 | |
with: | |
distribution: ${{ env.DISTRIBUTION }} | |
java-version: ${{ env.JDK_VERSION }} | |
- name: Setup Gradle | |
uses: gradle/[email protected] | |
- name: Add App Secrets | |
run: | | |
echo "TMDB_API_KEY=$TMDB_API_KEY" >> ./local.properties | |
echo "\TMDB_API_URL=$TMDB_API_URL" >> ./local.properties | |
echo "\TRAKT_CLIENT_ID=$TRAKT_CLIENT_ID" >> ./local.properties | |
echo "\TRAKT_CLIENT_SECRET=$TRAKT_CLIENT_SECRET" >> ./local.properties | |
echo "\TRAKT_REDIRECT_URI=$TRAKT_REDIRECT_URI" >> ./local.properties | |
- name: Build with Gradle | |
run: ./gradlew assemble | |
android_lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: ${{ env.DISTRIBUTION }} | |
java-version: ${{ env.JDK_VERSION }} | |
- name: Lint Project | |
run: ./gradlew lint | |
- name: Upload Lint Report | |
uses: actions/upload-artifact@v4 | |
with: | |
name: android-lint-report | |
path: app/build/reports/lint-results*.html | |
spotless: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: ${{ env.DISTRIBUTION }} | |
java-version: ${{ env.JDK_VERSION }} | |
- name: Run Spotless | |
run: ./gradlew spotlessCheck | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: spotless-report | |
path: ./**/build/reports/spotless/spotless.* | |
dependency-health: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: ${{ env.DISTRIBUTION }} | |
java-version: ${{ env.JDK_VERSION }} | |
- name: Dependency Health | |
run: ./gradlew buildHealth | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: dependency-health-report | |
path: ./**/build/reports/tests/ | |
jvm_test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: ${{ env.DISTRIBUTION }} | |
java-version: ${{ env.JDK_VERSION }} | |
- name: Jvm Test | |
run: ./gradlew jvmTest | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: jvm-test-report | |
path: ./**/build/reports/tests/ | |
common_test: | |
runs-on: macos-latest | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: Set up JDK | |
uses: actions/setup-java@v4 | |
with: | |
distribution: ${{ env.DISTRIBUTION }} | |
java-version: ${{ env.JDK_VERSION }} | |
- name: Run Common iOS Unit Tests | |
run: | | |
if [[ $(uname -m) == 'arm64' ]]; then | |
./gradlew clean iosSimulatorArm64Test | |
else | |
./gradlew clean iosX64Test | |
fi | |
- name: Upload Common Test Report | |
uses: actions/upload-artifact@v4 | |
with: | |
name: common-test-report | |
path: ./**/build/reports/tests/ | |
android_screenshot_test: | |
runs-on: macos-latest | |
permissions: | |
contents: write | |
pull-requests: write | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: Set up JDK | |
uses: actions/setup-java@v4 | |
with: | |
distribution: ${{ env.DISTRIBUTION }} | |
java-version: ${{ env.JDK_VERSION }} | |
- name: Roborazzi screenshot tests | |
id: screenshotsverify | |
continue-on-error: true | |
run: ./gradlew clean verifyRoborazziDevDebug | |
- name: Generate Roborazzi screenshot Report | |
id: screenshots-report | |
continue-on-error: true | |
run: ./gradlew compareRoborazziDebug | |
- 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." && 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 recordRoborazziDevDebug | |
- 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: "🤖 Beep Beep: Update screenshots 🤖" | |
- name: Upload screenshot results | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: screenshot-test-results | |
path: '**/build/outputs/roborazzi/*_compare.png' | |
iOS: | |
runs-on: macos-latest | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: Set up JDK | |
uses: actions/setup-java@v4 | |
with: | |
java-version: 17 | |
distribution: 'zulu' | |
- name: Run Common iOS Unit Tests | |
run: | | |
if [[ $(uname -m) == 'arm64' ]]; then | |
./gradlew iosSimulatorArm64Test | |
else | |
./gradlew iosX64Test | |
fi | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: unit-test-report | |
path: ./**/build/reports/tests/ | |
create-release: | |
needs: [android, android_lint, android_screenshot_test, common_test, iOS, spotless, jvm_test, ] | |
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up JDK | |
uses: actions/setup-java@v4 | |
with: | |
java-version: 17 | |
distribution: 'zulu' | |
- name: Create release | |
uses: softprops/action-gh-release@v2 | |
if: startsWith(github.ref, 'refs/tags/') | |
with: | |
draft: true | |
files: android/app/build/outputs/apk/dev/debug/app-dev-debug.apk | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Upload build outputs (APKs) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build-outputs | |
path: android/app/build/outputs |