Skip to content

Update dependency androidx.constraintlayout:constraintlayout-compose to v1.1.0 #862

Update dependency androidx.constraintlayout:constraintlayout-compose to v1.1.0

Update dependency androidx.constraintlayout:constraintlayout-compose to v1.1.0 #862

Workflow file for this run

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: 21
DISTRIBUTION: 'zulu'
FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: 120
jobs:
build-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/
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 recordRoborazziDebug
- 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'
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/
build-ios:
runs-on: macos-latest
timeout-minutes: 180
steps:
- name: Checkout project
uses: actions/checkout@v4
- name: Setup Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: 16.0
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.3.0
bundler-cache: true
- name: Install dependencies with Bundler
run: bundle install
- name: Build iOS App
run: bundle exec fastlane build_tvmaniac
- name: Clear Derived Data
run: bundle exec fastlane clear_derived_data_lane
# - name: Run UI Tests
# run: bundle exec fastlane ui_tests
- name: Upload test results
uses: actions/upload-artifact@v4
if: failure()
with:
name: test-results
path: fastlane/test_output
create-release:
needs: [build-android, android_lint, android_screenshot_test, common_test, build-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: 21
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