fastlane-plugin-sentry 1.36.0 → 2.0.0.pre.rc.2

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
2
  SHA256:
3
- metadata.gz: d69a57001f19204ede149e46a66e124c98cd28fb0b0091c458f87b60c76d761f
4
- data.tar.gz: fa6b0d5b673167f560c5c4cb988cd1d3a05663a48b59011dd71ecdcfbb0f7175
3
+ metadata.gz: 9f919f1108badfed572f27376653c95d03a7762c8b71f08a66f7af7c2ef61879
4
+ data.tar.gz: 61a2a871df259b2272d284852fd5a9d8b1fd8e1e8ea5e98c6016c383f3873981
5
5
  SHA512:
6
- metadata.gz: 789a8285457004d5c938df06b962586f663bdad356b0628d997efb56421d81b997a0dd28c09c8a5a59eff8e2ce38c6cb370e09ffc6225aae45cc50f75edf30b4
7
- data.tar.gz: 99f803618681d429cc565a0f283ccf919e6d83f5e8b14c692c2f28f2835f82504b087ae0617dc3473c9a093292badb5c8fca8af09f238848c5d03da130b7d2e2
6
+ metadata.gz: ff423c97bf0994307249576df7c7376abac551fa24d778dfd5fba56bc0de9aa5541f046136dfa470dce7f95d69ec94b094998aa7f52c4fe347c2b1795d719ae0
7
+ data.tar.gz: 0e76c6b8f118e0e1d1acced3f8f35e182a076b1f09f38b4c4a3762c32f356c14ce769a780c13a46becfb83373f6494696c7c7b1d0092e1e0275252db8ae344ae
data/README.md CHANGED
@@ -50,21 +50,19 @@ A subset of actions provided by the CLI: https://docs.sentry.io/learn/cli/
50
50
 
51
51
  ### Authentication & Configuration
52
52
 
53
- `auth_token` is the preferred authentication method with Sentry. This can be obtained on https://sentry.io/api/.
54
- `api_key` still works but will eventually become deprecated. This can be obtained through the settings of your project.
53
+ `auth_token` is the authentication method with Sentry. This can be obtained on https://sentry.io/api/.
55
54
  Also note that as of version `1.2.0` you no longer have to provide the required parameters, we will try to fallback to your `.sentryclirc` config file if possible.
56
55
 
57
- The following environment variables may be used in place of parameters: `SENTRY_API_KEY`, `SENTRY_AUTH_TOKEN`, `SENTRY_ORG_SLUG`, and `SENTRY_PROJECT_SLUG`.
56
+ The following environment variables may be used in place of parameters: `SENTRY_AUTH_TOKEN`, `SENTRY_ORG_SLUG`, and `SENTRY_PROJECT_SLUG`.
58
57
 
59
58
  ### Uploading Debug Information Files
60
59
 
61
60
  ```ruby
62
61
  sentry_debug_files_upload(
63
- api_key: '...', # Do not use if using auth_token
64
- auth_token: '...', # Do not use if using api_key
62
+ auth_token: '...',
65
63
  org_slug: '...',
66
64
  project_slug: '...',
67
- path: '/path/to/files', # Optional. Defaults to '.' when no value is provided. Path(s) can be a string, a comma-separated string, or an array of strings.
65
+ path: '/path/to/files', # Optional. Defaults to DSYM_OUTPUT_PATH from fastlane context if available, otherwise '.' (current directory). Path(s) can be a string, a comma-separated string, or an array of strings.
68
66
  )
69
67
  ```
70
68
 
@@ -72,45 +70,20 @@ The `SENTRY_DSYM_PATH` environment variable may be used in place of the `dsym_pa
72
70
 
73
71
  Further options:
74
72
 
75
- - __type__: Optional. Only consider debug information files of the given type. By default, all types are considered. Valid options: 'dsym', 'elf', 'breakpad', 'pdb', 'pe', 'sourcebundle', 'bcsymbolmap'.
76
- - __no_unwind__: Optional. Do not scan for stack unwinding information. Specify this flag for builds with disabled FPO, or when stackwalking occurs on the device. This usually excludes executables and dynamic libraries. They might still be uploaded, if they contain additional processable information (see other flags)".
77
- - __no_debug__: Optional. Do not scan for debugging information. This will usually exclude debug companion files. They might still be uploaded, if they contain additional processable information (see other flags)".
78
- - __no_sources__: Optional. "Do not scan for source information. This will usually exclude source bundle files. They might still be uploaded, if they contain additional processable information (see other flags)".
79
- - __ids__: Optional. Search for specific debug identifiers.
73
+ - __type__: Optional. Only consider debug information files of the given type. By default, all types are considered. Valid options: 'bcsymbolmap', 'breakpad', 'dsym', 'elf', 'jvm', 'pdb', 'pe', 'portablepdb', 'sourcebundle', 'wasm'.
74
+ - __no_unwind__: Optional. Do not scan for stack unwinding information. Specify this flag for builds with disabled FPO, or when stackwalking occurs on the device. This usually excludes executables and dynamic libraries. They might still be uploaded, if they contain additional processable information (see other flags).
75
+ - __no_debug__: Optional. Do not scan for debugging information. This will usually exclude debug companion files. They might still be uploaded, if they contain additional processable information (see other flags).
76
+ - __no_sources__: Optional. Do not scan for source information. This will usually exclude source bundle files. They might still be uploaded, if they contain additional processable information (see other flags).
77
+ - __id__: Optional. Search for specific debug identifiers.
80
78
  - __require_all__: Optional. Errors if not all identifiers specified with --id could be found.
81
- - __symbol_maps__: Optional. Optional path to BCSymbolMap files which are used to resolve hidden symbols in dSYM files downloaded from iTunes Connect. This requires the dsymutil tool to be available.
79
+ - __symbol_maps__: Optional. Path to BCSymbolMap files which are used to resolve hidden symbols in dSYM files downloaded from iTunes Connect. This requires the dsymutil tool to be available.
82
80
  - __derived_data__: Optional. Search for debug symbols in Xcode's derived data.
83
- - __no_zips__: Do not search in ZIP files.
84
- - __info_plist__: Optional. Optional path to the Info.plist. We will try to find this automatically if run from Xcode. Providing this information will associate the debug symbols with a specific ITC application and build in Sentry. Note that if you provide the plist explicitly it must already be processed.
85
- - __no_reprocessing__: Optional. Do not trigger reprocessing after uploading.
86
- - __force_foreground__: Optional. __Deprecated NoOp since 1.26.0. Before v 1.26.0__: Wait for the process to finish. By default, the upload process will detach and continue in the background when triggered from Xcode. When an error happens, a dialog is shown. If this parameter is passed Xcode will wait for the process to finish before the build finishes and output will be shown in the Xcode build output.
81
+ - __no_zips__: Optional. Do not search in ZIP files.
82
+ - __no_upload__: Optional. Disable the actual upload. This runs all steps for the processing but does not trigger the upload. This is useful if you just want to verify the setup or skip the upload in tests.
87
83
  - __include_sources__: Optional. Include sources from the local file system and upload them as source bundles.
88
- - __wait__: Wait for the server to fully process uploaded files. Errors can only be displayed if --wait is specified, but this will significantly slow down the upload process.
89
- - __upload_symbol_maps__: Optional. Upload any BCSymbolMap files found to allow Sentry to resolve hidden symbols, e.g. when it downloads dSYMs directly from App Store Connect or when you upload dSYMs without first resolving the hidden symbols using --symbol-maps.
90
-
91
- Or the deprecated ways, which will be removed in the next major update:
92
-
93
- ```ruby
94
- sentry_upload_dif(
95
- api_key: '...', # Do not use if using auth_token
96
- auth_token: '...', # Do not use if using api_key
97
- org_slug: '...',
98
- project_slug: '...',
99
- path: '/path/to/files', # Optional. Defaults to '.' when no value is provided. Path(s) can be a string, a comma-separated string, or an array of strings.
100
- )
101
- ```
102
-
103
- ```ruby
104
- sentry_upload_dsym(
105
- api_key: '...', # Do not use if using auth_token
106
- auth_token: '...', # Do not use if using api_key
107
- org_slug: '...',
108
- project_slug: '...',
109
- symbol_maps: 'path to bcsymbols folder', # use this if you have a bcsymbols folder
110
- dsym_path: './App.dSYM.zip',
111
- info_plist: '...' # optional, sentry-cli tries to find the correct plist by itself
112
- )
113
- ```
84
+ - __wait__: Optional. Wait for the server to fully process uploaded files. Errors can only be displayed if --wait or --wait-for is specified, but this will significantly slow down the upload process.
85
+ - __wait_for__: Optional. Wait for the server to fully process uploaded files, but at most for the given number of seconds. Errors can only be displayed if --wait or --wait-for is specified, but this will significantly slow down the upload process.
86
+ - __il2cpp_mapping__: Optional. Compute il2cpp line mappings and upload them along with sources.
114
87
 
115
88
  ### Uploading iOS Build Archives
116
89
 
@@ -118,8 +91,7 @@ Upload iOS build archives (.xcarchive) to Sentry for improved symbolication and
118
91
 
119
92
  ```ruby
