feat: Add forgot password and reset password page with its functional… #3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Production | |
| on: | |
| push: | |
| branches: | |
| - main | |
| tags: | |
| - "v*" | |
| pull_request: | |
| branches: | |
| - main | |
| jobs: | |
| verify: | |
| name: Verify Code Quality | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Java (For Android tools) | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: "zulu" | |
| java-version: "17" | |
| - name: Setup Flutter | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| channel: "stable" | |
| cache: true | |
| - name: Install Dependencies | |
| run: flutter pub get | |
| - name: Check Formatting | |
| run: dart format --output=none --set-exit-if-changed . | |
| - name: Static Code Analysis | |
| run: flutter analyze | |
| - name: Run Unit & Widget Tests | |
| run: flutter test --coverage | |
| build-android: | |
| name: Build Production Android | |
| needs: verify | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'push' | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Java | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: "zulu" | |
| java-version: "17" | |
| - name: Setup Flutter | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| channel: "stable" | |
| cache: true | |
| - name: Install Dependencies | |
| run: flutter pub get | |
| - name: Generate env.json | |
| run: | | |
| cat <<EOF > env.json | |
| { | |
| "API_BASE_URL": "${{ secrets.API_BASE_URL }}" | |
| } | |
| EOF | |
| - name: Decode Android Keystore | |
| run: | | |
| echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 --decode > android/app/upload-keystore.jks | |
| - name: Build Android App Bundle (AAB) | |
| env: | |
| KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} | |
| KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }} | |
| KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }} | |
| run: | | |
| flutter build appbundle --release \ | |
| --dart-define-from-file=env.json \ | |
| --dart-define=APP_ENV=production | |
| - name: Upload Android Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: production-appbundle | |
| path: build/app/outputs/bundle/release/app-release.aab | |
| build-ios: | |
| name: Build Production iOS | |
| needs: verify | |
| runs-on: macos-latest | |
| if: github.event_name == 'push' | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Flutter | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| channel: "stable" | |
| cache: true | |
| - name: Install Dependencies | |
| run: flutter pub get | |
| - name: Generate env.json | |
| run: | | |
| cat <<EOF > env.json | |
| { | |
| "API_BASE_URL": "${{ secrets.API_BASE_URL }}" | |
| } | |
| EOF | |
| - name: Install Apple Certificate and Provisioning Profile | |
| env: | |
| BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }} | |
| P12_PASSWORD: ${{ secrets.P12_PASSWORD }} | |
| BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.BUILD_PROVISION_PROFILE_BASE64 }} | |
| KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} | |
| run: | | |
| CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 | |
| PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision | |
| KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db | |
| echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH | |
| echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PATH | |
| security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | |
| security set-keychain-settings -lut 21600 $KEYCHAIN_PATH | |
| security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | |
| security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH | |
| security list-keychain -d user -s $KEYCHAIN_PATH | |
| mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles | |
| cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles/ | |
| - name: Build iOS IPA | |
| run: | | |
| flutter build ipa --release \ | |
| --export-options-plist=$HOME/export_options.plist \ | |
| --dart-define-from-file=env.json \ | |
| --dart-define=APP_ENV=production | |
| - name: Upload iOS Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: production-ipa | |
| path: build/ios/ipa/*.ipa |