fastlane-plugin-sentry 1.5.0 → 1.8.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 694c6c0337c64891bf86878741bbb9442a0ce79d
4
- data.tar.gz: 310fbe02e5192aaf65e293d8a8f02c27803324bf
2
+ SHA256:
3
+ metadata.gz: 997460b2dd7418643a318ce88f9ecf72e45a087e11ca1bfbb50da96ed9ec1fc6
4
+ data.tar.gz: cbfdbe73533b999f88124548a5e458989f2f599e3621fd7ab9b89500de37e573
5
5
  SHA512:
6
- metadata.gz: f70d09887c83a79c057db0dc6af8a52da136fe2d4abc0f1079cf9491e8b9ee41ce30f0bbd4f3dbf38987205ba966cd5caa26155f455228b77a83e0c521b608a8
7
- data.tar.gz: 7ae2b77c6376bef7834bebbf403eaa35ab4d5330e62e2e96c33a3c19ca5ad10ef43d6f35235b3f2e3ca6b72c98dc93881486e159170ad3acfe65b4be1e21224c
6
+ metadata.gz: b8f36f2206339e9f133b882a2fe52fb7961488784811e3d5f1c1af311bb584c5332079a697f9aad98e05c6b3845d7057b4892a1a1c1cfbf5eec888760718c6d1
7
+ data.tar.gz: db320f54c60e647f31ab222d0190eb3c82d480726832df20ebe62638edabeecf0d5610990e5cf20e044c148defa727c947bdd665f91e9dc10b3dacac3d743653
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,54 @@ 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
+
121
+ #### Create deploy
122
+
123
+ Creates a new release deployment for a project on Sentry.
124
+
125
+ ```ruby
126
+ sentry_create_deploy(
127
+ api_key: '...', # Do not use if using auth_token
128
+ auth_token: '...', # Do not use if using api_key
129
+ org_slug: '...',
130
+ project_slug: '...',
131
+ version: '...',
132
+ app_identifier: '...', # pass in the bundle_identifer of your app
133
+ env: 'staging', # The environment for this deploy. Required.
134
+ name: '...', # Optional human readable name
135
+ deploy_url: '...', # Optional URL that points to the deployment
136
+ started: 1622630647, # Optional unix timestamp when the deployment started
137
+ finished: 1622630700, # Optional unix timestamp when the deployment finished
138
+ time: 180 # Optional deployment duration in seconds. This can be specified alternatively to `started` and `finished`
139
+ )
140
+ ```
141
+
94
142
  ## Issues and Feedback
95
143
 
96
144
  For any other issues and feedback about this plugin, please submit it to this repository.
