Files
NexaMFA/.gitea/workflows/ci.yml
T
nessi 155008fc78
NexaMFA CI / backend (push) Successful in 14s
NexaMFA CI / frontend (push) Successful in 41s
NexaMFA CI / android (push) Failing after 2m26s
ci: replace Gradle setup action with manual installation and pin frontend dependencies
Replace gradle/actions/setup-gradle with manual Gradle 8.8 installation to resolve compatibility issues. Pin all frontend dependencies to specific versions instead of using 'latest' for reproducible builds. Update TypeScript moduleResolution to 'Bundler' and add Vite client types.
2026-06-28 09:59:24 +02:00

92 lines
3.1 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
- name: Install Gradle
run: |
apt-get update
apt-get install -y curl unzip
curl -fsSL https://services.gradle.org/distributions/gradle-8.8-bin.zip -o /tmp/gradle-8.8-bin.zip
unzip -q /tmp/gradle-8.8-bin.zip -d /opt
/opt/gradle-8.8/bin/gradle --version
- 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: |
/opt/gradle-8.8/bin/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