# Build Android version of the app name: Android on: push: pull_request: jobs: build: runs-on: ubuntu-latest env: ENABLE_NIX_STORE_CACHE: 'true' # set to 'true' to test caching the whole /nix/store (risky) USE_CACHIX: 'false' # set to 'true' to enable Cachix step steps: - name: Checkout code uses: actions/checkout@v6 - name: Cache Nix local cache (~/.cache/nix) uses: actions/cache@v4 with: path: ${{ env.HOME }}/.cache/nix key: ${{ runner.os }}-nix-local-${{ hashFiles('flake.lock','flake.nix') }} restore-keys: | ${{ runner.os }}-nix-local- - name: (Optional) Cache entire /nix/store (experimental, very large) if: env.ENABLE_NIX_STORE_CACHE == 'true' uses: actions/cache@v4 with: path: /nix/store/ key: ${{ runner.os }}-nix-store-${{ hashFiles('flake.lock','flake.nix') }} restore-keys: | ${{ runner.os }}-nix-store- - name: (Optional) Setup Cachix (use binary cache) if: env.USE_CACHIX == 'true' uses: cachix/cachix-action@v14 with: name: inventree - name: Cache Flutter Pub uses: actions/cache@v4 with: path: ${{ env.HOME }}/.pub-cache key: ${{ runner.os }}-pub-${{ hashFiles('pubspec.lock','pubspec.yaml') }} restore-keys: | ${{ runner.os }}-pub- - name: Cache Gradle uses: actions/cache@v4 with: path: | ${{ env.HOME }}/.gradle/caches ${{ env.HOME }}/.gradle/wrapper android/.gradle key: ${{ runner.os }}-gradle-${{ hashFiles('**/build.gradle*','android/gradle.properties','android/gradle/wrapper/gradle-wrapper.properties') }} restore-keys: | ${{ runner.os }}-gradle- - name: Prepare Nix devshell uses: ./.github/actions/nix-devshell with: prebuild: "true" - name: Collect Translation Files uses: ./.github/actions/nix-devshell with: commands: | cd lib/l10n python3 collect_translations.py - name: Build Debug APK uses: ./.github/actions/nix-devshell with: commands: | flutter build apk --debug --target-platform android-arm64 - name: Upload APK artifact uses: actions/upload-artifact@v4 with: name: app-debug-apk path: build/app/outputs/flutter-apk/*.apk # retention-days: 90