@@ -101,7 +149,7 @@ For some more detailed help with plugins problems, check out the [Plugins Troubl
101
149
 
102
150
  ## Using `fastlane` Plugins
103
151
 
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.
152
+ 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
153
 
106
154
  ## About `fastlane`
107
155
 
@@ -0,0 +1,95 @@
1
+ module Fastlane
2
+ module Actions
3
+ class SentryCreateDeployAction < 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
+ "deploys",
17
+ version,
18
+ "new"
19
+ ]
20
+ command.push('--env').push(params[:env]) unless params[:env].nil?
21
+ command.push('--name').push(params[:name]) unless params[:name].nil?
22
+ command.push('--url').push(params[:deploy_url]) unless params[:deploy_url].nil?
23
+ command.push('--started').push(params[:started]) unless params[:started].nil?
24
+ command.push('--finished').push(params[:finished]) unless params[:finished].nil?
25
+ command.push('--time').push(params[:time]) unless params[:time].nil?
26
+
27
+ Helper::SentryHelper.call_sentry_cli(command)
28
+ UI.success("Successfully created deploy: #{version}")
29
+ end
30
+
31
+ #####################################################
32
+ # @!group Documentation
33
+ #####################################################
34
+
35
+ def self.description
36
+ "Creates a new release deployment for a project on Sentry"
37
+ end
38
+
39
+ def self.details
40
+ [
41
+ "This action allows you to associate deploys to releases for a project on Sentry.",
42
+ "See https://docs.sentry.io/product/cli/releases/#creating-deploys for more information."
43
+ ].join(" ")
44
+ end
45
+
46
+ def self.available_options
47
+ Helper::SentryConfig.common_api_config_items + [
48
+ FastlaneCore::ConfigItem.new(key: :version,
49
+ description: "Release version to associate the deploy with on Sentry"),
50
+ FastlaneCore::ConfigItem.new(key: :env,
51
+ short_option: "-e",
52
+ description: "Set the environment for this release. This argument is required. Values that make sense here would be 'production' or 'staging'",
53
+ optional: false),
54
+ FastlaneCore::ConfigItem.new(key: :name,
55
+ short_option: "-n",
56
+ description: "Optional human readable name for this deployment",
57
+ optional: true),
58
+ FastlaneCore::ConfigItem.new(key: :deploy_url,
59
+ description: "Optional URL that points to the deployment",
60
+ optional: true),
61
+ FastlaneCore::ConfigItem.new(key: :started,
62
+ description: "Optional unix timestamp when the deployment started",
63
+ is_string: false,
64
+ optional: true),
65
+ FastlaneCore::ConfigItem.new(key: :finished,
66
+ description: "Optional unix timestamp when the deployment finished",
67
+ is_string: false,
68
+ optional: true),
69
+ FastlaneCore::ConfigItem.new(key: :time,
70
+ short_option: "-t",
71
+ description: "Optional deployment duration in seconds. This can be specified alternatively to `started` and `finished`",
72
+ is_string: false,
73
+ optional: true),
74
+ FastlaneCore::ConfigItem.new(key: :app_identifier,
75
+ short_option: "-a",
76
+ env_name: "SENTRY_APP_IDENTIFIER",
77
+ description: "App Bundle Identifier, prepended with the version.\nFor example bundle@version",
78
+ optional: true)
79
+ ]
80
+ end
81
+
82
+ def self.return_value
83
+ nil
84
+ end
85
+
86
+ def self.authors
87
+ ["denrase"]
88
+ end
89
+
90
+ def self.is_supported?(platform)
91
+ true
92
+ end
93
+ end
94
+ end
95
+ end
@@ -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.5.0"
4
- CLI_VERSION = "1.31.0"
3
+ VERSION = "1.8.2"
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.5.0
4
+ version: 1.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sentry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-15 00:00:00.000000000 Z
11
+ date: 2021-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -89,10 +89,13 @@ files:
89
89
  - LICENSE
90
90
  - README.md
91
91
  - lib/fastlane/plugin/sentry.rb
92
+ - lib/fastlane/plugin/sentry/actions/sentry_create_deploy.rb
92
93
  - lib/fastlane/plugin/sentry/actions/sentry_create_release.rb
93
94
  - lib/fastlane/plugin/sentry/actions/sentry_finalize_release.rb
95
+ - lib/fastlane/plugin/sentry/actions/sentry_set_commits.rb
94
96
  - lib/fastlane/plugin/sentry/actions/sentry_upload_dsym.rb
95
97
  - lib/fastlane/plugin/sentry/actions/sentry_upload_file.rb
98
+ - lib/fastlane/plugin/sentry/actions/sentry_upload_proguard.rb
96
99
  - lib/fastlane/plugin/sentry/actions/sentry_upload_sourcemap.rb
97
100
  - lib/fastlane/plugin/sentry/helper/sentry_config.rb
98
101
  - lib/fastlane/plugin/sentry/helper/sentry_helper.rb
@@ -116,8 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
119
  - !ruby/object:Gem::Version
117
120
  version: '0'
118
121
  requirements: []
119
- rubyforge_project:
120
- rubygems_version: 2.5.2
122
+ rubygems_version: 3.1.6
121
123
  signing_key:
122
124
  specification_version: 4
123
125
  summary: Upload symbols to Sentry