UNPKG

react-native-url-polyfill

Version:

A lightweight and trustworthy URL polyfill for React Native

330 lines (322 loc) 9.54 kB
version: 2.1 aliases: - &xcode-version 14.3.1 - &node-version '18.16' - &yarn-version '1.22.19' orbs: node: circleci/node@5.1.0 browser-tools: circleci/browser-tools@1.4.1 executors: default: docker: - image: cimg/node:18.16 working_directory: ~/react-native-url-polyfill environment: NODE_OPTIONS: '--openssl-legacy-provider' node-browsers: docker: - image: cimg/node:18.16-browsers environment: NODE_OPTIONS: '--openssl-legacy-provider' xcode-11: macos: xcode: 11.7.0 environment: HOMEBREW_NO_AUTO_UPDATE: 1 XCODE_VERSION: 11.7.0 NODE_OPTIONS: '--openssl-legacy-provider' xcode: macos: xcode: *xcode-version environment: HOMEBREW_NO_AUTO_UPDATE: 1 XCODE_VERSION: *xcode-version NODE_OPTIONS: '--openssl-legacy-provider' android: docker: - image: cimg/android:2023.06.1 resource_class: large environment: JAVA_TOOL_OPTIONS: '-Xmx1536m' GRADLE_OPTS: '-Dorg.gradle.daemon=false -Dorg.gradle.workers.max=2' NODE_OPTIONS: '--openssl-legacy-provider' commands: save-cache-yarn: steps: - save_cache: key: yarn-packages-{{ .Environment.CACHE_VERSION }}-{{ checksum "yarn.lock" }} paths: - ~/.cache/yarn restore-cache-yarn: steps: - restore_cache: name: Restore Yarn Package Cache keys: - yarn-packages-{{ .Environment.CACHE_VERSION }}-{{ checksum "yarn.lock" }} save-cache-detox-env: steps: - save_cache: key: detox-env-{{ .Environment.CACHE_VERSION }}-{{ arch }}-{{ checksum "/usr/bin/xcodebuild" }}-{{ .Environment.CIRCLE_WORKING_DIRECTORY }} paths: - /usr/local/Homebrew - ~/Library/Caches/Homebrew restore-cache-detox-env: steps: - restore_cache: name: Restoring Detox Env Cache keys: - detox-env-{{ .Environment.CACHE_VERSION }}-{{ arch }}-{{ checksum "/usr/bin/xcodebuild" }}-{{ .Environment.CIRCLE_WORKING_DIRECTORY }} save-cache-detox-app: steps: - save_cache: key: detox-app-{{ .Environment.CACHE_VERSION }}-{{ checksum "yarn.lock"}} paths: - node_modules - ios/Pods restore-cache-detox-app: steps: - restore_cache: name: Restoring Detox App Cache keys: - detox-app-{{ .Environment.CACHE_VERSION }}-{{ checksum "yarn.lock"}} save-cache-expo-app: steps: - save_cache: key: expo-app-{{ .Environment.CACHE_VERSION }}-{{ checksum "yarn.lock"}} paths: - node_modules restore-cache-expo-app: steps: - restore_cache: name: Restoring Detox App Cache keys: - expo-app-{{ .Environment.CACHE_VERSION }}-{{ checksum "yarn.lock"}} save-android-build-cache: steps: - save_cache: paths: - ~/.gradle/caches - ~/.gradle/wrapper - ~/.android/build-cache key: gradle-build-cache-{{ .Environment.CACHE_VERSION }}-{{ checksum "android/build.gradle" }}-{{ checksum "android/app/build.gradle" }}-{{ checksum "yarn.lock" }} when: always # Ensures build assets are cached even on failed builds restore-android-build-cache: steps: - restore_cache: name: Restoring Android & Gradle cache keys: - gradle-build-cache-{{ .Environment.CACHE_VERSION }}-{{ checksum "android/build.gradle" }}-{{ checksum "android/app/build.gradle" }}-{{ checksum "yarn.lock" }} attach-workspace: steps: - attach_workspace: at: ~/react-native-url-polyfill install-yarn-dependencies: steps: - run: name: Yarn version command: yarn -v - run: name: Yarn Install command: | yarn install --frozen-lockfile --no-progress --non-interactive --cache-folder ~/.cache/yarn install-detox: steps: - restore-cache-detox-env - run: name: Install Detox command: | brew tap wix/brew brew install applesimutils yarn global add detox-cli - run: name: Clean Detox command: | detox clean-framework-cache && detox build-framework-cache - save-cache-detox-env install-node: parameters: install-yarn: type: boolean default: true steps: - node/install: node-version: *node-version install-yarn: << parameters.install-yarn >> yarn-version: *yarn-version jobs: checkout: executor: default steps: - checkout - restore-cache-yarn - run: name: Yarn version command: yarn -v - run: name: Yarn Install command: | yarn install --frozen-lockfile --no-progress --non-interactive --cache-folder ~/.cache/yarn - save-cache-yarn - persist_to_workspace: root: . paths: - . lint: executor: default steps: - attach-workspace - run: name: Lint command: yarn lint test-js: parameters: react-native-version: type: string default: '' executor: default steps: - attach-workspace - when: condition: << parameters.react-native-version >> steps: - run: name: Overriding react-native version command: yarn add --dev react-native@<< parameters.react-native-version >> - run: name: Run Jest command: yarn test test-ios: parameters: executor: default: xcode type: executor react-native-version: type: string install-yarn: type: boolean default: true executor: << parameters.executor >> working_directory: ~/react-native-url-polyfill/platforms/react-native/<< parameters.react-native-version >> steps: - attach-workspace - restore-cache-detox-app - install-node: install-yarn: << parameters.install-yarn >> - install-yarn-dependencies - install-detox - run: name: Install Pods command: cd ios && pod install --repo-update - run: name: Run Detox on iOS command: yarn e2e:ios - save-cache-detox-app test-hermes-android: parameters: react-native-version: type: string executor: android working_directory: ~/react-native-url-polyfill/platforms/react-native/<< parameters.react-native-version >> steps: - attach-workspace - run: name: Enable Hermes command: sed -i "s/enableHermes:\sfalse/enableHermes:\ true/g" android/app/build.gradle - restore-android-build-cache - install-node - install-yarn-dependencies - run: name: Build APK command: cd android && ./gradlew assembleRelease - save-android-build-cache test-hermes-ios: parameters: executor: default: xcode type: executor react-native-version: type: string executor: << parameters.executor >> working_directory: ~/react-native-url-polyfill/platforms/react-native/<< parameters.react-native-version >> steps: - attach-workspace - restore-cache-detox-app - run: name: Enable Hermes command: npx shx sed -i "s/:hermes_enabled\s=>\sfalse/:hermes_enabled => true/g" ios/Podfile - install-node - install-yarn-dependencies - install-detox - run: name: Install Pods command: | cd ios && pod install - run: name: Run Detox on iOS command: yarn e2e:ios test-expo-web: parameters: expo-version: type: string executor: node-browsers working_directory: ~/react-native-url-polyfill/platforms/expo/<< parameters.expo-version >> steps: - attach-workspace - browser-tools/install-chrome - run: google-chrome --version - run: name: Install certutil command: | sudo apt update sudo apt install libnss3-tools - restore-cache-expo-app - install-node - install-yarn-dependencies - run: yarn global add expo-cli - run: yarn test:web --runInBand - save-cache-expo-app workflows: tests: jobs: - checkout - lint: requires: - checkout - test-js: requires: - checkout - test-ios: name: test-ios-0.60 executor: xcode-11 react-native-version: '0.60' install-yarn: false requires: - lint - test-js - test-ios: matrix: parameters: react-native-version: ['0.68', '0.72'] requires: - lint - test-js - test-hermes-ios: matrix: parameters: react-native-version: ['0.68'] requires: - test-ios-<< matrix.react-native-version >> - test-hermes-android: matrix: parameters: react-native-version: ['0.68'] requires: - lint - test-js # - test-expo-web: # matrix: # parameters: # expo-version: ['43', '44'] # requires: # - lint # - test-js