# This workflow uses actions that are not certified by GitHub. # They are provided by a third-party and are governed by # separate terms of service, privacy policy, and support # documentation. name: Build Android run-name: Build Android v${{ inputs.version }}${{inputs.stage-backend && ' (Stage)' || '' }} on: workflow_call: inputs: version: description: "Version" required: true type: string build-number: description: "Build number" required: true type: string stage-backend: description: "Use stage backend" required: true type: boolean workflow_dispatch: inputs: version: description: "Version" required: false type: string build-number: description: "Build number" required: false type: string stage-backend: description: "Use stage backend" required: true type: boolean env: VERSION: ${{ github.event.inputs.version }} BUILD_NUMBER: ${{ github.event.inputs.build-number }} BUILD_OVERRIDES: ${{ github.event.inputs.version != '' && '--build-name=$VERSION' || '' }} ${{ github.event.inputs.build-number != '' && '--build-number=$BUILD_NUMBER' || '' }} BUILD_ARGS: --release --flavor prod --target lib/main_prod.dart $BUILD_OVERRIDES jobs: build: name: Build .apk & .aab runs-on: macos-11 timeout-minutes: 30 steps: - uses: actions/checkout@v3 with: submodules: recursive - name: Connect private iap package uses: webfactory/ssh-agent@v0.8.0 with: ssh-private-key: ${{ secrets.M3_LIGHTMETER_IAP_KEY }} - uses: actions/setup-java@v3 with: distribution: "zulu" java-version: "11" - name: Restore Android keystore .jsk and .properties files run: | bash .github/scripts/restore_from_base64.sh "${{ secrets.KEYSTORE }}" "android/keystore.jks" bash .github/scripts/restore_from_base64.sh "${{ secrets.KEYSTORE_PROPERTIES }}" "android/key.properties" - name: Restore android/app/google-services.json run: bash .github/scripts/restore_from_base64.sh "${{ secrets.GOOGLE_SERVICES_JSON_ANDROID }}" "android/app/google-services.json" - name: Restore firebase_options.dart run: bash .github/scripts/restore_from_base64.sh "${{ secrets.FIREBASE_OPTIONS }}" "lib/firebase_options.dart" - name: Restore constants.dart env: CONSTANTS: ${{inputs.stage-backend && secrets.CONSTANTS_STAGE || secrets.CONSTANTS }} run: bash .github/scripts/restore_from_base64.sh "${{ env.CONSTANTS }}" "lib/constants.dart" - name: Install Flutter uses: subosito/flutter-action@v2 with: channel: "stable" flutter-version: "3.10.0" - name: Prepare flutter project run: | flutter --version flutter pub get flutter pub run intl_utils:generate - name: Build apk run: flutter build apk $BUILD_ARGS - name: Upload apk to artifacts uses: actions/upload-artifact@v3 with: name: m3_lightmeter_apk path: build/app/outputs/flutter-apk/app-prod-release.apk - name: Build appbundle run: flutter build appbundle $BUILD_ARGS - name: Upload app bundle to artifacts uses: actions/upload-artifact@v3 with: name: m3_lightmeter_bundle path: build/app/outputs/bundle/prodRelease/app-prod-release.aab