120
93
  sentry_upload_build(
121
- api_key: '...', # Do not use if using auth_token
122
- auth_token: '...', # Do not use if using api_key
94
+ auth_token: '...',
123
95
  org_slug: '...',
124
96
  project_slug: '...',
125
97
  xcarchive_path: './build/MyApp.xcarchive', # Path to your .xcarchive file
@@ -132,7 +104,10 @@ sentry_upload_build(
132
104
  head_ref: 'feature-branch', # Name of the head branch (or SENTRY_HEAD_REF)
133
105
  base_ref: 'main', # Name of the base branch (or SENTRY_BASE_REF)
134
106
  pr_number: '123', # Pull request number (or SENTRY_PR_NUMBER)
135
- build_configuration: 'Release' # Build configuration (e.g., 'Release', 'Debug') (or SENTRY_BUILD_CONFIGURATION)
107
+ build_configuration: 'Release', # Build configuration (e.g., 'Release', 'Debug') (or SENTRY_BUILD_CONFIGURATION)
108
+ release_notes: 'Fixed critical bugs', # Optional. Release notes to use for the upload
109
+ force_git_metadata: false, # Optional. Force collection and sending of git metadata
110
+ no_git_metadata: false # Optional. Disable collection and sending of git metadata
136
111
  )
137
112
  ```
138
113
 
@@ -144,13 +119,13 @@ This action is only supported on iOS platform.
144
119
 
145
120
  ```ruby
146
121
  sentry_create_release(
147
- api_key: '...',
148
122
  auth_token: '...',
149
123
  org_slug: '...',
150
124
  project_slug: '...',
151
125
  version: '...', # release version to create
152
126
  app_identifier: '...', # pass in the bundle_identifer of your app
153
- finalize: true # Whether to finalize the release. If not provided or false, the release can be finalized using the sentry_finalize_release action
127
+ finalize: true, # Whether to finalize the release. If not provided or false, the release can be finalized using the sentry_finalize_release action
128
+ release_url: 'https://github.com/owner/repo/releases/tag/v1.0.0' # Optional. URL to the release for information purposes
154
129
  )
155
130
  ```
156
131
 
@@ -160,7 +135,6 @@ Useful for uploading build artifacts and JS sourcemaps for react-native apps bui
160
135
 
161
136
  ```ruby
162
137
  sentry_upload_sourcemap(
163
- api_key: '...',
164
138
  auth_token: '...',
165
139
  org_slug: '...',
166
140
  project_slug: '...',
@@ -169,7 +143,15 @@ sentry_upload_sourcemap(
169
143
  build: '...', # Optionally pass in the build number of your app
170
144
  dist: '...', # optional distribution of the release usually the buildnumber
171
145
  sourcemap: ['main.jsbundle', 'main.jsbundle.map'], # Sourcemap(s) to upload. Path(s) can be a comma-separated string or an array of strings.
172
- rewrite: true
146
+ rewrite: true, # Rewrite the sourcemaps before upload (default: false)
147
+ url_prefix: '~/', # Optional. Sets a URL prefix in front of all files
148
+ url_suffix: '.map', # Optional. Sets a URL suffix to append to all filenames
149
+ note: 'Build from CI', # Optional. Adds a note to the uploaded artifact bundle
150
+ validate: true, # Optional. Enable basic sourcemap validation
151
+ decompress: true, # Optional. Enable files gzip decompression prior to upload
152
+ wait: true, # Optional. Wait for the server to fully process uploaded files
153
+ wait_for: 60, # Optional. Wait for the server to fully process uploaded files, but at most for the given number of seconds
154
+ strict: true # Optional. Fail with a non-zero exit code if the specified source map file cannot be uploaded
173
155
  )
174
156
  ```
175
157
 
@@ -177,12 +159,14 @@ sentry_upload_sourcemap(
177
159
 
178
160
  ```ruby
179
161
  sentry_upload_proguard(
180
- api_key: '...', # Do not use if using auth_token
181
- auth_token: '...', # Do not use if using api_key
162
+ auth_token: '...',
182
163
  org_slug: '...',
183
164
  project_slug: '...',
184
- android_manifest_path: 'path to merged AndroidManifest file', # found in `app/build/intermediates/manifests/full`
185
165
  mapping_path: 'path to mapping.txt to upload',
166
+ no_upload: false, # Optional. Disable the actual upload (useful for verification)
167
+ write_properties: 'path/to/properties/file', # Optional. Write UUIDs for processed mapping files into properties file
168
+ require_one: true, # Optional. Require at least one file to upload or the command will error
169
+ uuid: 'custom-uuid' # Optional. Explicitly override the UUID of the mapping file
186
170
  )
187
171
  ```
188
172
 
@@ -198,7 +182,9 @@ sentry_set_commits(
198
182
  auto: false, # enable completely automated commit management
199
183
  clear: false, # clear all current commits from the release
200
184
  commit: '...', # commit spec, see `sentry-cli releases help set-commits` for more information
201
- ignore_missing: false # Optional boolean value: When the flag is set and the previous release commit was not found in the repository, will create a release with the default commits count (or the one specified with `--initial-depth`) instead of failing the command.
185
+ ignore_missing: false, # Optional boolean value: When the flag is set and the previous release commit was not found in the repository, will create a release with the default commits count (or the one specified with `--initial-depth`) instead of failing the command.
186
+ local: false, # Optional. Set commits of a release from local git
187
+ initial_depth: 20 # Optional. Set the number of commits of the initial release (default: 20)
202
188
  )
203
189
  ```
204
190
 
@@ -208,8 +194,7 @@ Creates a new release deployment for a project on Sentry.
208
194
 
209
195
  ```ruby
210
196
  sentry_create_deploy(
211
- api_key: '...', # Do not use if using auth_token
212
- auth_token: '...', # Do not use if using api_key
197
+ auth_token: '...',
213
198
  org_slug: '...',
214
199
  project_slug: '...',
215
200
  version: '...',
@@ -244,6 +229,71 @@ You can set the `sentry-cli` [configuration value](https://docs.sentry.io/produc
244
229
 
245
230
  For any other issues and feedback about this plugin, please submit it to this repository.
246
231
 
232
+ ## Migration Guide
233
+
234
+ ### Migrating from sentry-fastlane-plugin v1 to v2
235
+
236
+ When upgrading to the latest version of this plugin (which uses sentry-cli v3), you may need to update your Fastfiles. Here are the key changes:
237
+
238
+ #### Parameter Name Changes
239
+
240
+ - **`sentry_debug_files_upload`**: The `ids` parameter has been renamed to `id` (singular). Update your Fastfiles:
241
+ ```ruby
242
+ # Before
243
+ sentry_debug_files_upload(ids: 'abc123')
244
+
245
+ # After
246
+ sentry_debug_files_upload(id: 'abc123')
247
+ ```
248
+
249
+ #### Authentication Changes
250
+
251
+ - **All actions**: The `api_key` parameter has been removed in favor of `auth_token` with the release of [v2.0.0](https://github.com/getsentry/sentry-fastlane-plugin/releases/2.0.0-rc.1). All actions now require `auth_token` for authentication. Update your Fastfiles:
252
+ ```ruby
253
+ # Before v2.0.0-rc.1
254
+ sentry_debug_files_upload(api_key: '...')
255
+
256
+ # After v2.0.0-rc.1
257
+ sentry_debug_files_upload(auth_token: '...')
258
+ ```
259
+
260
+ #### Parameter Behavior Changes
261
+
262
+ - **`sentry_debug_files_upload`**: The `path` parameter default behavior has changed. Starting with [v2.0.0-rc.1](https://github.com/getsentry/sentry-fastlane-plugin/releases/v2.0.0-rc.1) it defaults to `DSYM_OUTPUT_PATH` from fastlane's lane context if available (set by actions like `build_app` or `ipa`), otherwise falls back to `'.'` (current directory). This changes the default behavior when `DSYM_OUTPUT_PATH` is set. If you were relying on the previous behavior of always searching from the current directory, explicitly specify `path: '.'`:
263
+ ```ruby
264
+ # To maintain previous behavior (always search from current directory)
265
+ sentry_debug_files_upload(path: '.')
266
+ ```
267
+
268
+ #### Removed Parameters
269
+
270
+ The following parameters have been removed as they are no longer supported in sentry-cli v3:
271
+
272
+ - **`sentry_debug_files_upload`**: Remove `info_plist`, `no_reprocessing`, `upload_symbol_maps`, and `force_foreground` parameters if you're using them. The `force_foreground` parameter was deprecated as a no-op since v1.26.0 and has now been removed.
273
+ - **`sentry_upload_proguard`**: Remove `android_manifest_path` parameter if you're using it (no longer needed).
274
+
275
+ #### New Available Options
276
+
277
+ Many new options have been added to match sentry-cli v3 capabilities. See the action documentation above for all available options. Some notable additions:
278
+
279
+ - **`sentry_debug_files_upload`**: Added `wait_for`, `no_upload`, `il2cpp_mapping` options. Type validation now includes `jvm`, `portablepdb`, and `wasm`.
280
+ - **`sentry_upload_sourcemap`**: Added `url_suffix`, `note`, `validate`, `decompress`, `wait`, `wait_for`, `no_sourcemap_reference`, `debug_id_reference`, `bundle`, `bundle_sourcemap`, `ext`, and `strict` options.
281
+ - **`sentry_upload_proguard`**: Added `no_upload`, `write_properties`, `require_one`, and `uuid` options.
282
+ - **`sentry_upload_build`**: Added `release_notes`, `force_git_metadata`, and `no_git_metadata` options.
283
+ - **`sentry_create_release`**: Added `release_url` option.
284
+ - **`sentry_finalize_release`**: Added `release_url` and `released` options.
285
+ - **`sentry_set_commits`**: Added `local` and `initial_depth` options.
286
+
287
+ #### Removed Actions
288
+
289
+ The following actions have been removed and replaced:
290
+
291
+ - **`sentry_upload_file`**: Use `sentry_upload_sourcemap` for source maps or other specialized upload actions.
292
+ - **`sentry_upload_dsym`**: Use `sentry_debug_files_upload` with appropriate `path` parameter.
293
+ - **`sentry_upload_dif`**: Use `sentry_debug_files_upload` with appropriate `path` parameter.
294
+
295
+ For more details on sentry-cli v3 changes, see the [sentry-cli 3.0.0 release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.0.0).
296
+
247
297
  ## Troubleshooting
248
298
 
249
299
  For some more detailed help with plugins problems, check out the [Plugins Troubleshooting](https://github.com/fastlane/fastlane/blob/master/fastlane/docs/PluginsTroubleshooting.md) doc in the main `fastlane` repo.
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -16,6 +16,7 @@ module Fastlane
16
16
  version
17
17
  ]
18
18
  command.push("--finalize") if params[:finalize] == true
19
+ command.push("--url").push(params[:release_url]) unless params[:release_url].nil?
19
20
 
20
21
  Helper::SentryHelper.call_sentry_cli(params, command)
21
22
  UI.success("Successfully created release: #{version}")
@@ -53,6 +54,9 @@ module Fastlane
53
54
  description: "Whether to finalize the release. If not provided or false, the release can be finalized using the finalize_release action",
54
55
  default_value: false,
55
56
  is_string: false,
57
+ optional: true),
58
+ FastlaneCore::ConfigItem.new(key: :release_url,
59
+ description: "Optional URL to the release for information purposes",
56
60
  optional: true)
57
61
  ]
58
62
  end
@@ -7,7 +7,15 @@ module Fastlane
7
7
  Helper::SentryConfig.parse_api_params(params)
8
8
 
9
9
  paths = params[:path]
10
- paths = ['.'] if paths.nil?
10
+ # Use DSYM_OUTPUT_PATH from fastlane context if available, otherwise default to current directory
11
+ if paths.nil?
12
+ dsym_path = Actions.lane_context[SharedValues::DSYM_OUTPUT_PATH]
13
+ if dsym_path && !dsym_path.to_s.empty?
14
+ paths = [dsym_path]
15
+ else
16
+ paths = ['.']
17
+ end
18
+ end
11
19
 
12
20
  command = [
13
21
  "debug-files",
@@ -19,17 +27,16 @@ module Fastlane
19
27
  command.push('--no-unwind') unless params[:no_unwind].nil?
20
28
  command.push('--no-debug') unless params[:no_debug].nil?
21
29
  command.push('--no-sources') unless params[:no_sources].nil?
22
- command.push('--ids').push(params[:ids]) unless params[:ids].nil?
30
+ command.push('--id').push(params[:id]) unless params[:id].nil?
23
31
  command.push('--require-all') unless params[:require_all].nil?
24
32
  command.push('--symbol-maps').push(params[:symbol_maps]) unless params[:symbol_maps].nil?
25
33
  command.push('--derived-data') unless params[:derived_data].nil?
26
34
  command.push('--no-zips') unless params[:no_zips].nil?
27
- command.push('--info-plist').push(params[:info_plist]) unless params[:info_plist].nil?
28
- command.push('--no-reprocessing') unless params[:no_reprocessing].nil?
29
- command.push('--force-foreground') unless params[:force_foreground].nil?
30
- command.push('--include-sources') unless params[:include_sources] != true
35
+ command.push('--no-upload') unless params[:no_upload].nil?
36
+ command.push('--include-sources') if params[:include_sources] == true
31
37
  command.push('--wait') unless params[:wait].nil?
32
- command.push('--upload-symbol-maps') unless params[:upload_symbol_maps].nil?
38
+ command.push('--wait-for').push(params[:wait_for]) unless params[:wait_for].nil?
39
+ command.push('--il2cpp-mapping') unless params[:il2cpp_mapping].nil?
33
40
 
34
41
  Helper::SentryHelper.call_sentry_cli(params, command)
35
42
  UI.success("Successfully ran debug-files upload")
@@ -53,7 +60,7 @@ module Fastlane
53
60
  def self.available_options
54
61
  Helper::SentryConfig.common_api_config_items + [
55
62
  FastlaneCore::ConfigItem.new(key: :path,
56
- description: "Path or an array of paths to search recursively for symbol files",
63
+ description: "Path or an array of paths to search recursively for symbol files. Defaults to DSYM_OUTPUT_PATH from fastlane context if available, otherwise '.' (current directory)",
57
64
  type: Array,
58
65
  optional: true),
59
66
  FastlaneCore::ConfigItem.new(key: :type,
@@ -62,7 +69,7 @@ module Fastlane
62
69
  type. By default, all types are considered",
63
70
  optional: true,
64
71
  verify_block: proc do |value|
65
- UI.user_error! "Invalid value '#{value}'" unless ['dsym', 'elf', 'breakpad', 'pdb', 'pe', 'sourcebundle', 'bcsymbolmap'].include? value
72
+ UI.user_error! "Invalid value '#{value}'" unless ['bcsymbolmap', 'breakpad', 'dsym', 'elf', 'jvm', 'pdb', 'pe', 'portablepdb', 'sourcebundle', 'wasm'].include? value
66
73
  end),
67
74
  FastlaneCore::ConfigItem.new(key: :no_unwind,
68
75
  description: "Do not scan for stack unwinding information. Specify \
@@ -88,7 +95,7 @@ module Fastlane
88
95
  processable information (see other flags)",
89
96
  is_string: false,
90
97
  optional: true),
91
- FastlaneCore::ConfigItem.new(key: :ids,
98
+ FastlaneCore::ConfigItem.new(key: :id,
92
99
  description: "Search for specific debug identifiers",
93
100
  optional: true),
94
101
  FastlaneCore::ConfigItem.new(key: :require_all,
@@ -109,24 +116,10 @@ module Fastlane
109
116
  description: "Do not search in ZIP files",
110
117
  is_string: false,
111
118
  optional: true),
112
- FastlaneCore::ConfigItem.new(key: :info_plist,
113
- description: "Optional path to the Info.plist.{n}We will try to find this \
114
- automatically if run from Xcode. Providing this information \
115
- will associate the debug symbols with a specific ITC application \
116
- and build in Sentry. Note that if you provide the plist \
117
- explicitly it must already be processed",
118
- optional: true),
119
- FastlaneCore::ConfigItem.new(key: :no_reprocessing,
120
- description: "Do not trigger reprocessing after uploading",
121
- is_string: false,
122
- optional: true),
123
- FastlaneCore::ConfigItem.new(key: :force_foreground,
124
- description: "Wait for the process to finish.{n}\
125
- By default, the upload process will detach and continue in the \
126
- background when triggered from Xcode. When an error happens, \
127
- a dialog is shown. If this parameter is passed Xcode will wait \
128
- for the process to finish before the build finishes and output \
129
- will be shown in the Xcode build output",
119
+ FastlaneCore::ConfigItem.new(key: :no_upload,
120
+ description: "Disable the actual upload. This runs all steps for the \
121
+ processing but does not trigger the upload. This is useful if \
122
+ you just want to verify the setup or skip the upload in tests",
130
123
  is_string: false,
131
124
  optional: true),
132
125
  FastlaneCore::ConfigItem.new(key: :include_sources,
@@ -136,15 +129,18 @@ module Fastlane
136
129
  optional: true),
137
130
  FastlaneCore::ConfigItem.new(key: :wait,
138
131
  description: "Wait for the server to fully process uploaded files. Errors \
139
- can only be displayed if --wait is specified, but this will \
132
+ can only be displayed if --wait or --wait-for is specified, but this will \
140
133
  significantly slow down the upload process",
141
134
  is_string: false,
142
135
  optional: true),
143
- FastlaneCore::ConfigItem.new(key: :upload_symbol_maps,
144
- description: "Upload any BCSymbolMap files found to allow Sentry to resolve \
145
- hidden symbols, e.g. when it downloads dSYMs directly from App \
146
- Store Connect or when you upload dSYMs without first resolving \
147
- the hidden symbols using --symbol-maps",
136
+ FastlaneCore::ConfigItem.new(key: :wait_for,
137
+ description: "Wait for the server to fully process uploaded files, but at most \
138
+ for the given number of seconds. Errors can only be displayed if --wait or \
139
+ --wait-for is specified, but this will significantly slow down the upload process",
140
+ type: Integer,
141
+ optional: true),
142
+ FastlaneCore::ConfigItem.new(key: :il2cpp_mapping,
143
+ description: "Compute il2cpp line mappings and upload them along with sources",
148
144
  is_string: false,
149
145
  optional: true)
150
146
  ]
@@ -15,6 +15,8 @@ module Fastlane
15
15
  "finalize",
16
16
  version
17
17
  ]
18
+ command.push("--url").push(params[:release_url]) unless params[:release_url].nil?
19
+ command.push("--released").push(params[:released]) unless params[:released].nil?
18
20
 
19
21
  Helper::SentryHelper.call_sentry_cli(params, command)
20
22
  UI.success("Successfully finalized release: #{version}")
@@ -47,6 +49,12 @@ module Fastlane
47
49
  FastlaneCore::ConfigItem.new(key: :build,
48
50
  short_option: "-b",
49
51
  description: "Release build to finalize on Sentry",
52
+ optional: true),
53
+ FastlaneCore::ConfigItem.new(key: :release_url,
54
+ description: "Optional URL to the release for information purposes",
55
+ optional: true),
56
+ FastlaneCore::ConfigItem.new(key: :released,
57
+ description: "Set the release time. Defaults to the current time if not provided",
50
58
  optional: true)
51
59
  ]
52
60
  end
@@ -19,6 +19,8 @@ module Fastlane
19
19
  command.push('--auto') if params[:auto]
20
20
  command.push('--clear') if params[:clear]
21
21
  command.push('--ignore-missing') if params[:ignore_missing]
22
+ command.push('--local') if params[:local]
23
+ command.push('--initial-depth').push(params[:initial_depth]) unless params[:initial_depth].nil?
22
24
  command.push('--commit').push(params[:commit]) unless params[:commit].nil?
23
25
 
24
26
  Helper::SentryHelper.call_sentry_cli(params, command)
@@ -67,7 +69,17 @@ module Fastlane
67
69
  FastlaneCore::ConfigItem.new(key: :ignore_missing,
68
70
  description: "When enabled, if the previous release commit was not found in the repository, will create a release with the default commits count (or the one specified with `--initial-depth`) instead of failing the command",
69
71
  is_string: false,
70
- default_value: false)
72
+ default_value: false),
73
+ FastlaneCore::ConfigItem.new(key: :local,
74
+ description: "Set commits of a release from local git. This requires that the command \
75
+ is run from within a git repository. sentry-cli will then automatically find \
76
+ remotely configured repositories and discover commits",
77
+ is_string: false,
78
+ optional: true),
79
+ FastlaneCore::ConfigItem.new(key: :initial_depth,
80
+ description: "Set the number of commits of the initial release. The default is 20",
81
+ type: Integer,
82
+ optional: true)
71
83
  ]
72
84
  end
73
85
 
@@ -25,6 +25,9 @@ module Fastlane
25
25
  command << "--base-ref" << params[:base_ref] if params[:base_ref]
26
26
  command << "--pr-number" << params[:pr_number] if params[:pr_number]
27
27
  command << "--build-configuration" << params[:build_configuration] if params[:build_configuration]
28
+ command << "--release-notes" << params[:release_notes] if params[:release_notes]
29
+ command << "--force-git-metadata" if params[:force_git_metadata]
30
+ command << "--no-git-metadata" if params[:no_git_metadata]
28
31
 
29
32
  Helper::SentryHelper.call_sentry_cli(params, command)
30
33
  UI.success("Successfully uploaded build archive: #{xcarchive_path}")
@@ -95,7 +98,21 @@ module Fastlane
95
98
  env_name: "SENTRY_BUILD_CONFIGURATION",
96
99
  description: "The build configuration (e.g., 'Release', 'Debug')",
97
100
  optional: true,
98
- is_string: true)
101
+ is_string: true),
102
+ FastlaneCore::ConfigItem.new(key: :release_notes,
103
+ description: "The release notes to use for the upload",
104
+ optional: true,
105
+ is_string: true),
106
+ FastlaneCore::ConfigItem.new(key: :force_git_metadata,
107
+ description: "Force collection and sending of git metadata (branch, commit, etc.). \
108
+ If neither this nor --no-git-metadata is specified, git metadata is automatically \
109
+ collected when running in most CI environments",
110
+ is_string: false,
111
+ optional: true),
112
+ FastlaneCore::ConfigItem.new(key: :no_git_metadata,
113
+ description: "Disable collection and sending of git metadata",
114
+ is_string: false,
115
+ optional: true)
99
116
  ]
100
117
  end
101
118
 
@@ -4,21 +4,21 @@ module Fastlane
4
4
  def self.run(params)
5
5
  Helper::SentryConfig.parse_api_params(params)
6
6
 
7
- # Params - mapping & manifest
8
7
  mapping_path = params[:mapping_path]
9
- android_manifest_path = params[:android_manifest_path]
10
8
 
11
- # Verify files
9
+ # Verify file exists
12
10
  UI.user_error!("Mapping file does not exist at path: #{mapping_path}") unless File.exist? mapping_path
13
- UI.user_error!("AndroidManifest.xml file does not exist at path: #{android_manifest_path}") unless File.exist? android_manifest_path
14
11
 
15
12
  command = [
16
13
  "upload-proguard",
17
- "--android-manifest",
18
- android_manifest_path,
19
14
  mapping_path
20
15
  ]
21
16
 
17
+ command.push('--no-upload') if params[:no_upload]
18
+ command.push('--write-properties').push(params[:write_properties]) unless params[:write_properties].nil?
19
+ command.push('--require-one') if params[:require_one]
20
+ command.push('--uuid').push(params[:uuid]) unless params[:uuid].nil?
21
+
22
22
  Helper::SentryHelper.call_sentry_cli(params, command)
23
23
  UI.success("Successfully uploaded mapping file!")
24
24
  end
@@ -47,13 +47,28 @@ module Fastlane
47
47
  verify_block: proc do |value|
48
48
  UI.user_error! "Could not find your mapping file at path '#{value}'" unless File.exist?(value)
49
49
  end),
50
- FastlaneCore::ConfigItem.new(key: :android_manifest_path,
51
- env_name: "ANDROID_MANIFEST_PATH",
52
- description: "Path to your merged AndroidManifest file. This is usually found under `app/build/intermediates/manifests/full`",
53
- optional: false,
54
- verify_block: proc do |value|
55
- UI.user_error! "Could not find your merged AndroidManifest file at path '#{value}'" unless File.exist?(value)
56
- end)
50
+ FastlaneCore::ConfigItem.new(key: :no_upload,
51
+ description: "Disable the actual upload. This runs all steps for the processing \
52
+ but does not trigger the upload. This is useful if you just want to verify the \
53
+ mapping files and write the proguard UUIDs into a properties file",
54
+ is_string: false,
55
+ optional: true),
56
+ FastlaneCore::ConfigItem.new(key: :write_properties,
57
+ description: "Write the UUIDs for the processed mapping files into the given \
58
+ properties file",
59
+ optional: true),
60
+ FastlaneCore::ConfigItem.new(key: :require_one,
61
+ description: "Requires at least one file to upload or the command will error",
62
+ is_string: false,
63
+ optional: true),
64
+ FastlaneCore::ConfigItem.new(key: :uuid,
65
+ description: "Explicitly override the UUID of the mapping file with another one. \
66
+ This should be used with caution as it means that you can upload multiple mapping \
67
+ files if you don't take care. This however can be useful if you have a build \
68
+ process in which you need to know the UUID of the proguard file before it was \
69
+ created. If you upload a file with a forced UUID you can only upload a single \
70
+ proguard file",
71
+ optional: true)
57
72
  ]
58
73
  end
59
74
 
@@ -13,19 +13,29 @@ module Fastlane
13
13
  sourcemaps = params[:sourcemap]
14
14
 
15
15
  command = [
16
- "releases",
17
- "files",
18
- version,
19
- "upload-sourcemaps"
16
+ "sourcemaps",
17
+ "upload",
18
+ "--release",
19
+ version
20
20
  ]
21
21
  command += sourcemaps
22
22
 
23
- command.push('--rewrite') if params[:rewrite]
24
23
  command.push('--no-rewrite') unless params[:rewrite]
25
24
  command.push('--strip-prefix').push(params[:strip_prefix]) if params[:strip_prefix]
26
25
  command.push('--strip-common-prefix') if params[:strip_common_prefix]
27
26
  command.push('--url-prefix').push(params[:url_prefix]) unless params[:url_prefix].nil?
27
+ command.push('--url-suffix').push(params[:url_suffix]) unless params[:url_suffix].nil?
28
28
  command.push('--dist').push(params[:dist]) unless params[:dist].nil?
29
+ command.push('--note').push(params[:note]) unless params[:note].nil?
30
+ command.push('--validate') if params[:validate]
31
+ command.push('--decompress') if params[:decompress]
32
+ command.push('--wait') if params[:wait]
33
+ command.push('--wait-for').push(params[:wait_for]) unless params[:wait_for].nil?
34
+ command.push('--no-sourcemap-reference') if params[:no_sourcemap_reference]
35
+ command.push('--debug-id-reference') if params[:debug_id_reference]
36
+ command.push('--bundle').push(params[:bundle]) unless params[:bundle].nil?
37
+ command.push('--bundle-sourcemap').push(params[:bundle_sourcemap]) unless params[:bundle_sourcemap].nil?
38
+ command.push('--strict') if params[:strict]
29
39
 
30
40
  unless params[:ignore].nil?
31
41
  # normalize to array
@@ -38,11 +48,23 @@ module Fastlane
38
48
  rescue StandardError
39
49
  true
40
50
  end
41
- command.push('--ignore').push(*params[:ignore]) if params[:ignore].any?
51
+ params[:ignore].each do |pattern|
52
+ command.push('--ignore').push(pattern)
53
+ end
42
54
  end
43
55
 
44
56
  command.push('--ignore-file').push(params[:ignore_file]) unless params[:ignore_file].nil?
45
57
 
58
+ unless params[:ext].nil?
59
+ # normalize to array
60
+ unless params[:ext].kind_of?(Enumerable)
61
+ params[:ext] = [params[:ext]]
62
+ end
63
+ params[:ext].each do |extension|
64
+ command.push('--ext').push(extension)
65
+ end
66
+ end
67
+
46
68
  Helper::SentryHelper.call_sentry_cli(params, command)
47
69
  UI.success("Successfully uploaded files to release: #{version}")
48
70
  end
@@ -93,9 +115,11 @@ module Fastlane
93
115
  optional: true),
94
116
  FastlaneCore::ConfigItem.new(key: :strip_prefix,
95
117
  conflicting_options: [:strip_common_prefix],
96
- description: "Chop-off a prefix from uploaded files",
97
- default_value: false,
98
- is_string: false,
118
+ description: "Chop-off a prefix from uploaded files. Strips the given prefix from all \
119
+ sources references inside the upload sourcemaps (paths used within the sourcemap \
120
+ content, to map minified code to it's original source). Only sources that start \
121
+ with the given prefix will be stripped. This will not modify the uploaded sources \
122
+ paths",
99
123
  optional: true),
100
124
  FastlaneCore::ConfigItem.new(key: :strip_common_prefix,
101
125
  conflicting_options: [:strip_prefix],
@@ -106,6 +130,59 @@ module Fastlane
106
130
  FastlaneCore::ConfigItem.new(key: :url_prefix,
107
131
  description: "Sets a URL prefix in front of all files",
108
132
  optional: true),
133
+ FastlaneCore::ConfigItem.new(key: :url_suffix,
134
+ description: "Sets a URL suffix to append to all filenames",
135
+ optional: true),
136
+ FastlaneCore::ConfigItem.new(key: :note,
137
+ description: "Adds an optional note to the uploaded artifact bundle",
138
+ optional: true),
139
+ FastlaneCore::ConfigItem.new(key: :validate,
140
+ description: "Enable basic sourcemap validation",
141
+ is_string: false,
142
+ optional: true),
143
+ FastlaneCore::ConfigItem.new(key: :decompress,
144
+ description: "Enable files gzip decompression prior to upload",
145
+ is_string: false,
146
+ optional: true),
147
+ FastlaneCore::ConfigItem.new(key: :wait,
148
+ description: "Wait for the server to fully process uploaded files",
149
+ is_string: false,
150
+ optional: true),
151
+ FastlaneCore::ConfigItem.new(key: :wait_for,
152
+ description: "Wait for the server to fully process uploaded files, but at most \
153
+ for the given number of seconds",
154
+ type: Integer,
155
+ optional: true),
156
+ FastlaneCore::ConfigItem.new(key: :no_sourcemap_reference,
157
+ description: "Disable emitting of automatic sourcemap references. By default the \
158
+ tool will store a 'Sourcemap' header with minified files so that sourcemaps \
159
+ are located automatically if the tool can detect a link. If this causes issues \
160
+ it can be disabled",
161
+ is_string: false,
162
+ optional: true),
163
+ FastlaneCore::ConfigItem.new(key: :debug_id_reference,
164
+ description: "Enable emitting of automatic debug id references. By default Debug ID \
165
+ reference has to be present both in the source and the related sourcemap. But in \
166
+ cases of binary bundles, the tool can't verify presence of the Debug ID. This flag \
167
+ allows use of Debug ID from the linked sourcemap",
168
+ is_string: false,
169
+ optional: true),
170
+ FastlaneCore::ConfigItem.new(key: :bundle,
171
+ description: "Path to the application bundle (indexed, file, or regular)",
172
+ optional: true),
173
+ FastlaneCore::ConfigItem.new(key: :bundle_sourcemap,
174
+ description: "Path to the bundle sourcemap",
175
+ optional: true),
176
+ FastlaneCore::ConfigItem.new(key: :ext,
177
+ description: "Set the file extensions that are considered for upload. This overrides \
178
+ the default extensions. To add an extension, all default extensions must be repeated. \
179
+ Specify once per extension. Defaults to: js, cjs, mjs, map, jsbundle, bundle",
180
+ type: Array,
181
+ optional: true),
182
+ FastlaneCore::ConfigItem.new(key: :strict,
183
+ description: "Fail with a non-zero exit code if the specified source map file cannot be uploaded",
184
+ is_string: false,
185
+ optional: true),
109
186
  FastlaneCore::ConfigItem.new(key: :ignore,
110
187
  description: "Ignores all files and folders matching the given glob or array of globs",
111
188
  is_string: false,
@@ -24,10 +24,6 @@ module Fastlane
24
24
  env_name: "SENTRY_AUTH_TOKEN",
25
25
  description: "Authentication token for Sentry",
26
26
  optional: true),
27
- FastlaneCore::ConfigItem.new(key: :api_key,
28
- env_name: "SENTRY_API_KEY",
29
- description: "API key for Sentry",
30
- optional: true),
31
27
  FastlaneCore::ConfigItem.new(key: :org_slug,
32
28
  env_name: "SENTRY_ORG_SLUG",
33
29
  description: "Organization slug for Sentry project",
@@ -51,14 +47,12 @@ module Fastlane
51
47
 
52
48
  url = params[:url]
53
49
  auth_token = params[:auth_token]
54
- api_key = params[:api_key]
55
50
  org = params[:org_slug]
56
51
  project = params[:project_slug]
57
52
  log_level = params[:log_level]
58
53
 
59
54
  has_org = !org.to_s.empty?
60
55
  has_project = !project.to_s.empty?
61
- has_api_key = !api_key.to_s.empty?
62
56
  has_auth_token = !auth_token.to_s.empty?
63
57
 
64
58
  ENV['SENTRY_URL'] = url unless url.to_s.empty?
@@ -70,18 +64,13 @@ module Fastlane
70
64
  end
71
65
 
72
66
  # Fallback to .sentryclirc if possible when no auth token is provided
73
- if !has_api_key && !has_auth_token && fallback_sentry_cli_auth(params)
67
+ if !has_auth_token && fallback_sentry_cli_auth(params)
74
68
  UI.important("No auth config provided, will fallback to .sentryclirc")
75
69
  else
76
- # Will fail if none or both authentication methods are provided
77
- if !has_api_key && !has_auth_token
78
- UI.user_error!("No API key or authentication token found for SentryAction given, pass using `api_key: 'key'` or `auth_token: 'token'`")
79
- elsif has_api_key && has_auth_token
80
- UI.user_error!("Both API key and authentication token found for SentryAction given, please only give one")
81
- elsif has_api_key && !has_auth_token
82
- UI.deprecated("Please consider switching to auth_token ... api_key will be removed in the future")
70
+ # Will fail if no authentication token is provided
71
+ unless has_auth_token
72
+ UI.user_error!("No authentication token found for SentryAction given, pass using `auth_token: 'token'`")
83
73
  end
84
- ENV['SENTRY_API_KEY'] = api_key unless api_key.to_s.empty?
85
74
  ENV['SENTRY_AUTH_TOKEN'] = auth_token unless auth_token.to_s.empty?
86
75
  end
87
76
 
@@ -31,7 +31,8 @@ module Fastlane
31
31
  UI.command(final_command)
32
32
  end
33
33
 
34
- Open3.popen3(final_command) do |stdin, stdout, stderr, status_thread|
34
+ env = { 'SENTRY_PIPELINE' => "sentry-fastlane-plugin/#{Fastlane::Sentry::VERSION}" }
35
+ Open3.popen3(env, final_command) do |stdin, stdout, stderr, status_thread|
35
36
  out_reader = Thread.new do
36
37
  output = []
37
38
 
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module Sentry
3
- VERSION = "1.36.0"
3
+ VERSION = "2.0.0-rc.2"
4
4
  end
5
5
  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.36.0
4
+ version: 2.0.0.pre.rc.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sentry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-12-04 00:00:00.000000000 Z
11
+ date: 2026-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: os
@@ -121,9 +121,6 @@ files:
121
121
  - lib/fastlane/plugin/sentry/actions/sentry_finalize_release.rb
122
122
  - lib/fastlane/plugin/sentry/actions/sentry_set_commits.rb
123
123
  - lib/fastlane/plugin/sentry/actions/sentry_upload_build.rb
124
- - lib/fastlane/plugin/sentry/actions/sentry_upload_dif.rb
125
- - lib/fastlane/plugin/sentry/actions/sentry_upload_dsym.rb
126
- - lib/fastlane/plugin/sentry/actions/sentry_upload_file.rb
127
124
  - lib/fastlane/plugin/sentry/actions/sentry_upload_proguard.rb
128
125
  - lib/fastlane/plugin/sentry/actions/sentry_upload_sourcemap.rb
129
126
  - lib/fastlane/plugin/sentry/helper/sentry_config.rb
@@ -144,9 +141,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
144
141
  version: 2.6.0
145
142
  required_rubygems_version: !ruby/object:Gem::Requirement
146
143
  requirements:
147
- - - ">="
144
+ - - ">"
148
145
  - !ruby/object:Gem::Version
149
- version: '0'
146
+ version: 1.3.1
150
147
  requirements: []
151
148
  rubygems_version: 3.1.6
152
149
  signing_key:
@@ -1,167 +0,0 @@
1
- module Fastlane
2
- module Actions
3
- class SentryUploadDifAction < Action
4
- def self.run(params)
5
- require 'shellwords'
6
-
7
- UI.deprecated("This action is deprecated. Please use the `sentry_debug_files_upload` action.")
8
-
9
- Helper::SentryConfig.parse_api_params(params)
10
-
11
- paths = params[:path]
12
- paths = ['.'] if paths.nil?
13
-
14
- command = [
15
- "upload-dif"
16
- ]
17
- command += paths
18
-
19
- command.push('--type').push(params[:type]) unless params[:type].nil?
20
- command.push('--no-unwind') unless params[:no_unwind].nil?
21
- command.push('--no-debug') unless params[:no_debug].nil?
22
- command.push('--no-sources') unless params[:no_sources].nil?
23
- command.push('--ids').push(params[:ids]) unless params[:ids].nil?
24
- command.push('--require-all') unless params[:require_all].nil?
25
- command.push('--symbol-maps').push(params[:symbol_maps]) unless params[:symbol_maps].nil?
26
- command.push('--derived-data') unless params[:derived_data].nil?
27
- command.push('--no-zips') unless params[:no_zips].nil?
28
- command.push('--info-plist').push(params[:info_plist]) unless params[:info_plist].nil?
29
- command.push('--no-reprocessing') unless params[:no_reprocessing].nil?
30
- command.push('--force-foreground') unless params[:force_foreground].nil?
31
- command.push('--include-sources') unless params[:include_sources] != true
32
- command.push('--wait') unless params[:wait].nil?
33
- command.push('--upload-symbol-maps') unless params[:upload_symbol_maps].nil?
34
-
35
- Helper::SentryHelper.call_sentry_cli(params, command)
36
- UI.success("Successfully ran upload-dif")
37
- end
38
-
39
- #####################################################
40
- # @!group Documentation
41
- #####################################################
42
-
43
- def self.description
44
- "Upload debugging information files."
45
- end
46
-
47
- def self.details
48
- [
49
- "Files can be uploaded using the `upload-dif` command. This command will scan a given folder recursively for files and upload them to Sentry.",
50
- "See https://docs.sentry.io/product/cli/dif/#uploading-files for more information."
51
- ].join(" ")
52
- end
53
-
54
- def self.available_options
55
- Helper::SentryConfig.common_api_config_items + [
56
- FastlaneCore::ConfigItem.new(key: :path,
57
- description: "Path or an array of paths to search recursively for symbol files",
58
- type: Array,
59
- optional: true),
60
- FastlaneCore::ConfigItem.new(key: :type,
61
- short_option: "-t",
62
- description: "Only consider debug information files of the given \
63
- type. By default, all types are considered",
64
- optional: true,
65
- verify_block: proc do |value|
66
- UI.user_error! "Invalid value '#{value}'" unless ['dsym', 'elf', 'breakpad', 'pdb', 'pe', 'sourcebundle', 'bcsymbolmap'].include? value
67
- end),
68
- FastlaneCore::ConfigItem.new(key: :no_unwind,
69
- description: "Do not scan for stack unwinding information. Specify \
70
- this flag for builds with disabled FPO, or when \
71
- stackwalking occurs on the device. This usually \
72
- excludes executables and dynamic libraries. They might \
73
- still be uploaded, if they contain additional \
74
- processable information (see other flags)",
75
- is_string: false,
76
- optional: true),
77
- FastlaneCore::ConfigItem.new(key: :no_debug,
78
- description: "Do not scan for debugging information. This will \
79
- usually exclude debug companion files. They might \
80
- still be uploaded, if they contain additional \
81
- processable information (see other flags)",
82
- conflicting_options: [:no_unwind],
83
- is_string: false,
84
- optional: true),
85
- FastlaneCore::ConfigItem.new(key: :no_sources,
86
- description: "Do not scan for source information. This will \
87
- usually exclude source bundle files. They might \
88
- still be uploaded, if they contain additional \
89
- processable information (see other flags)",
90
- is_string: false,
91
- optional: true),
92
- FastlaneCore::ConfigItem.new(key: :ids,
93
- description: "Search for specific debug identifiers",
94
- optional: true),
95
- FastlaneCore::ConfigItem.new(key: :require_all,
96
- description: "Errors if not all identifiers specified with --id could be found",
97
- is_string: false,
98
- optional: true),
99
- FastlaneCore::ConfigItem.new(key: :symbol_maps,
100
- description: "Optional path to BCSymbolMap files which are used to \
101
- resolve hidden symbols in dSYM files downloaded from \
102
- iTunes Connect. This requires the dsymutil tool to be \
103
- available",
104
- optional: true),
105
- FastlaneCore::ConfigItem.new(key: :derived_data,
106
- description: "Search for debug symbols in Xcode's derived data",
107
- is_string: false,
108
- optional: true),
109
- FastlaneCore::ConfigItem.new(key: :no_zips,
110
- description: "Do not search in ZIP files",
111
- is_string: false,
112
- optional: true),
113
- FastlaneCore::ConfigItem.new(key: :info_plist,
114
- description: "Optional path to the Info.plist.{n}We will try to find this \
115
- automatically if run from Xcode. Providing this information \
116
- will associate the debug symbols with a specific ITC application \
117
- and build in Sentry. Note that if you provide the plist \
118
- explicitly it must already be processed",
119
- optional: true),
120
- FastlaneCore::ConfigItem.new(key: :no_reprocessing,
121
- description: "Do not trigger reprocessing after uploading",
122
- is_string: false,
123
- optional: true),
124
- FastlaneCore::ConfigItem.new(key: :force_foreground,
125
- description: "Wait for the process to finish.{n}\
126
- By default, the upload process will detach and continue in the \
127
- background when triggered from Xcode. When an error happens, \
128
- a dialog is shown. If this parameter is passed Xcode will wait \
129
- for the process to finish before the build finishes and output \
130
- will be shown in the Xcode build output",
131
- is_string: false,
132
- optional: true),
133
- FastlaneCore::ConfigItem.new(key: :include_sources,
134
- description: "Include sources from the local file system and upload \
135
- them as source bundles",
136
- is_string: false,
137
- optional: true),
138
- FastlaneCore::ConfigItem.new(key: :wait,
139
- description: "Wait for the server to fully process uploaded files. Errors \
140
- can only be displayed if --wait is specified, but this will \
141
- significantly slow down the upload process",
142
- is_string: false,
143
- optional: true),
144
- FastlaneCore::ConfigItem.new(key: :upload_symbol_maps,
145
- description: "Upload any BCSymbolMap files found to allow Sentry to resolve \
146
- hidden symbols, e.g. when it downloads dSYMs directly from App \
147
- Store Connect or when you upload dSYMs without first resolving \
148
- the hidden symbols using --symbol-maps",
149
- is_string: false,
150
- optional: true)
151
- ]
152
- end
153
-
154
- def self.return_value
155
- nil
156
- end
157
-
158
- def self.authors
159
- ["denrase"]
160
- end
161
-
162
- def self.is_supported?(platform)
163
- true
164
- end
165
- end
166
- end
167
- end
@@ -1,93 +0,0 @@
1
- module Fastlane
2
- module Actions
3
- class SentryUploadDsymAction < Action
4
- def self.run(params)
5
- UI.deprecated("This action is deprecated. Please use the `sentry_debug_files_upload` action.")
6
-
7
- Helper::SentryConfig.parse_api_params(params)
8
-
9
- # Params - dSYM
10
- dsym_path = params[:dsym_path]
11
- dsym_paths = params[:dsym_paths] || []
12
-
13
- # Verify dsym(s)
14
- dsym_paths += [dsym_path] unless dsym_path.nil?
15
- dsym_paths = dsym_paths.map { |path| File.absolute_path(path) }
16
- dsym_paths.each do |path|
17
- UI.user_error!("dSYM does not exist at path: #{path}") unless File.exist? path
18
- end
19
-
20
- command = ["upload-dsym"]
21
- command.push("--symbol-maps") unless params[:symbol_maps].nil?
22
- command.push(params[:symbol_maps]) unless params[:symbol_maps].nil?
23
- command.push("--info-plist") unless params[:info_plist].nil?
24
- command.push(params[:info_plist]) unless params[:info_plist].nil?
25
- command += dsym_paths
26
-
27
- Helper::SentryHelper.call_sentry_cli(params, command)
28
- UI.success("Successfully uploaded dSYMs!")
29
- end
30
-
31
- #####################################################
32
- # @!group Documentation
33
- #####################################################
34
-
35
- def self.description
36
- "Upload dSYM symbolication files to Sentry"
37
- end
38
-
39
- def self.details
40
- [
41
- "This action allows you to upload symbolication files to Sentry.",
42
- "It's extra useful if you use it to download the latest dSYM files from Apple when you",
43
- "use Bitcode"
44
- ].join(" ")
45
- end
46
-
47
- def self.available_options
48
- Helper::SentryConfig.common_api_config_items + [
49
- FastlaneCore::ConfigItem.new(key: :dsym_path,
50
- env_name: "SENTRY_DSYM_PATH",
51
- description: "Path to your symbols file. For iOS and Mac provide path to app.dSYM.zip",
52
- default_value: Actions.lane_context[SharedValues::DSYM_OUTPUT_PATH],
53
- optional: true,
54
- verify_block: proc do |value|
55
- UI.user_error! "Could not find Path to your symbols file at path '#{value}'" unless File.exist?(value)
56
- end),
57
- FastlaneCore::ConfigItem.new(key: :dsym_paths,
58
- env_name: "SENTRY_DSYM_PATHS",
59
- description: "Path to an array of your symbols file. For iOS and Mac provide path to app.dSYM.zip",
60
- default_value: Actions.lane_context[SharedValues::DSYM_PATHS],
61
- is_string: false,
62
- optional: true),
63
- FastlaneCore::ConfigItem.new(key: :symbol_maps,
64
- env_name: "SENTRY_SYMBOL_MAPS",
65
- description: "Optional path to bcsymbolmap files which are used to resolve hidden symbols in the actual dsym files. This requires the dsymutil tool to be available",
66
- optional: true,
67
- verify_block: proc do |value|
68
- UI.user_error! "Could not find bcsymbolmap at path '#{value}'" unless File.exist?(value)
69
- end),
70
- FastlaneCore::ConfigItem.new(key: :info_plist,
71
- env_name: "SENTRY_INFO_PLIST",
72
- description: "Optional path to Info.plist to add version information when uploading debug symbols",
73
- optional: true,
74
- verify_block: proc do |value|
75
- UI.user_error! "Could not find Info.plist at path '#{value}'" unless File.exist?(value)
76
- end)
77
- ]
78
- end
79
-
80
- def self.return_value
81
- nil
82
- end
83
-
84
- def self.authors
85
- ["joshdholtz", "HazAT"]
86
- end
87
-
88
- def self.is_supported?(platform)
89
- [:ios, :mac].include?(platform)
90
- end
91
- end
92
- end
93
- end
@@ -1,84 +0,0 @@
1
- module Fastlane
2
- module Actions
3
- class SentryUploadFileAction < Action
4
- def self.run(params)
5
- require 'shellwords'
6
-
7
- Helper::SentryConfig.parse_api_params(params)
8
-
9
- version = params[:version]
10
- version = "#{params[:app_identifier]}@#{params[:version]}" if params[:app_identifier]
11
- version = "#{version}+#{params[:build]}" if params[:build]
12
-
13
- file = params[:file]
14
-
15
- command = [
16
- "releases",
17
- "files",
18
- version,
19
- "upload",
20
- file
21
- ]
22
- command.push(params[:file_url]) unless params[:file_url].nil?
23
- command.push("--dist").push(params[:dist]) unless params[:dist].nil?
24
-
25
- Helper::SentryHelper.call_sentry_cli(params, command)
26
- UI.success("Successfully uploaded files to release: #{version}")
27
- end
28
-
29
- #####################################################
30
- # @!group Documentation
31
- #####################################################
32
-
33
- def self.description
34
- "Upload files to a release of a project on Sentry"
35
- end
36
-
37
- def self.details
38
- [
39
- "This action allows you to upload files to a release of a project on Sentry.",
40
- "See https://docs.sentry.io/learn/cli/releases/#upload-files for more information."
41
- ].join(" ")
42
- end
43
-
44
- def self.available_options
45
- Helper::SentryConfig.common_api_config_items + [
46
- FastlaneCore::ConfigItem.new(key: :version,
47
- description: "Release version on Sentry"),
48
- FastlaneCore::ConfigItem.new(key: :app_identifier,
49
- short_option: "-a",
50
- env_name: "SENTRY_APP_IDENTIFIER",
51
- description: "App Bundle Identifier, prepended to version",
52
- optional: true),
53
- FastlaneCore::ConfigItem.new(key: :build,
54
- short_option: "-b",
55
- description: "Release build on Sentry",
56
- optional: true),
57
- FastlaneCore::ConfigItem.new(key: :dist,
58
- description: "Distribution in release",
59
- optional: true),
60
- FastlaneCore::ConfigItem.new(key: :file,
61
- description: "Path to the file to upload",
62
- verify_block: proc do |value|
63
- UI.user_error! "Could not find file at path '#{value}'" unless File.exist?(value)
64
- end),
65
- FastlaneCore::ConfigItem.new(key: :file_url,
66
- description: "Optional URL we should associate with the file",
67
- optional: true)
68
- ]
69
- end
70
-
71
- def self.return_value
72
- nil
73
- end
74
-
75
- def self.authors
76
- ["wschurman"]
77
- end
78
-
79
- def self.is_supported?(platform)
80
- true
81
- end
82
- end
83
- end
84
- end