fastlane-plugin-dynatrace 1.0.7 → 1.0.8
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
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1bdb472eb2918d5953d9fdddcce1ae84a4ecd27b71519237f26de179a741841b
|
4
|
+
data.tar.gz: 2fe8fab3e1187ab2b2b1ce32c629a8f7a4b55452a418605749c5c083d306e62b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 32d4130da7d003f7a1a2a75c7947f4e844f5bbe9a17cd642a4af238635b8d7c0dcbc92cbe22e8eedb13a21ee53a14c73d99d918c8a07deec7b25706488875a3d
|
7
|
+
data.tar.gz: 8715c0bb53db8021da3707aac6775f4b64bbd1bfd57a9c2fbbf0b73ae4ec634aa8fd2ed4a9ac678192fae696465e0dbc9e8375d2ac2ed3fca8a459be58b2e713
|
data/README.md
CHANGED
@@ -102,6 +102,7 @@ dynatrace_process_symbols(
|
|
102
102
|
| versionStr | The CFBundleShortVersionString (iOS, tvOS) / versionName (Android) | |
|
103
103
|
| version | The CFBundleVersion (iOS, tvOS) / versionCode (Android). Is also used for the dSYM download. | |
|
104
104
|
| symbolsfile | Path to the dSYM file to be processed. If downloadDsyms is set, this is only a fallback. | |
|
105
|
+
| symbolsfileAutoZip | *(Android only)* Automatically zip symbolsfile if it exceeds 10MiB and doesn't already end with `*.zip`. | `true` |
|
105
106
|
| server | The API endpoint for the Dynatrace environment (e.g. `https://environmentID.live.dynatrace.com` or `https://dynatrace-managed.com/e/environmentID`). | |
|
106
107
|
| cleanBuildArtifacts | Clean build artifacts after processing. | `true` |
|
107
108
|
| tempdir | (OPTIONAL) Custom temporary directory for the DTXDssClient. **The plugin does not take care of cleaning this directory.** | |
|
@@ -30,16 +30,17 @@ module Fastlane
|
|
30
30
|
end
|
31
31
|
|
32
32
|
if params[:os] == "android"
|
33
|
-
|
33
|
+
symbols_path = Helper::DynatraceHelper.zip_if_required(params)
|
34
|
+
response, request = Helper::DynatraceHelper.put_android_symbols(params, bundleId, symbols_path)
|
34
35
|
case response.code
|
35
36
|
when '204'
|
36
|
-
UI.success "
|
37
|
+
UI.success "Success. The file has been uploaded and stored."
|
37
38
|
when '400'
|
38
|
-
UI.user_error! "Failed
|
39
|
+
UI.user_error! "Failed. The input is invalid."
|
39
40
|
when '401'
|
40
41
|
UI.user_error! "Invalid Dynatrace API token. See https://www.dynatrace.com/support/help/dynatrace-api/basics/dynatrace-api-authentication/#token-permissions and https://www.dynatrace.com/support/help/dynatrace-api/configuration-api/mobile-symbolication-api/"
|
41
42
|
when '413'
|
42
|
-
UI.user_error! "Failed
|
43
|
+
UI.user_error! "Failed. The symbol file storage quota is exhausted. See https://www.dynatrace.com/support/help/shortlink/mobile-symbolication#manage-the-uploaded-symbol-files for more information."
|
43
44
|
else
|
44
45
|
message = nil
|
45
46
|
unless response.body.nil?
|
@@ -258,11 +259,17 @@ module Fastlane
|
|
258
259
|
|
259
260
|
FastlaneCore::ConfigItem.new(key: :symbolsfile,
|
260
261
|
env_name: "FL_UPLOAD_TO_DYNATRACE_SYM_FILE_PATH",
|
261
|
-
description: "Path to the dSYM file to be processed. Is only used when downloadDsyms is not set",
|
262
|
+
description: "Path to the dSYM file to be processed. Is only used when downloadDsyms is not set. Android only: If the file exceeds 10MiB and doesn't end with *.zip it's zipped before uploading. This can be disabled by setting `symbolsfileAutoZip` to false",
|
262
263
|
verify_block: proc do |value|
|
263
264
|
UI.user_error!("Please provide a value for the symbol files. Pass using `symbolsfile: 'symbolsfile'`") unless (value and not value.empty?)
|
264
265
|
end),
|
265
266
|
|
267
|
+
FastlaneCore::ConfigItem.new(key: :symbolsfileAutoZip,
|
268
|
+
env_name: "FL_UPLOAD_TO_DYNATRACE_SYM_FILE_AUTO_ZIP",
|
269
|
+
default_value: true,
|
270
|
+
is_string: false,
|
271
|
+
description: "(Android only) Automatically zip symbolsfile if it exceeds 10MiB and doesn't already end with *.zip"),
|
272
|
+
|
266
273
|
FastlaneCore::ConfigItem.new(key: :server,
|
267
274
|
env_name: "FL_UPLOAD_TO_DYNATRACE_SERVER_URL",
|
268
275
|
description: "The API endpoint for the Dynatrace environment (e.g. https://environmentID.live.dynatrace.com or https://dynatrace-managed.com/e/environmentID)",
|
@@ -3,6 +3,7 @@ require 'digest'
|
|
3
3
|
require 'net/http'
|
4
4
|
require 'tempfile'
|
5
5
|
require 'open-uri'
|
6
|
+
require 'zip'
|
6
7
|
|
7
8
|
module Fastlane
|
8
9
|
UI = FastlaneCore::UI unless Fastlane.const_defined?("UI")
|
@@ -136,7 +137,7 @@ module Fastlane
|
|
136
137
|
end
|
137
138
|
end
|
138
139
|
|
139
|
-
def self.put_android_symbols(params, bundleId)
|
140
|
+
def self.put_android_symbols(params, bundleId, symbolspath)
|
140
141
|
path = "/api/config/v1/symfiles/#{params[:appId]}/#{bundleId}/ANDROID/#{params[:version]}/#{params[:versionStr]}"
|
141
142
|
|
142
143
|
# if path points to dynatrace managed, we need to prepend the path component from the server (/e/{your-environment-id})
|
@@ -148,14 +149,46 @@ module Fastlane
|
|
148
149
|
path = self.without_trailing_slash(uri[5]) + path
|
149
150
|
end
|
150
151
|
|
152
|
+
is_symbolsfile_zip = symbolspath.end_with?(".zip")
|
151
153
|
|
152
|
-
|
154
|
+
request = Net::HTTP::Put.new(path, initheader = { 'Content-Type' => is_symbolsfile_zip ? 'application/zip' : 'text/plain',
|
153
155
|
'Authorization' => "Api-Token #{params[:apitoken]}"} )
|
154
156
|
|
155
|
-
|
157
|
+
request.body = IO.read(symbolspath)
|
156
158
|
http = Net::HTTP.new(self.get_host_name(params), 443)
|
157
159
|
http.use_ssl = true
|
158
|
-
http.request(
|
160
|
+
response = http.request(request)
|
161
|
+
|
162
|
+
return [response, request]
|
163
|
+
end
|
164
|
+
|
165
|
+
def self.zip_if_required(params)
|
166
|
+
symbolsfile_path = params[:symbolsfile]
|
167
|
+
|
168
|
+
if !params[:symbolsfileAutoZip]
|
169
|
+
UI.message "Symbolsfile auto-zipping is disbled."
|
170
|
+
return symbolsfile_path
|
171
|
+
end
|
172
|
+
|
173
|
+
if symbolsfile_path.end_with?(".zip")
|
174
|
+
UI.message "Symbolsfile is already a zip."
|
175
|
+
return symbolsfile_path
|
176
|
+
end
|
177
|
+
|
178
|
+
if File.size(symbolsfile_path) > 10 * 1024 * 1024 # 10MiB
|
179
|
+
symbolsfile_path_zip = symbolsfile_path + ".zip"
|
180
|
+
UI.message "Symbolsfile exceeds 10MiB -> zipping to " + symbolsfile_path_zip
|
181
|
+
|
182
|
+
# replace any old file
|
183
|
+
FileUtils.rm_f(symbolsfile_path_zip)
|
184
|
+
|
185
|
+
Zip::File.open(symbolsfile_path_zip, create: true) do |zipfile|
|
186
|
+
zipfile.add(File.basename(symbolsfile_path), symbolsfile_path)
|
187
|
+
end
|
188
|
+
symbolsfile_path = symbolsfile_path_zip
|
189
|
+
end
|
190
|
+
|
191
|
+
return symbolsfile_path
|
159
192
|
end
|
160
193
|
|
161
194
|
private
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-dynatrace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dynatrace LLC
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -136,6 +136,104 @@ dependencies:
|
|
136
136
|
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: 2.142.0
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rubyzip
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: digest
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :runtime
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: net-http
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :runtime
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: tempfile
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :runtime
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: open-uri
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
202
|
+
type: :runtime
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: os
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - ">="
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
216
|
+
type: :runtime
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - ">="
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: json
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - ">="
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '0'
|
230
|
+
type: :runtime
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - ">="
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: '0'
|
139
237
|
description:
|
140
238
|
email: mobile.agent@dynatrace.com
|
141
239
|
executables: []
|
@@ -167,7 +265,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
167
265
|
- !ruby/object:Gem::Version
|
168
266
|
version: '0'
|
169
267
|
requirements: []
|
170
|
-
rubygems_version: 3.3.
|
268
|
+
rubygems_version: 3.3.11
|
171
269
|
signing_key:
|
172
270
|
specification_version: 4
|
173
271
|
summary: This action processes and uploads your symbol files to Dynatrace
|