fastlane-plugin-dynatrace 2.0.2 → 2.1.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
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c569a69187e137ae768752a67a68a422a3bbb9df8158e3dda70e00c2277b2cf1
|
4
|
+
data.tar.gz: d90dbde7c6c298b81fa342d6593e6bf05da7adcb61d61806f4c196f2d5459abf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e403c5bdd8c29b2ba6099d0ac4b628e64906258ad61aa70593710bec6e4b44766af69c5676503b7829acd6127ea3fb3cd91255d5315a105253884d88dccac725
|
7
|
+
data.tar.gz: a019fd45536b0f72ef5dcb8fd7f160539e8443e099f51de3ca45486f95f7662282b07afe80b07d0cc3aac282bcd633f5b1fb5ba65809112a5015344eb46ed644
|
data/README.md
CHANGED
@@ -37,22 +37,24 @@ Now, when you run fastlane, the Dynatrace plugin will manage the symbol files of
|
|
37
37
|
|
38
38
|
|
39
39
|
## List of all Parameters
|
40
|
-
| Key
|
41
|
-
|
42
|
-
| action
|
43
|
-
| username
|
44
|
-
| os
|
45
|
-
| apitoken
|
46
|
-
| appID
|
47
|
-
| bundleId
|
48
|
-
| versionStr
|
49
|
-
| version
|
50
|
-
| symbolsfile
|
51
|
-
| symbolsfileAutoZip
|
52
|
-
| server
|
53
|
-
| cleanBuildArtifacts
|
54
|
-
| tempdir
|
55
|
-
| debugMode
|
40
|
+
| Key | Description | default value |
|
41
|
+
|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------|
|
42
|
+
| action | *(iOS/tvOS only)* Action to be performed by DTXDssClient (`upload` or `decode`). | `upload` |
|
43
|
+
| username | *(iOS/tvOS only)* The username/AppleID to use to download the dSYMs. Alternatively you can specify this in your AppFile as `apple_id`. | |
|
44
|
+
| os | The type of the symbol files, either `ios`, `tvOS` or `android`. | |
|
45
|
+
| apitoken | Dynatrace API token with mobile symbolication permissions. | |
|
46
|
+
| appID | The application ID you get from your Dynatrace environment. | |
|
47
|
+
| bundleId | The CFBundlebundleId (iOS, tvOS) / package (Android) of the application. Alternatively you can specify this in your AppFile as `app_identifier`. | |
|
48
|
+
| versionStr | The CFBundleShortVersionString (iOS, tvOS) / versionName (Android) | |
|
49
|
+
| version | The CFBundleVersion (iOS, tvOS) / versionCode (Android). Is also used for the dSYM download. | |
|
50
|
+
| symbolsfile | Path to the dSYM or Android mapping file to be processed. *(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. | |
|
51
|
+
| symbolsfileAutoZip | *(Android only)* Automatically zip symbolsfile if it exceeds 10MiB and doesn't already end with `*.zip`. | `true` |
|
52
|
+
| server | The API endpoint for the Dynatrace environment (e.g. `https://environmentID.live.dynatrace.com` or `https://dynatrace-managed.com/e/environmentID`). | |
|
53
|
+
| cleanBuildArtifacts | Clean build artifacts after processing. | `false` |
|
54
|
+
| tempdir | (OPTIONAL) Custom temporary directory for the DTXDssClient. **The plugin does not take care of cleaning this directory.** | |
|
55
|
+
| debugMode | Enable debug logging. | `false` |
|
56
|
+
| customLLDBFrameworkPath | (OPTIONAL) Custom path to the LLDB framework used as runtime dependency by DTXDssClient (e.g. `/Users/test/Documents/LLDB.framework`). | |
|
57
|
+
| autoSymlinkLLDB | (OPTIONAL) Automatically find and create a symlink to the LLDB framework into the DTXDssClient's temporary folder. | `true` |
|
56
58
|
|
57
59
|
## Example
|
58
60
|
Try it by cloning the repo, running `fastlane install_plugins` and `bundle exec fastlane test`.
|
@@ -12,7 +12,7 @@ module Fastlane
|
|
12
12
|
class DynatraceProcessSymbolsAction < Action
|
13
13
|
|
14
14
|
def self.run(params)
|
15
|
-
UI.message "Parameter API Token: #{params[:apitoken]}"
|
15
|
+
UI.message "Parameter API Token: #{params[:apitoken]}" if params[:debugMode] == true
|
16
16
|
UI.message "OS: #{params[:os]}"
|
17
17
|
UI.message "Version string: #{params[:versionStr]}"
|
18
18
|
UI.message "Version: #{params[:version]}"
|
@@ -35,17 +35,18 @@ module Fastlane
|
|
35
35
|
|
36
36
|
# https://www.dynatrace.com/support/help/dynatrace-api/configuration-api/mobile-symbolication-api/put-files-app-version
|
37
37
|
if response.code == '204'
|
38
|
-
|
38
|
+
UI.success "API response: Success."
|
39
39
|
else
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
40
|
+
message = nil
|
41
|
+
if response.class.body_permitted? and not response.body.nil?
|
42
|
+
message = JSON.parse(response.body)["error"]["message"]
|
43
|
+
end
|
44
|
+
|
45
|
+
if message.nil?
|
46
|
+
UI.user_error! "API response: #{response.code}. Please try again in a few minutes or contact Dynatrace support (https://support.dynatrace.com)."
|
47
|
+
else
|
48
|
+
UI.user_error! "API response: #{message} (Response code: #{response.code})"
|
49
|
+
end
|
49
50
|
end
|
50
51
|
return
|
51
52
|
end
|
@@ -55,10 +56,30 @@ module Fastlane
|
|
55
56
|
end
|
56
57
|
|
57
58
|
# iOS/tvOS workflow
|
58
|
-
|
59
|
+
unless OS.mac?
|
60
|
+
UI.user_error! "A macOS machine is required to process iOS or tvOS symbols."
|
61
|
+
end
|
59
62
|
|
60
|
-
|
61
|
-
|
63
|
+
dtxDssClientPath = Helper::DynatraceHelper.get_dss_client(params)
|
64
|
+
dtxDssClientDir = File.dirname(dtxDssClientPath)
|
65
|
+
Helper::DynatraceSymlinkHelper.delete_existing_lldb_symlinks(dtxDssClientDir)
|
66
|
+
|
67
|
+
customLLDBFrameworkPath = params[:customLLDBFrameworkPath]
|
68
|
+
if customLLDBFrameworkPath.nil?
|
69
|
+
UI.message "No custom LLDB framework path provided"
|
70
|
+
if params[:autoSymlinkLLDB]
|
71
|
+
UI.message "Automatic LLDB symlink creation enabled"
|
72
|
+
Helper::DynatraceSymlinkHelper.auto_symlink_lldb(dtxDssClientDir)
|
73
|
+
elsif
|
74
|
+
UI.message "Automatic LLDB symlink creation disabled"
|
75
|
+
end
|
76
|
+
else
|
77
|
+
if Helper::DynatraceSymlinkHelper.path_exists?(customLLDBFrameworkPath)
|
78
|
+
UI.message "Custom LLDB framework path `#{customLLDBFrameworkPath}` exists."
|
79
|
+
Helper::DynatraceSymlinkHelper.symlink_custom_lldb(customLLDBFrameworkPath, dtxDssClientDir)
|
80
|
+
else
|
81
|
+
UI.user_error! "Custom LLDB framework path `#{customLLDBFrameworkPath}` does not exist!"
|
82
|
+
end
|
62
83
|
end
|
63
84
|
|
64
85
|
# start constructing the command that will trigger the DTXDssClient
|
@@ -174,7 +195,7 @@ module Fastlane
|
|
174
195
|
description: "Path to the dSYM or Android mapping file to be processed. 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",
|
175
196
|
verify_block: proc do |value|
|
176
197
|
UI.user_error!("Please provide a value for the symbol files. Pass using `symbolsfile: 'symbolsfile'`") unless (value and not value.empty?)
|
177
|
-
|
198
|
+
end),
|
178
199
|
|
179
200
|
FastlaneCore::ConfigItem.new(key: :symbolsfileAutoZip,
|
180
201
|
env_name: "FL_UPLOAD_TO_DYNATRACE_SYM_FILE_AUTO_ZIP",
|
@@ -205,6 +226,18 @@ module Fastlane
|
|
205
226
|
description: "Enable debug logging",
|
206
227
|
default_value: false,
|
207
228
|
is_string: false,
|
229
|
+
optional: true),
|
230
|
+
|
231
|
+
FastlaneCore::ConfigItem.new(key: :customLLDBFrameworkPath,
|
232
|
+
env_name: "FL_UPLOAD_TO_DYNATRACE_LLDB_PATH",
|
233
|
+
description: "Custom path to the LLDB framework used as runtime dependency by DTXDssClient",
|
234
|
+
optional: true),
|
235
|
+
|
236
|
+
FastlaneCore::ConfigItem.new(key: :autoSymlinkLLDB,
|
237
|
+
env_name: "FL_UPLOAD_TO_DYNATRACE_AUTO_LINK_LLDB",
|
238
|
+
description: "Automatically find and create a symlink to the LLDB framework into the DTXDssClient's temporary folder",
|
239
|
+
type: Boolean,
|
240
|
+
default_value: true,
|
208
241
|
optional: true)
|
209
242
|
]
|
210
243
|
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
module Fastlane
|
2
|
+
UI = FastlaneCore::UI unless Fastlane.const_defined?("UI")
|
3
|
+
|
4
|
+
module Helper
|
5
|
+
class DynatraceSymlinkHelper
|
6
|
+
def self.path_exists?(path)
|
7
|
+
unless path.nil?
|
8
|
+
return Dir.exist?(path) || File.exist?(path)
|
9
|
+
end
|
10
|
+
return false
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.symlink_custom_lldb(lldb_path, destination_path)
|
14
|
+
require_path(destination_path)
|
15
|
+
require_path(lldb_path)
|
16
|
+
UI.message "Preparing to symlink custom LLDB framework path to: #{destination_path}"
|
17
|
+
symlink(lldb_path, destination_path)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.auto_symlink_lldb(destination_path)
|
21
|
+
require_path(destination_path)
|
22
|
+
UI.message "Preparing to automatically symlink LLDB framework path to: #{destination_path}"
|
23
|
+
current_xcode_path = %x(xcrun xcode-select --print-path).chomp
|
24
|
+
active_lldb_path = active_lldb_path(current_xcode_path)
|
25
|
+
if active_lldb_path.nil?
|
26
|
+
UI.important "Could not find active LLDB framework path!"
|
27
|
+
else
|
28
|
+
UI.message "LLDB framework found at: #{active_lldb_path}"
|
29
|
+
symlink(active_lldb_path, destination_path)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.delete_existing_lldb_symlinks(destination_path)
|
34
|
+
symlink_path = make_symlink_path_name(destination_path)
|
35
|
+
if File.symlink?(symlink_path)
|
36
|
+
UI.message "Deleting existing LLDB symlink: #{symlink_path}"
|
37
|
+
FileUtils.rm(symlink_path)
|
38
|
+
else
|
39
|
+
UI.message "No existing LLDB symlink at destination: #{symlink_path}"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.require_path(path)
|
44
|
+
if path.nil?
|
45
|
+
raise "Path should not be nil."
|
46
|
+
end
|
47
|
+
|
48
|
+
unless path.instance_of?(String)
|
49
|
+
raise "Path should be a string."
|
50
|
+
end
|
51
|
+
|
52
|
+
unless path_exists?(path)
|
53
|
+
raise "Path: #{path} does not exist."
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.symlink(source, destination)
|
58
|
+
destination_absolute = File.expand_path(make_symlink_path_name(destination))
|
59
|
+
source_absolute = File.expand_path(source)
|
60
|
+
UI.message "Creating a symlink of #{source_absolute} at #{destination_absolute}"
|
61
|
+
FileUtils.symlink(source_absolute, destination_absolute)
|
62
|
+
end
|
63
|
+
|
64
|
+
def self.active_lldb_path(xcode_path)
|
65
|
+
unless xcode_path.end_with? "/Developer"
|
66
|
+
UI.important "Could not find proper Xcode path!"
|
67
|
+
UI.important "Output of `xcode-select --print-path` command is `#{xcode_path}`"
|
68
|
+
UI.important "Please make sure your developer path ends with `/Developer`"
|
69
|
+
return nil
|
70
|
+
end
|
71
|
+
|
72
|
+
parent_dir = File.dirname(xcode_path)
|
73
|
+
return File.join(parent_dir, "SharedFrameworks", "LLDB.framework")
|
74
|
+
end
|
75
|
+
|
76
|
+
def self.make_symlink_path_name(destination_path)
|
77
|
+
File.join(destination_path, "LLDB.framework")
|
78
|
+
end
|
79
|
+
|
80
|
+
private_class_method :require_path, :symlink, :make_symlink_path_name
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
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: 2.
|
4
|
+
version: 2.1.1
|
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: 2024-05-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -245,6 +245,7 @@ files:
|
|
245
245
|
- lib/fastlane/plugin/dynatrace.rb
|
246
246
|
- lib/fastlane/plugin/dynatrace/actions/dynatrace_action.rb
|
247
247
|
- lib/fastlane/plugin/dynatrace/helper/dynatrace_helper.rb
|
248
|
+
- lib/fastlane/plugin/dynatrace/helper/dynatrace_symlink_helper.rb
|
248
249
|
- lib/fastlane/plugin/dynatrace/version.rb
|
249
250
|
homepage: https://github.com/Dynatrace/fastlane-plugin-dynatrace
|
250
251
|
licenses:
|