Replace the cirruslabs/android-sdk container with individual setup actions for Java 17, Android SDK, and Gradle 8.8 to improve build flexibility and maintainability.
88 lines
2.8 KiB
YAML
88 lines
2.8 KiB
YAML
name: NexaMFA CI
|
|
|
|
on:
|
|
push:
|
|
branches: ["main", "master"]
|
|
pull_request:
|
|
|
|
jobs:
|
|
backend:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.12"
|
|
- name: Install backend dependencies
|
|
working-directory: backend
|
|
run: |
|
|
pip install --upgrade pip
|
|
pip install ".[test]"
|
|
- name: Run backend tests
|
|
working-directory: backend
|
|
env:
|
|
DATABASE_URL: "sqlite+aiosqlite:///:memory:"
|
|
ENVIRONMENT: "test"
|
|
run: pytest
|
|
- name: Build backend Docker image
|
|
run: docker build -t "nexamfa-backend:${{ github.sha }}" backend
|
|
|
|
frontend:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: "22"
|
|
- name: Build frontend
|
|
working-directory: frontend
|
|
run: |
|
|
npm install
|
|
npm run build
|
|
- name: Build frontend Docker image
|
|
run: docker build -t "nexamfa-frontend:${{ github.sha }}" frontend
|
|
|
|
android:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-java@v4
|
|
with:
|
|
distribution: "temurin"
|
|
java-version: "17"
|
|
- uses: android-actions/setup-android@v3
|
|
- uses: gradle/actions/setup-gradle@v4
|
|
with:
|
|
gradle-version: "8.8"
|
|
- name: Prepare Firebase configuration
|
|
if: "${{ secrets.GOOGLE_SERVICES_JSON_BASE64 != '' }}"
|
|
run: echo "${{ secrets.GOOGLE_SERVICES_JSON_BASE64 }}" | base64 -d > android/app/google-services.json
|
|
- name: Prepare release keystore
|
|
if: "${{ secrets.ANDROID_KEYSTORE_BASE64 != '' }}"
|
|
run: |
|
|
echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 -d > android/release.keystore
|
|
- name: Build Android artifacts
|
|
working-directory: android
|
|
env:
|
|
ANDROID_KEYSTORE_PATH: "${{ github.workspace }}/android/release.keystore"
|
|
ANDROID_KEYSTORE_PASSWORD: "${{ secrets.ANDROID_KEYSTORE_PASSWORD }}"
|
|
ANDROID_KEY_ALIAS: "${{ secrets.ANDROID_KEY_ALIAS }}"
|
|
ANDROID_KEY_PASSWORD: "${{ secrets.ANDROID_KEY_PASSWORD }}"
|
|
run: |
|
|
gradle testDebugUnitTest assembleDebug assembleRelease bundleRelease
|
|
- name: Upload debug APK
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: nexamfa-debug-apk
|
|
path: android/app/build/outputs/apk/debug/*.apk
|
|
- name: Upload release APK
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: nexamfa-release-apk
|
|
path: android/app/build/outputs/apk/release/*.apk
|
|
- name: Upload release AAB
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: nexamfa-release-aab
|
|
path: android/app/build/outputs/bundle/release/*.aab
|