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
									
									
								
							
							
						
						
									
										218
									
								
								.github/workflows/e2e_android.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,218 +0,0 @@ | |||||||
| 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