name: Eatvio App Android Test on: [ pull_request ] env: flutter_version: "3.27.3" java_version: "21.x" flutter_channel: "stable" my_local_cache_dir: "/opt/hostedtoolcache/" ANDROID_SDK_ROOT: "/opt/hostedtoolcache/Android/Sdk" jobs: build: runs-on: [ dev-office ] steps: - uses: actions/checkout@v3 - name: Cache Android SDK id: cache-sdk uses: "https://gitea.com/actions/cache@v4" with: path: ${{ env.my_local_cache_dir }} key: ${{ runner.os }}-cache-sdk - name: Set up JDK uses: actions/setup-java@v3 with: distribution: "zulu" java-version: ${{ env.java_version }} cache: gradle - name: Install utils for Android SDK run: | apt-get update apt-get install -y openjdk-11-jdk wget jq clang cmake ninja-build libgtk-3-dev - name: Install Android SDK if: steps.cache-sdk.outputs.cache-hit != 'true' run: | wget https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip -O commandlinetools.zip unzip commandlinetools.zip mkdir -p ${{ env.my_local_cache_dir }}Android/Sdk/cmdline-tools/latest mv cmdline-tools/* ${{ env.my_local_cache_dir }}Android/Sdk/cmdline-tools/latest/ export ANDROID_SDK_ROOT=${{ env.my_local_cache_dir }}Android/Sdk export PATH=$PATH:${{ env.my_local_cache_dir }}Android/Sdk/cmdline-tools/latest/bin yes | sdkmanager --licenses 2>/dev/null || true sdkmanager --list | egrep "platform-tools|build-tools|ndk" sdkmanager "platform-tools" sdkmanager "platform-tools" "platforms;android-35" "platforms;android-34" "platforms;android-33" "platforms;android-31" sdkmanager "build-tools;34.0.0" sdkmanager "ndk;25.1.8937393" sdkmanager --install "cmake;3.22.1" - name: Set up Android environment variables id: "android-env-setup" run: | echo "ANDROID_SDK_ROOT=${{ env.my_local_cache_dir }}Android/Sdk" >> $GITHUB_ENV echo "PATH=$PATH:${{ env.my_local_cache_dir }}Android/Sdk/cmdline-tools/latest/bin:${{ env.my_local_cache_dir }}Android/Sdk/platform-tools:${{ env.my_local_cache_dir }}Android/Sdk/build-tools/30.0.3:${{ env.my_local_cache_dir }}Android/Sdk/build-tools/34.0.0" >> $GITHUB_ENV echo "ANDROID_HOME=${{ env.my_local_cache_dir }}Android/Sdk" >> $GITHUB_ENV - id: flutter-action uses: actions/flutter-action@v2 with: channel: ${{ env.flutter_channel }} flutter-version: ${{ env.flutter_version }} cache: true cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" # optional, change this to force refresh cache cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" # optional, change this to specify the cache path pub-cache-key: "flutter-pub:os:-:channel:-:version:-:arch:-:hash:" # optional, change this to force refresh cache of dart pub get dependencies pub-cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" # optional, change this to specify the cache path # - name: Print flutter-action outputs # shell: bash # run: | # echo CACHE-PATH=${{ steps.flutter-action.outputs.CACHE-PATH }} # echo CACHE-KEY=${{ steps.flutter-action.outputs.CACHE-KEY }} # echo CHANNEL=${{ steps.flutter-action.outputs.CHANNEL }} # echo VERSION=${{ steps.flutter-action.outputs.VERSION }} # echo ARCHITECTURE=${{ steps.flutter-action.outputs.ARCHITECTURE }} # echo PUB-CACHE-PATH=${{ steps.flutter-action.outputs.PUB-CACHE-PATH }} # echo PUB-CACHE-KEY=${{ steps.flutter-action.outputs.PUB-CACHE-KEY }} # echo "PATH is $PATH" # echo "ANDROID_SDK_ROOT is $ANDROID_SDK_ROOT" # echo "ANDROID_HOME is $ANDROID_HOME" - name: Fix dir permissions run: | git config --global --add safe.directory /opt/hostedtoolcache/flutter/${{ env.flutter_channel }}-${{ env.flutter_version }}-${{ steps.flutter-action.outputs.ARCHITECTURE }} flutter config --android-sdk="$ANDROID_HOME" flutter doctor -v - name: Get dependencies run: flutter pub get - name: Native Analyze run: flutter analyze - name: Test run: flutter test - name: Build apk run: flutter build apk --profile - name: Rename and move apk run: | TIMESTAMP=$(TZ=Europe/Moscow date +'%Y-%m-%d-%H-%M') APK_NAME="eatvio_app_${TIMESTAMP}.apk" mv build/app/outputs/flutter-apk/app-profile.apk $APK_NAME echo "APK build finished $APK_NAME" echo "APK_NAME=$APK_NAME" >> $GITHUB_ENV - name: Upload APK artifact uses: actions/upload-artifact@v3 with: name: ${{ env.APK_NAME }} path: ${{ env.APK_NAME }}