Files
neomovies-mobile/.github/workflows/build.yml
factory-droid[bot] 83842efb68 ci: optimize RAM usage and add CI/CD pipelines
- Reduce Gradle RAM from 4GB to 2GB with optimizations
- Add GitLab CI/CD with separate jobs for TorrentEngine and APK
- Add GitHub Actions workflow as alternative
- Enable parallel builds and caching
- Configure automated artifact uploads
- Add comprehensive CI/CD documentation
2025-10-02 11:14:54 +00:00

186 lines
4.8 KiB
YAML

name: Build NeoMovies Mobile
on:
push:
branches: [ dev, feature/torrent-engine-integration ]
pull_request:
branches: [ dev ]
workflow_dispatch:
env:
FLUTTER_VERSION: '3.35.5'
JAVA_VERSION: '17'
jobs:
# ============================================
# Сборка TorrentEngine модуля
# ============================================
build-torrent-engine:
name: Build TorrentEngine Library
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '17'
cache: 'gradle'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
with:
gradle-version: wrapper
- name: Build TorrentEngine AAR
working-directory: android
run: |
./gradlew :torrentengine:assembleRelease \
--no-daemon \
--parallel \
--build-cache \
-Dorg.gradle.jvmargs="-Xmx2g -XX:MaxMetaspaceSize=512m"
- name: Upload TorrentEngine AAR
uses: actions/upload-artifact@v4
with:
name: torrentengine-aar
path: android/torrentengine/build/outputs/aar/*.aar
retention-days: 7
# ============================================
# Сборка Debug APK
# ============================================
build-debug-apk:
name: Build Debug APK
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.FLUTTER_VERSION }}
channel: 'stable'
cache: true
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '17'
cache: 'gradle'
- name: Flutter Doctor
run: flutter doctor -v
- name: Get Flutter dependencies
run: flutter pub get
- name: Build Debug APK
run: |
flutter build apk \
--debug \
--target-platform android-arm64
- name: Upload Debug APK
uses: actions/upload-artifact@v4
with:
name: debug-apk
path: build/app/outputs/flutter-apk/app-debug.apk
retention-days: 7
# ============================================
# Сборка Release APK
# ============================================
build-release-apk:
name: Build Release APK
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/dev'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.FLUTTER_VERSION }}
channel: 'stable'
cache: true
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '17'
cache: 'gradle'
- name: Get Flutter dependencies
run: flutter pub get
- name: Build Release APK (split per ABI)
run: |
flutter build apk \
--release \
--split-per-abi \
--target-platform android-arm64
- name: Upload Release APK (ARM64)
uses: actions/upload-artifact@v4
with:
name: release-apk-arm64
path: build/app/outputs/flutter-apk/app-arm64-v8a-release.apk
retention-days: 30
# ============================================
# Анализ кода
# ============================================
code-quality:
name: Code Quality Checks
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.FLUTTER_VERSION }}
channel: 'stable'
cache: true
- name: Get Flutter dependencies
run: flutter pub get
- name: Flutter Analyze
run: flutter analyze --no-fatal-infos
continue-on-error: true
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '17'
- name: Android Lint
working-directory: android
run: ./gradlew lint --no-daemon
continue-on-error: true
- name: Upload Lint Reports
uses: actions/upload-artifact@v4
if: always()
with:
name: lint-reports
path: |
android/app/build/reports/lint-results*.html
android/torrentengine/build/reports/lint-results*.html
retention-days: 7