Skip to content

Commit 0248a25

Browse files
authored
Merge pull request #210 from getsentry/bugfix/gradle
Fix gradle script getResDir for gradle > 3.0
2 parents 6904a0b + 4ea9298 commit 0248a25

File tree

4 files changed

+39
-45
lines changed

4 files changed

+39
-45
lines changed

appium/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ copy-local-files-to-example:
1515
rm -rf example/node_modules/react-native-sentry/ios/Sentry/Sources/Sentry/*
1616
rm -rf example/node_modules/react-native-sentry/android/*
1717
rm -rf example/node_modules/react-native-sentry/scripts/*
18+
rm -rf example/node_modules/react-native-sentry/sentry.gradle
1819
cp -r ../lib/* example/node_modules/react-native-sentry/lib/
20+
cp ../sentry.gradle example/node_modules/react-native-sentry/sentry.gradle
1921
cp -r ../scripts/* example/node_modules/react-native-sentry/scripts/
2022
find ../ios -name 'RN*.[h|m]' -exec cp {} example/node_modules/react-native-sentry/ios/ \;
2123
cp -r ../android/* example/node_modules/react-native-sentry/android/

appium/fastlane/Fastfile

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,20 @@ fastlane_version "2.48.0"
22

33
default_platform :ios
44

5+
def validate_android_build_output(output)
6+
UI.user_error!("1 Missing output in log") unless output.scan(/POST \/api\/0\/projects\/sentry-test\/react-native\/releases\/com.awesomeproject.full-1.0-full\/files\//).size >1
7+
UI.user_error!("2 Missing output in log") unless output.scan(/POST \/api\/0\/projects\/sentry-test\/react-native\/releases\/com.awesomeproject.demo-1.0-demo\/files\//).size >1
8+
UI.user_error!("3 Missing output in log") unless output.scan(/"dist": "4", "name": "~\/index.android.bundle"/).size >1
9+
UI.user_error!("4 Missing output in log") unless output.scan(/"dist": "3", "name": "~\/index.android.bundle"/).size >1
10+
UI.user_error!("5 Missing output in log") unless output.scan(/"dist": "4", "name": "~\/index.android.bundle.map"/).size >1
11+
UI.user_error!("6 Missing output in log") unless output.scan(/"dist": "3", "name": "~\/index.android.bundle.map"/).size >1
12+
UI.user_error!("7 Missing output in log") unless output.scan(/sentry_cli::commands::react_native_gradle.*intermediates\/assets\/full\/release\/index.android.bundle$/).size >1
13+
UI.user_error!("8 Missing output in log") unless output.scan(/sentry_cli::commands::react_native_gradle.*intermediates\/assets\/full\/release\/index.android.bundle.map$/).size >1
14+
UI.user_error!("9 Missing output in log") unless output.scan(/sentry_cli::commands::react_native_gradle.*intermediates\/assets\/demo\/release\/index.android.bundle$/).size >1
15+
UI.user_error!("10 Missing output in log") unless output.scan(/sentry_cli::commands::react_native_gradle.*intermediates\/assets\/demo\/release\/index.android.bundle.map$/).size >1
16+
UI.success("Android build output validated")
17+
end
18+
519
platform :ios do
620
before_all do
721
# ENV["SLACK_URL"] = "https://hooks.slack.com/services/..."
@@ -54,14 +68,15 @@ platform :ios do
5468
end
5569

5670
lane :build_android_for_device_farm do
57-
sh("cd ../example/android/; ./gradlew assembleRelease --stacktrace")
58-
sh("jarsigner -verbose -digestalg SHA1 -sigalg MD5withRSA -keystore release.keystore -storepass 123456 ../example/android/app/build/outputs/apk/app-release-unsigned.apk release")
71+
android_build_output = sh("cd ../example/android/; ./gradlew -Psentryloglevel=debug assembleRelease --stacktrace")
72+
validate_android_build_output(android_build_output)
73+
sh("jarsigner -verbose -digestalg SHA1 -sigalg MD5withRSA -keystore release.keystore -storepass 123456 ../example/android/app/build/outputs/apk/app-full-release-unsigned.apk release")
5974
end
6075

6176
lane :aws_android_upload_and_run do
6277
aws_device_farm(
6378
name: "react-native",
64-
binary_path: "example/android/app/build/outputs/apk/app-release-unsigned.apk",
79+
binary_path: "example/android/app/build/outputs/apk/app-full-release-unsigned.apk",
6580
device_pool: "Android",
6681
test_binary_path: "test_bundle.zip",
6782
test_package_type: "APPIUM_PYTHON_TEST_PACKAGE",

sentry.gradle

Lines changed: 18 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,13 @@
11
import org.apache.tools.ant.taskdefs.condition.Os
22

33
gradle.projectsEvaluated {
4-
// to find out which releases are being generated we hook into the process
5-
// resources task. From the "assetsDir" property we can extract in which
6-
// assets folder the task is operating. This folder matches where react native
7-
// will place the bundles.
8-
def releasesForFolder = [:];
4+
def releases = [];
95
android.applicationVariants.each { variant ->
106
def releaseName = "${variant.getApplicationId()}-${variant.getVersionName()}";
117
variant.outputs.each { output ->
128
def processTask = output.getProcessResources();
13-
def resDir = processTask.getResDir();
14-
def releases = releasesForFolder.get(resDir.toString()) as List<String>;
15-
if (releases == null) {
16-
releases = [];
17-
releasesForFolder.put(resDir.toString(), releases);
18-
}
199
def versionCode = output.getVersionCode();
20-
releases.add([releaseName, versionCode]);
10+
releases.add([output.getName(), releaseName, versionCode]);
2111
}
2212
}
2313

@@ -28,27 +18,6 @@ gradle.projectsEvaluated {
2818
task.name.startsWith("bundle") && task.name.endsWith("JsAndAssets")
2919
}
3020
bundleTasks.each { bundleTask ->
31-
def outputs = bundleTask.getOutputs();
32-
def allReleases = [:];
33-
outputs.getFiles().each { file ->
34-
def releases = releasesForFolder.get(file.toString());
35-
if (releases != null) {
36-
releases.each { item ->
37-
def codes = allReleases[item[0]] as List<String>;
38-
if (codes == null) {
39-
codes = [];
40-
allReleases[item[0]] = codes;
41-
}
42-
codes.add(item[1]);
43-
}
44-
}
45-
}
46-
47-
// this really should not happen but better be safe than sorry.
48-
if (allReleases.size() == 0) {
49-
return;
50-
}
51-
5221
def props = bundleTask.getProperties();
5322
def cmd = props.get("commandLine") as List<String>;
5423
def cmdArgs = props.get("args") as List<String>;
@@ -81,22 +50,30 @@ gradle.projectsEvaluated {
8150
bundleTask.setProperty("commandLine", cmd);
8251
bundleTask.setProperty("args", cmdArgs);
8352

84-
allReleases.each { releaseName, versionCodes ->
53+
releases.each { variant, releaseName, versionCodes ->
8554
def cliTask = tasks.create(
86-
name: bundleTask.getName() + "SentryUpload",
55+
name: bundleTask.getName() + variant + "SentryUpload",
8756
type: Exec) {
8857
description = "upload debug symbols to sentry"
8958

9059
workingDir reactRoot
9160
environment("SENTRY_PROPERTIES", propertiesFile)
61+
9262
def args = [
93-
cliExecutable,
94-
"react-native",
95-
"gradle",
96-
"--bundle", bundleOutput,
97-
"--sourcemap", sourcemapOutput,
98-
"--release", releaseName
63+
cliExecutable
9964
];
65+
if (project.hasProperty("sentryloglevel") ) {
66+
args.push("--log-level");
67+
args.push(sentryloglevel);
68+
}
69+
args.push("react-native");
70+
args.push("gradle");
71+
args.push("--bundle");
72+
args.push(bundleOutput);
73+
args.push("--sourcemap");
74+
args.push(sourcemapOutput);
75+
args.push("--release");
76+
args.push(releaseName);
10077

10178
versionCodes.each { versionCode ->
10279
args.add("--dist");

0 commit comments

Comments
 (0)