diff --git a/.github/workflows/react-native-ci.yml b/.github/workflows/react-native-ci.yml new file mode 100644 index 0000000..c249d66 --- /dev/null +++ b/.github/workflows/react-native-ci.yml @@ -0,0 +1,106 @@ +name: Storefront App CI + +on: + pull_request: + branches: [ main ] # Trigger for PRs to main branch + +env: + FLEETBASE_KEY: ${{ secrets.FLEETBASE_KEY }} + GOOGLE_MAPS_KEY: ${{ secrets.GOOGLE_MAPS_KEY }} + ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} + +jobs: + install_and_test: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Install Node.js + uses: actions/setup-node@v1 + with: + node-version: 18.x + + - name: Install dependencies + run: npm install -g yarn + + - name: Install dependencies + run: yarn install + + android_build: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Generate google-services.json + env: + GOOGLE_SERVICES_JSON: ${{ secrets.STOREFRONT_GOOGLE_SERVICES_JSON }} + run: | + echo "$GOOGLE_SERVICES_JSON" > google-services.json + mkdir -p android/app/src + mv google-services.json android/app/src + + - name: Install Node.js + uses: actions/setup-node@v1 + with: + node-version: 18.x + + - name: Install dependencies + run: npm install -g yarn + + - name: Install dependencies + run: yarn install + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: 'oracle' + java-version: '17' + + - name: Cache Gradle Wrapper + uses: actions/cache@v2 + with: + path: ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }} + + - name: Cache Gradle Dependencies + uses: actions/cache@v2 + with: + path: ~/.gradle/caches + key: ${{ runner.os }}-gradle-caches-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle-caches- + - name: Make Gradlew Executable + run: cd android && chmod +x ./gradlew + + - name: Build Android + run: cd android && ./gradlew assembleDebug + env: + JVM_OPTS: '-Xmx4096m' + + ios_build: + runs-on: macOS-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Install Node.js + uses: actions/setup-node@v4 + with: + node-version: 18.x + + - name: Install dependencies + run: npm install -g yarn + + - name: Install dependencies + run: yarn install + + - name: Install CocoaPods + run: sudo gem install cocoapods + + - name: Install iOS pods + run: cd ios && pod install + + - name: Build iOS + run: npx react-native run-ios --configuration Release diff --git a/README.md b/README.md index f06aaed..050c519 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,10 @@ Open source ecommerce mobile app for on-demand orders. Setup ecommerce marketpla Bundle Size + + + CI + License diff --git a/android/gradle.properties b/android/gradle.properties index 0e8a917..8bca34f 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -10,7 +10,7 @@ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. # Default value: -Xmx512m -XX:MaxMetaspaceSize=256m -org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m +org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=1g # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit