Librechat-Mobile/.github/workflows/ci.yml

143 lines
3.3 KiB
YAML

name: CI
on:
push:
branches: [ develop ]
pull_request:
branches: [ develop ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
permissions:
contents: read
security-events: write
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: 21
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Run lint
run: ./gradlew detekt detektMetadataCommonMain :app:lint --continue
- name: Upload detekt SARIF
if: always() && hashFiles('build/reports/detekt/merged.sarif') != ''
uses: github/codeql-action/upload-sarif@v4
with:
sarif_file: build/reports/detekt/merged.sarif
category: detekt
- name: Upload lint report
if: always()
uses: actions/upload-artifact@v6
with:
name: lint-report
path: app/build/reports/lint-results-debug.html
if-no-files-found: ignore
test:
name: Test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: 21
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Run tests
run: ./gradlew test
- name: Upload test results
if: always()
uses: actions/upload-artifact@v6
with:
name: test-results
path: '**/build/test-results/test*/TEST-*.xml'
if-no-files-found: ignore
android:
name: Build Android App
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: 21
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Build debug APK
run: ./gradlew :app:assembleDebug
ios:
name: Build iOS App
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Select Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: 21
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Cache Kotlin/Native toolchain
uses: actions/cache@v5
with:
path: ~/.konan
key: ${{ runner.os }}-konan-${{ hashFiles('gradle/libs.versions.toml') }}
restore-keys: ${{ runner.os }}-konan-
- name: Build shared KMP framework
run: ./gradlew :shared:linkDebugFrameworkIosSimulatorArm64
- name: Build iOS app
run: |
xcodebuild -project iosApp/iosApp.xcodeproj \
-scheme iosApp \
-sdk iphonesimulator \
-destination 'generic/platform=iOS Simulator' \
-configuration Debug \
build \
CODE_SIGNING_ALLOWED=NO \
ARCHS=arm64 \
ONLY_ACTIVE_ARCH=YES