mirror of
				https://gitcode.com/gh_mirrors/re/react-native-pushy.git
				synced 2025-10-31 21:33:12 +08:00 
			
		
		
		
	feat: project init
This commit is contained in:
		
							
								
								
									
										218
									
								
								.github/workflows/e2e_android.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										218
									
								
								.github/workflows/e2e_android.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,218 @@ | ||||
| name: Testing E2E Android | ||||
|  | ||||
| on: | ||||
|   workflow_dispatch: | ||||
|     inputs: | ||||
|       clearCaches: | ||||
|         description: "Clear workflow caches where possible" | ||||
|         required: false | ||||
|         type: string | ||||
|  | ||||
|   pull_request: | ||||
|     branches: | ||||
|       - '**' | ||||
|     paths-ignore: | ||||
|       - 'docs/**' | ||||
|       - 'website/**' | ||||
|       - '.spellcheck.dict.txt' | ||||
|       # - '**/*.md' | ||||
|  | ||||
|   push: | ||||
|     branches: | ||||
|       - master | ||||
|     paths-ignore: | ||||
|       - 'docs/**' | ||||
|       - 'website/**' | ||||
|       - '.spellcheck.dict.txt' | ||||
|  | ||||
| concurrency: | ||||
|   group: ${{ github.workflow }}-${{ github.ref }} | ||||
|   cancel-in-progress: true | ||||
|  | ||||
| jobs: | ||||
|   android: | ||||
|     name: Android | ||||
|     runs-on: macos-12 | ||||
|     timeout-minutes: 90 | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         # Refactor to make these dynamic with a low/high bracket only on schedule, not push | ||||
|         # For now this is just the fastest combo (api/arch/target/snapshot-warm-time) based on testing | ||||
|         api-level: [30] | ||||
|         arch: [x86_64] | ||||
|         target: [google_apis] | ||||
|         first-boot-delay: [600] | ||||
|         # This is useful for benchmarking, do 0, 1, 2, etc (up to 256 max job-per-matrix limit) for averages | ||||
|         iteration: [0] | ||||
|     env: | ||||
|       CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | ||||
|       EMULATOR_COMMAND: "-avd TestingAVD -noaudio -gpu swiftshader_indirect -camera-back none -no-snapshot -no-window -no-boot-anim -nojni -memory 2048 -timezone 'Europe/London' -cores 2" | ||||
|       EMULATOR_EXECUTABLE: qemu-system-x86_64-headless | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|         with: | ||||
|           fetch-depth: 50 | ||||
|  | ||||
|       # Set up tool versions | ||||
|       - uses: actions/setup-node@v3 | ||||
|         with: | ||||
|           node-version: 16 | ||||
|  | ||||
|       - name: Configure JDK 1.11 | ||||
|         uses: actions/setup-java@v3 | ||||
|         with: | ||||
|           distribution: 'temurin' | ||||
|           java-version: '11' | ||||
|  | ||||
|       # Set path variables needed for caches | ||||
|       - name: Set workflow variables | ||||
|         id: workflow-variables | ||||
|         run: | | ||||
|           echo "metro-cache=$HOME/.metro" >> $GITHUB_OUTPUT | ||||
|           echo "yarn-cache-dir=$(yarn cache dir)" >> $GITHUB_OUTPUT | ||||
|           echo "tempdir=$TMPDIR" >> $GITHUB_OUTPUT | ||||
|  | ||||
|       - uses: actions/cache@v3 | ||||
|         name: Yarn Cache | ||||
|         id: yarn-cache | ||||
|         with: | ||||
|           path: ${{ steps.workflow-variables.outputs.yarn-cache-dir }} | ||||
|           key: ${{ runner.os }}-yarn-v1-${{ hashFiles('yarn.lock') }} | ||||
|           restore-keys: ${{ runner.os }}-yarn-v1 | ||||
|  | ||||
|       - name: Yarn Install | ||||
|         uses: nick-invision/retry@v2 | ||||
|         with: | ||||
|           timeout_minutes: 10 | ||||
|           retry_wait_seconds: 60 | ||||
|           max_attempts: 3 | ||||
|           command: DETOX_DISABLE_POSTINSTALL=1 yarn --no-audit --prefer-offline | ||||
|  | ||||
|       - name: Cache pushy Emulator | ||||
|         uses: actions/cache@v3 | ||||
|         with: | ||||
|           path: ~/.cache/pushy/emulators | ||||
|           key: pushy-emulators-v1-${{ github.run_id }} | ||||
|           restore-keys: pushy-emulators-v1 | ||||
|  | ||||
|       - name: Start pushy Emulator | ||||
|         run: yarn tests:emulator:start-ci | ||||
|  | ||||
|       - uses: actions/cache@v3 | ||||
|         name: Gradle Cache | ||||
|         with: | ||||
|           path: ~/.gradle/caches | ||||
|           key: ${{ runner.os }}-gradle-v1-${{ hashFiles('**/*.gradle*') }} | ||||
|           restore-keys: ${{ runner.os }}-gradle-v1 | ||||
|  | ||||
|         # This appears to be 'Cache Size: ~1230 MB (1290026823 B)' based on watching action logs | ||||
|         # Repo limit is 10GB; branch caches are independent; branches may read default branch cache. | ||||
|         # We don't want branches to evict master branch snapshot, so save on master, read-only all else | ||||
|       - name: AVD cache | ||||
|         uses: actions/cache@v3 | ||||
|         id: avd-cache | ||||
|         with: | ||||
|           path: | | ||||
|             ~/.android/avd/* | ||||
|             ~/.android/adb* | ||||
|           key: avd-${{ matrix.api-level }}-${{ matrix.arch }}-${{matrix.target}}-v1-${{ github.event.inputs.clearCaches }} | ||||
|           restore-keys: | | ||||
|             avd-${{ matrix.api-level }}-${{ matrix.arch }}-${{matrix.target}}-v1 | ||||
|  | ||||
|       - name: Clear Caches Optionally | ||||
|         if: "${{ github.event.inputs.clearCaches != '' }}" | ||||
|         shell: bash | ||||
|         run: | | ||||
|           du -sk ~/.gradle | ||||
|           du -sk ~/.android | ||||
|           rm -fr ~/.gradle | ||||
|           rm -fr ~/.android | ||||
|           du -sk ~/.gradle || echo ~/.gradle is gone | ||||
|           du -sk ~/.android || echo ~/.android is gone | ||||
|  | ||||
|       - name: Build Android App | ||||
|         uses: nick-invision/retry@v2 | ||||
|         with: | ||||
|           timeout_minutes: 25 | ||||
|           retry_wait_seconds: 60 | ||||
|           max_attempts: 3 | ||||
|           command: yarn build:android-release | ||||
|  | ||||
|       - name: Metro Bundler Cache | ||||
|         uses: actions/cache@v3 | ||||
|         with: | ||||
|           path: ${{ steps.workflow-variables.outputs.metro-cache }} | ||||
|           key: ${{ runner.os }}-metro-v1-${{ github.run_id }} | ||||
|           restore-keys: ${{ runner.os }}-metro-v1 | ||||
|  | ||||
|       - name: AVD Boot and Snapshot Creation | ||||
|         # Only generate a snapshot with a cache miss | ||||
|         # Comment the if out to generate snapshots on branch for performance testing | ||||
|         if: "${{ github.event.inputs.clearCaches != '' || (steps.avd-cache.outputs.cache-hit != 'true' && github.ref == 'refs/heads/master') }}" | ||||
|         uses: reactivecircus/android-emulator-runner@v2 | ||||
|         with: | ||||
|           api-level: ${{ matrix.api-level }} | ||||
|           avd-name: TestingAVD | ||||
|           force-avd-creation: false | ||||
|           target: ${{ matrix.target }} | ||||
|           arch: ${{ matrix.arch }} | ||||
|           emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | ||||
|           sdcard-path-or-size: 100M | ||||
|           disable-animations: true | ||||
|           # Give the emulator a little time to run and do first boot stuff before taking snapshot | ||||
|           script: | | ||||
|             $ANDROID_HOME/platform-tools/adb logcat '*:D' -d > adb-snapshot-log.txt | ||||
|             $ANDROID_HOME/platform-tools/adb logcat --clear | ||||
|             echo "Generated AVD snapshot for caching." | ||||
|  | ||||
|         # This step is separate so pure install time may be calculated as a step | ||||
|       - name: Emulator Snapshot After Firstboot Warmup | ||||
|         # Only generate a snapshot for saving with a cache miss | ||||
|         # Switch the if statements via comment if generating snapshots for performance testing | ||||
|         # if: matrix.first-boot-delay != '0' | ||||
|         if: "${{ github.event.inputs.clearCaches != '' || (steps.avd-cache.outputs.cache-hit != 'true' && github.ref == 'refs/heads/master') }}" | ||||
|         env: | ||||
|           FIRST_BOOT_DELAY: ${{ matrix.first-boot-delay }} | ||||
|         uses: reactivecircus/android-emulator-runner@v2 | ||||
|         with: | ||||
|           api-level: ${{ matrix.api-level }} | ||||
|           avd-name: TestingAVD | ||||
|           force-avd-creation: false | ||||
|           target: ${{ matrix.target }} | ||||
|           arch: ${{ matrix.arch }} | ||||
|           emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | ||||
|           sdcard-path-or-size: 100M | ||||
|           disable-animations: true | ||||
|           # Give the emulator a little time to run and do first boot stuff before taking snapshot | ||||
|           # The zygote restart makes sure zygote has correct heap size as a workaround for android emulator init bug | ||||
|           script: | | ||||
|             $ANDROID_HOME/platform-tools/adb shell su root "setprop ctl.restart zygote" | ||||
|             sleep $FIRST_BOOT_DELAY | ||||
|             $ANDROID_HOME/platform-tools/adb logcat '*:D' -d > adb-warmup-log.txt | ||||
|             $ANDROID_HOME/platform-tools/adb logcat --clear | ||||
|             echo "First boot warmup completed." | ||||
|  | ||||
|       - name: Test Tapper | ||||
|         # Run this outside the emulator runner so the emulator runner does not wait on it for cleanup | ||||
|         run: | | ||||
|           nohup sh -c "until false; do $ANDROID_HOME/platform-tools/adb shell input tap 100 800; sleep 0.2; done" & | ||||
|         shell: bash | ||||
|  | ||||
|       - name: Detox Tests | ||||
|         uses: reactivecircus/android-emulator-runner@v2 | ||||
|         timeout-minutes: 40 | ||||
|         with: | ||||
|           api-level: ${{ matrix.api-level }} | ||||
|           avd-name: TestingAVD | ||||
|           force-avd-creation: false | ||||
|           target: ${{ matrix.target }} | ||||
|           arch: ${{ matrix.arch }} | ||||
|           emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | ||||
|           sdcard-path-or-size: 100M | ||||
|           disable-animations: true | ||||
|           # Detox uses Espresso to choreograph steps in reaction to UI events, so we need to send a stream of taps. | ||||
|           script: | | ||||
|             $ANDROID_HOME/platform-tools/adb devices | ||||
|             nohup sh -c "$ANDROID_HOME/platform-tools/adb logcat '*:D' > adb-log.txt" & | ||||
|             yarn test:android-release | ||||
		Reference in New Issue
	
	Block a user
	 steven
					steven