fastlane-plugin-sentry 1.4.1 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: '06911d0bda091746e4d3bade971e07af60834d3d'
4
- data.tar.gz: a1f76d7091c4c2643a95566b721d3371644f494c
2
+ SHA256:
3
+ metadata.gz: 44cdcc376ab1d5eb23be4b3df42df41439d9513223d75da50dce1e2bb355b45e
4
+ data.tar.gz: 2d704986551776f3541123eb35c57b1929f0ed61e43a38c4b8c246de2e84a112
5
5
  SHA512:
6
- metadata.gz: 1564c04efe1b966ee9a839a594d58ed7742f218fe17946c49a70c060100e187ea83d540e811002c64aaed73ff7e4998c4b38ba6990bda517b3a2f48d79ba9418
7
- data.tar.gz: 491d8f2f4709b00788200417bf0ad8a9232bc55bd335b698448e069b208bab9ca004abf2392247acfa0d0fb0c6d656549ef58f7b19ed31bda9e4b2b1c6f85438
6
+ metadata.gz: 77d45a74189f1150f3ede90a134f7e8b7bf1a62e637fa4631b74dcfac93b7c518593f930c2488bcde7674567b0fd0345647e8dc2379e70eca02057188b97bb84
7
+ data.tar.gz: d8240c42154fe0fdc00a36c0f6cba559cddf896a1ba3d321c5ece6ee4a863c1271e03a323fa1fe3efe6e4df782716d256494cc5b0184bb389069a30971b8041e
data/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  </p>
8
8
 
