mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Add Nightly support for prebuilds (#49991)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/49991 This change adds nightly support for prebuilds. t works the same way hermes works: if the react native version contains nightly, we try to use that version to download the right tarball. To work, it needs to use the `RCT_USE_RN_DEP` env variable. ## Changelog [Internal] - Add Nightly support to consume ReactNativeDependencies Reviewed By: cortinico Differential Revision: D71050926 fbshipit-source-id: 9f461b5f17fde960d92b4082bc60f76959e82cdf
This commit is contained in:
committed by
Facebook GitHub Bot
parent
b8ab4c8d96
commit
dd7dccd88b
@@ -59,6 +59,7 @@ class ReactNativeDependenciesUtils
|
||||
@@build_from_source = true
|
||||
@@react_native_path = ""
|
||||
@@react_native_version = ""
|
||||
@@use_nightly = false
|
||||
|
||||
def self.build_react_native_deps_from_source()
|
||||
return @@build_from_source
|
||||
@@ -66,6 +67,11 @@ class ReactNativeDependenciesUtils
|
||||
|
||||
def self.resolve_podspec_source()
|
||||
if ENV["RCT_USE_RN_DEP"] && ENV["RCT_USE_RN_DEP"] == "1"
|
||||
if @@use_nightly
|
||||
rndeps_log("Using nightly tarball")
|
||||
return self.podspec_source_download_prebuilt_nightly_tarball(@@react_native_version)
|
||||
end
|
||||
|
||||
rndeps_log("Using release tarball")
|
||||
return self.podspec_source_download_prebuild_release_tarball()
|
||||
end
|
||||
@@ -83,7 +89,12 @@ class ReactNativeDependenciesUtils
|
||||
@@react_native_path = react_native_path
|
||||
@@react_native_version = ENV["RCT_DEPS_VERSION"] == nil ? react_native_version : ENV["RCT_DEPS_VERSION"]
|
||||
|
||||
artifacts_exists = ENV["RCT_USE_RN_DEP"] == "1" && release_artifact_exists(@@react_native_version)
|
||||
if @@react_native_version.include? 'nightly'
|
||||
rndeps_log("Using nightly build")
|
||||
@@use_nightly = true
|
||||
end
|
||||
|
||||
artifacts_exists = ENV["RCT_USE_RN_DEP"] == "1" && (@@use_nightly ? nightly_artifact_exists(@@react_native_version) : release_artifact_exists(@@react_native_version))
|
||||
use_local_xcframework = ENV["RCT_USE_LOCAL_RN_DEP"] && File.exist?(ENV["RCT_USE_LOCAL_RN_DEP"])
|
||||
|
||||
if ENV["RCT_USE_LOCAL_RN_DEP"]
|
||||
@@ -129,11 +140,22 @@ class ReactNativeDependenciesUtils
|
||||
return "#{maven_repo_url}/#{group}/react-native-artifacts/#{version}/react-native-artifacts-#{version}-reactnative-dependencies-#{build_type.to_s}.tar.gz"
|
||||
end
|
||||
|
||||
def self.nightly_tarball_url(version)
|
||||
params = "r=snapshots\&g=com.facebook.react\&a=react-native-artifacts\&c=reactnative-dependencies-debug\&e=tar.gz\&v=#{version}-SNAPSHOT"
|
||||
return resolve_url_redirects("http://oss.sonatype.org/service/local/artifact/maven/redirect\?#{params}")
|
||||
end
|
||||
|
||||
def self.download_stable_rndeps(react_native_path, version, configuration)
|
||||
tarball_url = release_tarball_url(version, configuration)
|
||||
download_rndeps_tarball(react_native_path, tarball_url, version, configuration)
|
||||
end
|
||||
|
||||
def self.podspec_source_download_prebuilt_nightly_tarball(version)
|
||||
url = nightly_tarball_url(version)
|
||||
rndeps_log("Using nightly tarball from URL: #{url}")
|
||||
return {:http => url}
|
||||
end
|
||||
|
||||
def self.download_rndeps_tarball(react_native_path, tarball_url, version, configuration)
|
||||
destination_path = configuration == nil ?
|
||||
"#{artifacts_dir()}/reactnative-dependencies-#{version}.tar.gz" :
|
||||
@@ -152,6 +174,10 @@ class ReactNativeDependenciesUtils
|
||||
return artifact_exists(release_tarball_url(version, :debug))
|
||||
end
|
||||
|
||||
def self.nightly_artifact_exists(version)
|
||||
return artifact_exists(nightly_tarball_url(version).gsub("\\", ""))
|
||||
end
|
||||
|
||||
def self.artifacts_dir()
|
||||
return File.join(Pod::Config.instance.project_pods_root, "ReactNativeDependencies-artifacts")
|
||||
end
|
||||
@@ -177,4 +203,8 @@ class ReactNativeDependenciesUtils
|
||||
Pod::UI.puts log_message.yellow
|
||||
end
|
||||
end
|
||||
|
||||
def self.resolve_url_redirects(url)
|
||||
return (`curl -Ls -o /dev/null -w %{url_effective} \"#{url}\"`)
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user