mirror of
https://github.com/facebook/react-native.git
synced 2024-11-22 06:29:46 +00:00
641be98b1e
Summary: Right now, every PR runs the whole test suite. For example, a changelog PR, will run all the tests. As of last month, that meant quite a few $s per single run. With this PR, we are going to leverage dynamic configuration and file filtering to create a config.yml on the flight, depending on the files changed by the commit/pr. They way it works is the following: - It starts a setup workflow in CircleCI. - This workflow fetch the list of files that have been changed in the current commit. - It executes a bunch of filtering and computation to understand which tests makes sense to run. - It creates a config on the flight to run those. - It continue the pipeline on that config. Currently, the way it works is the following: - If a `.md` file has been modified => run nothing - If only files in the `ReactAndroid` folder are modified => run tests for android only - If only files in the `React` folder are modified or `ruby` files are modified => run only iOS tests - If only js files, not in the scripts folder are modified => run only JS tests - if only files in the e2e folder are modified => run only e2e tests - else => run everything. Of course, we can play and modify those filters t make sure that they reflect the work and the tests to the best we can. bypass-github-exports-checks ## Changelog: [Internal] - Split circleci config and run test selectively. Pull Request resolved: https://github.com/facebook/react-native/pull/39042 Test Plan: - [X] Tested on the local branch for general sanity check. - [X] Import it in fbsource - [x] Create a stacked diff which changes only a md file => verify that no tests are run. - [x] Create a stacked diff which changes only files in ReactAndroid => verify that only android tests run. - [x] Create a stacked diff which changes only files in React => verify that only iOS tests run. - [x] Create a stacked diff which changes only ruby files => verify that only iOS tests run. - [x] Create a stacked diff which changes ruby files and file in React => verify that only iOS tests run. - [x] Create a stacked diff which changes only files JS not in the script folder => verify that JS tests run. - [x] Create a stacked diff which changes only JS files in the script folder => verify that the whole suite starts. - [x] Create a stacked diff which changes only files in the E2E folder => verify that only E2E files runs. - [x] Trigger a nightly pipeline => verify that parameters are passed to the generated config. Reviewed By: NickGerleman Differential Revision: D48394437 Pulled By: cipolleschi fbshipit-source-id: 771f3e68daa8318d2b73dd91ce85a41488110c04
157 lines
3.7 KiB
Plaintext
157 lines
3.7 KiB
Plaintext
# Xcode
|
|
!**/*.xcodeproj
|
|
!**/*.pbxproj
|
|
!**/*.xcworkspacedata
|
|
!**/*.xcsettings
|
|
!**/*.xcscheme
|
|
*.pbxuser
|
|
!default.pbxuser
|
|
*.mode1v3
|
|
!default.mode1v3
|
|
*.mode2v3
|
|
!default.mode2v3
|
|
*.perspectivev3
|
|
!default.perspectivev3
|
|
xcuserdata
|
|
*.xccheckout
|
|
*.moved-aside
|
|
DerivedData
|
|
*.hmap
|
|
*.ipa
|
|
*.xcuserstate
|
|
project.xcworkspace
|
|
**/.xcode.env.local
|
|
/poackages/react-native/sdks/downloads/
|
|
|
|
# Gradle
|
|
/build/
|
|
/packages/react-native-gradle-plugin/build/
|
|
/packages/rn-tester/build
|
|
/packages/rn-tester/android/app/.cxx/
|
|
/packages/rn-tester/android/app/build/
|
|
/packages/rn-tester/android/app/gradle/
|
|
/packages/rn-tester/android/app/gradlew
|
|
/packages/rn-tester/android/app/gradlew.bat
|
|
/packages/react-native/ReactAndroid/build/
|
|
/packages/react-native/ReactAndroid/.cxx/
|
|
/packages/react-native/ReactAndroid/gradle/
|
|
/packages/react-native/ReactAndroid/gradlew
|
|
/packages/react-native/ReactAndroid/gradlew.bat
|
|
/packages/react-native/ReactAndroid/external-artifacts/build/
|
|
/packages/react-native/ReactAndroid/external-artifacts/artifacts/
|
|
/packages/react-native/ReactAndroid/flipper-integration/build/
|
|
/packages/react-native/ReactAndroid/hermes-engine/build/
|
|
/packages/react-native/ReactAndroid/hermes-engine/.cxx/
|
|
/packages/react-native/template/android/app/build/
|
|
/packages/react-native/template/android/build/
|
|
|
|
# Buck
|
|
.buckd
|
|
buck-out
|
|
/.lsp.buckd
|
|
/.lsp-buck-out
|
|
/packages/react-native/ReactAndroid/src/main/jni/prebuilt/lib/
|
|
/packages/react-native/ReactAndroid/src/main/gen
|
|
/.cpplsp.buckd
|
|
|
|
# Android Studio
|
|
.project
|
|
.settings
|
|
.classpath
|
|
|
|
# Watchman
|
|
.watchmanconfig
|
|
|
|
# Android
|
|
.idea
|
|
.gradle
|
|
local.properties
|
|
*.iml
|
|
/packages/react-native/android/*
|
|
!/packages/react-native/android/README.md
|
|
|
|
# Node
|
|
node_modules
|
|
*.log
|
|
.nvm
|
|
package-lock.json
|
|
|
|
# OS X
|
|
.DS_Store
|
|
|
|
# Test generated files
|
|
/packages/react-native/ReactAndroid/src/androidTest/assets/AndroidTestBundle.js
|
|
*.js.meta
|
|
|
|
/coverage
|
|
/third-party
|
|
|
|
# Test Reports
|
|
/reports
|
|
|
|
# Stack Dumps generated when programs crash (Ex. bash.exe.stackdump on Win)
|
|
*.stackdump
|
|
|
|
# Root dir shouldn't have Xcode project
|
|
/*.xcodeproj
|
|
|
|
# ReactCommon subdir shouldn't have Xcode project
|
|
/packages/react-native/ReactCommon/**/*.xcodeproj
|
|
|
|
# Libs that shouldn't have Xcode project
|
|
/packages/react-native/Libraries/FBLazyVector/**/*.xcodeproj
|
|
/packages/react-native/Libraries/RCTRequired/**/*.xcodeproj
|
|
/packages/react-native/React/CoreModules/**/*.xcodeproj
|
|
/packages/react-native/React/FBReactNativeSpec/**/*.xcodeproj
|
|
/packages/react-native-codegen/**/*.xcodeproj
|
|
|
|
# Ruby Gems (Bundler)
|
|
/packages/react-native/vendor
|
|
/packages/react-native/template/vendor
|
|
.ruby-version
|
|
/**/.ruby-version
|
|
|
|
# iOS / CocoaPods
|
|
/packages/react-native/template/ios/build/
|
|
/packages/react-native/template/ios/Pods/
|
|
/packages/react-native/template/ios/Podfile.lock
|
|
/packages/rn-tester/Gemfile.lock
|
|
|
|
# Ignore RNTester specific Pods, but keep the __offline_mirrors__ here.
|
|
/packages/rn-tester/Pods/*
|
|
!/packages/rn-tester/Pods/__offline_mirrors_hermes__
|
|
!/packages/rn-tester/Pods/__offline_mirrors_jsc__
|
|
|
|
# @react-native/codegen
|
|
/packages/react-native/React/FBReactNativeSpec/FBReactNativeSpec
|
|
/packages/react-native-codegen/lib
|
|
/packages/react-native-codegen/tmp/
|
|
/packages/react-native/ReactCommon/react/renderer/components/rncore/
|
|
/packages/rn-tester/NativeModuleExample/ScreenshotManagerSpec*
|
|
/**/RCTThirdPartyFabricComponentsProvider.*
|
|
|
|
# @react-native/codegen-typescript-test
|
|
/packages/react-native-codegen-typescript-test/lib
|
|
|
|
# Additional SDKs
|
|
/packages/react-native/sdks/download
|
|
/packages/react-native/sdks/hermes
|
|
/packages/react-native/sdks/hermesc
|
|
|
|
# Visual studio
|
|
.vscode
|
|
.vs
|
|
|
|
# Android memory profiler files
|
|
*.hprof
|
|
|
|
# Temporary files created by Metro to check the health of the file watcher
|
|
.metro-health-check*
|
|
|
|
# E2E files
|
|
/packages/rn-tester-e2e/apps/*.apk
|
|
/packages/rn-tester-e2e/apps/*.app
|
|
|
|
# CircleCI
|
|
.circleci/generated_config.yml
|