9
9
  [![fastlane Plugin Badge](https://rawcdn.githack.com/fastlane/fastlane/master/fastlane/assets/plugin-badge.svg)](https://rubygems.org/gems/fastlane-plugin-sentry)
10
- [![Build Status](https://img.shields.io/travis/getsentry/fastlane-plugin-sentry/master.svg?style=flat)](https://travis-ci.org/getsentry/fastlane-plugin-sentry)
10
+ [![Tests](https://img.shields.io/github/workflow/status/getsentry/sentry-fastlane/test?label=Tests)](https://github.com/getsentry/sentry-fastlane/actions?query=workflow%3A"test")
11
11
  [![Gem Version](https://badge.fury.io/rb/fastlane-plugin-sentry.svg)](https://badge.fury.io/rb/fastlane-plugin-sentry)
12
12
 
13
13
  ## Getting Started
@@ -38,7 +38,7 @@ sentry_upload_dsym(
38
38
  auth_token: '...', # Do not use if using api_key
39
39
  org_slug: '...',
40
40
  project_slug: '...',
41
- symbol_maps: 'path to bcsymbols folder' # use this if you have a bcsymbols folder
41
+ symbol_maps: 'path to bcsymbols folder', # use this if you have a bcsymbols folder
42
42
  dsym_path: './App.dSYM.zip',
43
43
  info_plist: '...' # optional, sentry-cli tries to find the correct plist by itself
44
44
  )
@@ -91,6 +91,33 @@ sentry_upload_sourcemap(
91
91
  )
92
92
  ```
93
93
 
94
+ #### Uploading Proguard Mapping File
95
+
96
+ ```ruby
97
+ sentry_upload_proguard(
98
+ api_key: '...', # Do not use if using auth_token
99
+ auth_token: '...', # Do not use if using api_key
100
+ org_slug: '...',
101
+ project_slug: '...',
102
+ android_manifest_path: 'path to merged AndroidManifest file' # found in `app/build/intermediates/manifests/full`
103
+ mapping_path: 'path to mapping.txt to upload',
104
+ )
105
+ ```
106
+
107
+ #### Associating commits
108
+
109
+ Useful for telling Sentry which commits are associated with a release.
110
+
111
+ ```ruby
112
+ sentry_set_commits(
113
+ version: '...',
114
+ app_identifier: '...', # pass in the bundle_identifer of your app
115
+ auto: false, # enable completely automated commit management
116
+ clear: false, # clear all current commits from the release
117
+ commit: '...', # commit spec, see `sentry-cli releases help set-commits` for more information
118
+ )
119
+ ```
120
+
94
121
  ## Issues and Feedback
95
122
 
96
123
  For any other issues and feedback about this plugin, please submit it to this repository.
@@ -101,7 +128,7 @@ For some more detailed help with plugins problems, check out the [Plugins Troubl
101
128
 
102
129
  ## Using `fastlane` Plugins
103
130
 
104
- For more information about how the `fastlane` plugin system works, check out the [Plugins documentation](https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Plugins.md) in the main `fastlane` repo.
131
+ For more information about how the `fastlane` plugin system works, check out the [Plugins documentation](https://docs.fastlane.tools/plugins/create-plugin/) in the main `fastlane` repo.
105
132
 
106
133
  ## About `fastlane`
107
134
 
@@ -8,7 +8,7 @@ module Fastlane
8
8
  Helper::SentryConfig.parse_api_params(params)
9
9
 
10
10
  version = params[:version]
11
- version = "#{params[:app_identifier]}-#{params[:version]}" if params[:app_identifier]
11
+ version = "#{params[:app_identifier]}@#{params[:version]}" if params[:app_identifier]
12
12
 
13
13
  command = [
14
14
  "sentry-cli",
@@ -8,7 +8,7 @@ module Fastlane
8
8
  Helper::SentryConfig.parse_api_params(params)
9
9
 
10
10
  version = params[:version]
11
- version = "#{params[:app_identifier]}-#{params[:version]}" if params[:app_identifier]
11
+ version = "#{params[:app_identifier]}@#{params[:version]}" if params[:app_identifier]
12
12
 
13
13
  command = [
14
14
  "sentry-cli",
@@ -0,0 +1,79 @@
1
+ module Fastlane
2
+ module Actions
3
+ class SentrySetCommitsAction < Action
4
+ def self.run(params)
5
+ require 'shellwords'
6
+
7
+ Helper::SentryHelper.check_sentry_cli!
8
+ Helper::SentryConfig.parse_api_params(params)
9
+
10
+ version = params[:version]
11
+ version = "#{params[:app_identifier]}@#{params[:version]}" if params[:app_identifier]
12
+
13
+ command = [
14
+ "sentry-cli",
15
+ "releases",
16
+ "set-commits",
17
+ version
18
+ ]
19
+
20
+ command.push('--auto') if params[:auto]
21
+ command.push('--clear') if params[:clear]
22
+ command.push('--commit').push(params[:commit]) unless params[:commit].nil?
23
+
24
+ Helper::SentryHelper.call_sentry_cli(command)
25
+ UI.success("Successfully set commits for release: #{version}")
26
+ end
27
+
28
+ #####################################################
29
+ # @!group Documentation
30
+ #####################################################
31
+
32
+ def self.description
33
+ "Set commits of a release"
34
+ end
35
+
36
+ def self.details
37
+ [
38
+ "This action allows you to set commits in a release for a project on Sentry.",
39
+ "See https://docs.sentry.io/cli/releases/#sentry-cli-commit-integration for more information."
40
+ ].join(" ")
41
+ end
42
+
43
+ def self.available_options
44
+ Helper::SentryConfig.common_api_config_items + [
45
+ FastlaneCore::ConfigItem.new(key: :version,
46
+ description: "Release version on Sentry"),
47
+ FastlaneCore::ConfigItem.new(key: :app_identifier,
48
+ short_option: "-a",
49
+ env_name: "SENTRY_APP_IDENTIFIER",
50
+ description: "App Bundle Identifier, prepended to version",
51
+ optional: true),
52
+ FastlaneCore::ConfigItem.new(key: :auto,
53
+ description: "Enable completely automated commit management",
54
+ is_string: false,
55
+ default_value: false),
56
+ FastlaneCore::ConfigItem.new(key: :clear,
57
+ description: "Clear all current commits from the release",
58
+ is_string: false,
59
+ default_value: false),
60
+ FastlaneCore::ConfigItem.new(key: :commit,
61
+ description: "Commit spec, see `sentry-cli releases help set-commits` for more information",
62
+ optional: true)
63
+ ]
64
+ end
65
+
66
+ def self.return_value
67
+ nil
68
+ end
69
+
70
+ def self.authors
71
+ ["brownoxford"]
72
+ end
73
+
74
+ def self.is_supported?(platform)
75
+ true
76
+ end
77
+ end
78
+ end
79
+ end
@@ -10,7 +10,7 @@ module Fastlane
10
10
  file = params[:file]
11
11
 
12
12
  version = params[:version]
13
- version = "#{params[:app_identifier]}-#{params[:version]}" if params[:app_identifier]
13
+ version = "#{params[:app_identifier]}@#{params[:version]}" if params[:app_identifier]
14
14
 
15
15
  command = [
16
16
  "sentry-cli",
@@ -0,0 +1,75 @@
1
+ module Fastlane
2
+ module Actions
3
+ class SentryUploadProguardAction < Action
4
+ def self.run(params)
5
+ Helper::SentryHelper.check_sentry_cli!
6
+ Helper::SentryConfig.parse_api_params(params)
7
+
8
+ # Params - mapping & manifest
9
+ mapping_path = params[:mapping_path]
10
+ android_manifest_path = params[:android_manifest_path]
11
+
12
+ # Verify files
13
+ UI.user_error!("Mapping file does not exist at path: #{mapping_path}") unless File.exist? mapping_path
14
+ UI.user_error!("AndroidManifest.xml file does not exist at path: #{android_manifest_path}") unless File.exist? android_manifest_path
15
+
16
+ command = [
17
+ "sentry-cli",
18
+ "upload-proguard",
19
+ "--android-manifest",
20
+ android_manifest_path,
21
+ mapping_path
22
+ ]
23
+
24
+ Helper::SentryHelper.call_sentry_cli(command)
25
+ UI.success("Successfully uploaded mapping file!")
26
+ end
27
+
28
+ #####################################################
29
+ # @!group Documentation
30
+ #####################################################
31
+
32
+ def self.description
33
+ "Upload mapping to a project on Sentry"
34
+ end
35
+
36
+ def self.details
37
+ [
38
+ "This action allows you to upload the proguard mapping file to Sentry.",
39
+ "See https://docs.sentry.io/cli/dif/proguard for more information."
40
+ ].join(" ")
41
+ end
42
+
43
+ def self.available_options
44
+ Helper::SentryConfig.common_api_config_items + [
45
+ FastlaneCore::ConfigItem.new(key: :mapping_path,
46
+ env_name: "ANDROID_MAPPING_PATH",
47
+ description: "Path to your proguard mapping.txt file",
48
+ optional: false,
49
+ verify_block: proc do |value|
50
+ UI.user_error! "Could not find your mapping file at path '#{value}'" unless File.exist?(value)
51
+ end),
52
+ FastlaneCore::ConfigItem.new(key: :android_manifest_path,
53
+ env_name: "ANDROID_MANIFEST_PATH",
54
+ description: "Path to your merged AndroidManifest file. This is usually found under `app/build/intermediates/manifests/full`",
55
+ optional: false,
56
+ verify_block: proc do |value|
57
+ UI.user_error! "Could not find your merged AndroidManifest file at path '#{value}'" unless File.exist?(value)
58
+ end)
59
+ ]
60
+ end
61
+
62
+ def self.return_value
63
+ nil
64
+ end
65
+
66
+ def self.authors
67
+ ["mpp-anasa"]
68
+ end
69
+
70
+ def self.is_supported?(platform)
71
+ platform == :android
72
+ end
73
+ end
74
+ end
75
+ end
@@ -10,23 +10,36 @@ module Fastlane
10
10
  version = params[:version]
11
11
  sourcemap = params[:sourcemap]
12
12
 
13
- version = "#{params[:app_identifier]}-#{params[:version]}" if params[:app_identifier]
13
+ version = "#{params[:app_identifier]}@#{params[:version]}" if params[:app_identifier]
14
14
 
15
15
  command = [
16
16
  "sentry-cli",
17
17
  "releases",
18
18
  "files",
19
- Shellwords.escape(version),
19
+ version,
20
20
  "upload-sourcemaps",
21
21
  sourcemap.to_s
22
22
  ]
23
23
 
24
24
  command.push('--rewrite') if params[:rewrite]
25
+ command.push('--no-rewrite') unless params[:rewrite]
25
26
  command.push('--strip-prefix') if params[:strip_prefix]
26
27
  command.push('--strip-common-prefix') if params[:strip_common_prefix]
27
28
  command.push('--url-prefix').push(params[:url_prefix]) unless params[:url_prefix].nil?
28
29
  command.push('--dist').push(params[:dist]) unless params[:dist].nil?
29
30
 
31
+ unless params[:ignore].nil?
32
+ # normalize to array
33
+ unless params[:ignore].kind_of?(Enumerable)
34
+ params[:ignore] = [params[:ignore]]
35
+ end
36
+ # no nil or empty strings
37
+ params[:ignore].reject! { |e| e.strip.empty? rescue true }
38
+ command.push('--ignore').push(*params[:ignore]) if params[:ignore].any?
39
+ end
40
+
41
+ command.push('--ignore-file').push(params[:ignore_file]) unless params[:ignore_file].nil?
42
+
30
43
  Helper::SentryHelper.call_sentry_cli(command)
31
44
  UI.success("Successfully uploaded files to release: #{version}")
32
45
  end
@@ -82,6 +95,13 @@ module Fastlane
82
95
  short_option: "-a",
83
96
  env_name: "SENTRY_APP_IDENTIFIER",
84
97
  description: "App Bundle Identifier, prepended to version",
98
+ optional: true),
99
+ FastlaneCore::ConfigItem.new(key: :ignore,
100
+ description: "Ignores all files and folders matching the given glob or array of globs",
101
+ is_string: false,
102
+ optional: true),
103
+ FastlaneCore::ConfigItem.new(key: :ignore_file,
104
+ description: "Ignore all files and folders specified in the given ignore file, e.g. .gitignore",
85
105
  optional: true)
86
106
 
87
107
  ]
@@ -41,12 +41,13 @@ module Fastlane
41
41
  has_api_key = !api_key.to_s.empty?
42
42
  has_auth_token = !auth_token.to_s.empty?
43
43
 
44
- skip_params_check = false
45
- if !has_org || !has_project || !has_auth_token
46
- skip_params_check = fallback_sentry_cli
47
- end
44
+ ENV['SENTRY_URL'] = url unless url.to_s.empty?
45
+ ENV['SENTRY_LOG_LEVEL'] = 'INFO' if FastlaneCore::Globals.verbose?
48
46
 
49
- if !skip_params_check
47
+ # Fallback to .sentryclirc if possible when no auth token is provided
48
+ if !has_api_key && !has_auth_token && fallback_sentry_cli_auth
49
+ UI.important("No auth config provided, will fallback to .sentryclirc")
50
+ else
50
51
  # Will fail if none or both authentication methods are provided
51
52
  if !has_api_key && !has_auth_token
52
53
  UI.user_error!("No API key or authentication token found for SentryAction given, pass using `api_key: 'key'` or `auth_token: 'token'`")
@@ -57,21 +58,20 @@ module Fastlane
57
58
  end
58
59
  ENV['SENTRY_API_KEY'] = api_key unless api_key.to_s.empty?
59
60
  ENV['SENTRY_AUTH_TOKEN'] = auth_token unless auth_token.to_s.empty?
60
- ENV['SENTRY_URL'] = url unless url.to_s.empty?
61
- ENV['SENTRY_LOG_LEVEL'] = 'INFO' if FastlaneCore::Globals.verbose?
61
+ end
62
+
63
+ if has_org && has_project
62
64
  ENV['SENTRY_ORG'] = Shellwords.escape(org) unless org.to_s.empty?
63
65
  ENV['SENTRY_PROJECT'] = Shellwords.escape(project) unless project.to_s.empty?
64
66
  else
65
- UI.important("No config provided, will fallback to .sentryclirc")
67
+ UI.important("No org/project config provided, will fallback to .sentryclirc")
66
68
  end
67
69
  end
68
70
 
69
- def self.fallback_sentry_cli
71
+ def self.fallback_sentry_cli_auth
70
72
  sentry_cli_result = JSON.parse(`sentry-cli info --config-status-json`)
71
73
  return (sentry_cli_result["auth"]["successful"] &&
72
- !sentry_cli_result["auth"]["type"].nil? &&
73
- !sentry_cli_result["config"]["org"].nil? &&
74
- !sentry_cli_result["config"]["project"].nil?)
74
+ !sentry_cli_result["auth"]["type"].nil?)
75
75
  end
76
76
  end
77
77
  end
@@ -33,12 +33,12 @@ module Fastlane
33
33
  end
34
34
  final_command = command.map { |arg| Shellwords.escape(arg) }.join(" ")
35
35
  Open3.popen3(final_command) do |stdin, stdout, stderr, wait_thr|
36
- while (line = stderr.gets)
37
- error << line.strip!
38
- end
39
36
  while (line = stdout.gets)
40
37
  UI.message(line.strip!)
41
38
  end
39
+ while (line = stderr.gets)
40
+ error << line.strip!
41
+ end
42
42
  exit_status = wait_thr.value
43
43
  unless exit_status.success? && error.empty?
44
44
  handle_error(error)
@@ -1,6 +1,6 @@
1
1
  module Fastlane
2
2
  module Sentry
3
- VERSION = "1.4.1"
4
- CLI_VERSION = "1.19.1"
3
+ VERSION = "1.8.1"
4
+ CLI_VERSION = "1.63.1"
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-sentry
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sentry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-06 00:00:00.000000000 Z
11
+ date: 2021-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -91,8 +91,10 @@ files:
91
91
  - lib/fastlane/plugin/sentry.rb
92
92
  - lib/fastlane/plugin/sentry/actions/sentry_create_release.rb
93
93
  - lib/fastlane/plugin/sentry/actions/sentry_finalize_release.rb
94
+ - lib/fastlane/plugin/sentry/actions/sentry_set_commits.rb
94
95
  - lib/fastlane/plugin/sentry/actions/sentry_upload_dsym.rb
95
96
  - lib/fastlane/plugin/sentry/actions/sentry_upload_file.rb
97
+ - lib/fastlane/plugin/sentry/actions/sentry_upload_proguard.rb
96
98
  - lib/fastlane/plugin/sentry/actions/sentry_upload_sourcemap.rb
97
99
  - lib/fastlane/plugin/sentry/helper/sentry_config.rb
98
100
  - lib/fastlane/plugin/sentry/helper/sentry_helper.rb
@@ -116,8 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
118
  - !ruby/object:Gem::Version
117
119
  version: '0'
118
120
  requirements: []
119
- rubyforge_project:
120
- rubygems_version: 2.5.2
121
+ rubygems_version: 3.0.3
121
122
  signing_key:
122
123
  specification_version: 4
123
124
  summary: Upload symbols to Sentry