fastlane-plugin-stream_actions 0.1.17 → 0.1.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/fastlane/plugin/stream_actions/actions/allure_api.rb +74 -0
- data/lib/fastlane/plugin/stream_actions/actions/allure_create_launch.rb +97 -0
- data/lib/fastlane/plugin/stream_actions/actions/allure_create_testcase.rb +50 -0
- data/lib/fastlane/plugin/stream_actions/actions/allure_run_testplan.rb +82 -0
- data/lib/fastlane/plugin/stream_actions/version.rb +1 -1
- metadata +5 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8aedf213b38a187944b2dce1a10bf6e01a16c1d1a41c2a5ff1aeac786001efb
|
4
|
+
data.tar.gz: 39abbf45af37a5c33a4fba0d25f41b66c7416dde5e30290cb614f1c03f2dcc9e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b189951490a9e95b4534460c6fbbb408472394c8db19ce98b2892ba08b1562ad71b6a3e3a7b03bddfd6ba208855b457afa0b210a0d3136d593c651ef192c6e2d
|
7
|
+
data.tar.gz: 5229f877e3b325785025148182500bada877d9bc46e4c3f0a7612264699438649bc07950c90223e82185efb0758153d1e15457e316dbacc42a27cc3fd90ba6aa
|
@@ -0,0 +1,74 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
class AllureApiAction < Action
|
4
|
+
def self.run(params)
|
5
|
+
url = URI("#{params[:url]}/api/rs/#{options[:endpoint]}")
|
6
|
+
request =
|
7
|
+
case options[:http_method].upcase
|
8
|
+
when 'GET'
|
9
|
+
Net::HTTP::Get.new(url)
|
10
|
+
when 'POST'
|
11
|
+
Net::HTTP::Post.new(url)
|
12
|
+
when 'PATCH'
|
13
|
+
Net::HTTP::Patch.new(url)
|
14
|
+
when 'DELETE'
|
15
|
+
Net::HTTP::Delete.new(url)
|
16
|
+
end
|
17
|
+
http = Net::HTTP.new(url.host, url.port)
|
18
|
+
http.use_ssl = true
|
19
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
20
|
+
|
21
|
+
request['authorization'] = "Api-Token #{params[:token]}"
|
22
|
+
request['content-type'] = 'application/json'
|
23
|
+
request.body = options[:request_body] if options[:request_body]
|
24
|
+
|
25
|
+
response_body = http.request(request).read_body
|
26
|
+
JSON.parse(response_body) if !response_body.nil? && !response_body.empty?
|
27
|
+
end
|
28
|
+
|
29
|
+
#####################################################
|
30
|
+
# @!group Documentation
|
31
|
+
#####################################################
|
32
|
+
|
33
|
+
def self.description
|
34
|
+
'Allure Testops API'
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.available_options
|
38
|
+
[
|
39
|
+
FastlaneCore::ConfigItem.new(
|
40
|
+
env_name: 'ALLURE_TOKEN',
|
41
|
+
key: :token,
|
42
|
+
description: 'Allure API Token'
|
43
|
+
),
|
44
|
+
FastlaneCore::ConfigItem.new(
|
45
|
+
key: :url,
|
46
|
+
description: 'Testops URL'
|
47
|
+
),
|
48
|
+
FastlaneCore::ConfigItem.new(
|
49
|
+
key: :path,
|
50
|
+
description: 'Allure Testops endpoint path'
|
51
|
+
),
|
52
|
+
FastlaneCore::ConfigItem.new(
|
53
|
+
key: :request_body,
|
54
|
+
description: 'Request body',
|
55
|
+
optional: true
|
56
|
+
),
|
57
|
+
FastlaneCore::ConfigItem.new(
|
58
|
+
key: :http_method,
|
59
|
+
description: 'HTTP request method',
|
60
|
+
verify_block: proc do |method|
|
61
|
+
unless ['GET', 'POST', 'PATCH', 'DELETE'].include?(method)
|
62
|
+
UI.user_error!('Path to the Xcode project has to be specified')
|
63
|
+
end
|
64
|
+
end
|
65
|
+
)
|
66
|
+
]
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.supported?(_platform)
|
70
|
+
true
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
class AllureCreateLaunchAction < Action
|
4
|
+
def self.run(params)
|
5
|
+
tags = []
|
6
|
+
|
7
|
+
launch_name =
|
8
|
+
if params[:cron]
|
9
|
+
'Cron checks'
|
10
|
+
elsif params[:github_run_details].nil?
|
11
|
+
'Local checks'
|
12
|
+
elsif params[:github_event_name] == 'pull_request'
|
13
|
+
pull_request = JSON.parse(params[:github_event])['pull_request']
|
14
|
+
tags = pull_request['labels'].map { |label| { name: label['name'] } }
|
15
|
+
pull_request['title']
|
16
|
+
elsif params[:github_run_details]['head_commit']
|
17
|
+
params[:github_run_details]['head_commit']['message']
|
18
|
+
else
|
19
|
+
params[:github_run_details]['name']
|
20
|
+
end
|
21
|
+
|
22
|
+
body = {
|
23
|
+
projectId: params[:project_id],
|
24
|
+
name: launch_name,
|
25
|
+
tags: tags,
|
26
|
+
autoclose: false,
|
27
|
+
closed: false
|
28
|
+
}.to_json
|
29
|
+
|
30
|
+
launch_id = other_action.allure_api(
|
31
|
+
url: params[:url],
|
32
|
+
token: params[:token],
|
33
|
+
path: '/launch',
|
34
|
+
http_method: 'POST',
|
35
|
+
body: body
|
36
|
+
)['id']
|
37
|
+
|
38
|
+
UI.success("Launch with id #{launch_id} created successfully 🎉")
|
39
|
+
launch_id
|
40
|
+
end
|
41
|
+
|
42
|
+
#####################################################
|
43
|
+
# @!group Documentation
|
44
|
+
#####################################################
|
45
|
+
|
46
|
+
def self.description
|
47
|
+
'Creates launch on Allure Testops'
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.available_options
|
51
|
+
[
|
52
|
+
FastlaneCore::ConfigItem.new(
|
53
|
+
env_name: 'ALLURE_TOKEN',
|
54
|
+
key: :token,
|
55
|
+
description: 'Allure API Token'
|
56
|
+
),
|
57
|
+
FastlaneCore::ConfigItem.new(
|
58
|
+
key: :url,
|
59
|
+
description: 'Testops URL'
|
60
|
+
),
|
61
|
+
FastlaneCore::ConfigItem.new(
|
62
|
+
key: :github_run_details,
|
63
|
+
description: 'Github run details json',
|
64
|
+
is_string: false,
|
65
|
+
optional: true
|
66
|
+
),
|
67
|
+
FastlaneCore::ConfigItem.new(
|
68
|
+
env_name: 'GITHUB_EVENT_NAME',
|
69
|
+
key: :github_event_name,
|
70
|
+
description: 'Github event name',
|
71
|
+
optional: true
|
72
|
+
),
|
73
|
+
FastlaneCore::ConfigItem.new(
|
74
|
+
env_name: 'GITHUB_EVENT',
|
75
|
+
key: :github_event,
|
76
|
+
description: 'Github Actions: toJson(github.event)',
|
77
|
+
optional: true
|
78
|
+
),
|
79
|
+
FastlaneCore::ConfigItem.new(
|
80
|
+
key: :project_id,
|
81
|
+
description: 'Project identifier in Allure Testops'
|
82
|
+
),
|
83
|
+
FastlaneCore::ConfigItem.new(
|
84
|
+
key: :cron,
|
85
|
+
description: 'Is this a cron job?',
|
86
|
+
is_string: false,
|
87
|
+
optional: true
|
88
|
+
)
|
89
|
+
]
|
90
|
+
end
|
91
|
+
|
92
|
+
def self.supported?(_platform)
|
93
|
+
true
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
class AllureCreateTestcaseAction < Action
|
4
|
+
def self.run(params)
|
5
|
+
body = { projectId: params[:project_id], name: 'Automatically created testcase', deleted: true }.to_json
|
6
|
+
|
7
|
+
testcase_id = other_action.allure_api(
|
8
|
+
url: params[:url],
|
9
|
+
token: params[:token],
|
10
|
+
path: '/testcase',
|
11
|
+
http_method: 'POST',
|
12
|
+
body: body
|
13
|
+
)['id']
|
14
|
+
|
15
|
+
UI.success("Testcase with id #{testcase_id} created successfully 🎉")
|
16
|
+
testcase_id
|
17
|
+
end
|
18
|
+
|
19
|
+
#####################################################
|
20
|
+
# @!group Documentation
|
21
|
+
#####################################################
|
22
|
+
|
23
|
+
def self.description
|
24
|
+
'Creates testcase on Allure Testops'
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.available_options
|
28
|
+
[
|
29
|
+
FastlaneCore::ConfigItem.new(
|
30
|
+
env_name: 'ALLURE_TOKEN',
|
31
|
+
key: :token,
|
32
|
+
description: 'Allure API Token'
|
33
|
+
),
|
34
|
+
FastlaneCore::ConfigItem.new(
|
35
|
+
key: :url,
|
36
|
+
description: 'Testops URL'
|
37
|
+
),
|
38
|
+
FastlaneCore::ConfigItem.new(
|
39
|
+
key: :project_id,
|
40
|
+
description: 'Project identifier in Allure Testops'
|
41
|
+
)
|
42
|
+
]
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.supported?(_platform)
|
46
|
+
true
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
class AllureRunTestplanAction < Action
|
4
|
+
def self.run(params)
|
5
|
+
response = other_action.allure_api(
|
6
|
+
url: params[:url],
|
7
|
+
token: params[:token],
|
8
|
+
path: "/testplan/?projectId=#{params[:project_id]}",
|
9
|
+
http_method: 'GET'
|
10
|
+
)
|
11
|
+
|
12
|
+
testplan_id = response['content'].find { |plan| plan['name'] == params[:testplan] }['id']
|
13
|
+
|
14
|
+
other_action.allure_api(
|
15
|
+
url: params[:url],
|
16
|
+
token: params[:token],
|
17
|
+
path: "/testplan/#{testplan_id}/sync",
|
18
|
+
http_method: 'POST'
|
19
|
+
)
|
20
|
+
UI.success("#{rocket}\nTestplan with id #{testplan_id} synced successfully 🎉")
|
21
|
+
|
22
|
+
body = {
|
23
|
+
launchName: "#{params[:testplan]} #{params[:release_version]}",
|
24
|
+
links: [{ name: 'Jira', url: params[:jira] }]
|
25
|
+
}.to_json
|
26
|
+
|
27
|
+
other_action.allure_api(
|
28
|
+
url: params[:url],
|
29
|
+
token: params[:token],
|
30
|
+
path: "/testplan/#{testplan_id}/run",
|
31
|
+
http_method: 'POST',
|
32
|
+
body: body
|
33
|
+
)
|
34
|
+
UI.success("#{rocket}\nTestplan with id #{testplan_id} launched successfully 🎉")
|
35
|
+
end
|
36
|
+
|
37
|
+
#####################################################
|
38
|
+
# @!group Documentation
|
39
|
+
#####################################################
|
40
|
+
|
41
|
+
def self.description
|
42
|
+
'Sync and run testplan on Allure Testops'
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.available_options
|
46
|
+
[
|
47
|
+
FastlaneCore::ConfigItem.new(
|
48
|
+
env_name: 'ALLURE_TOKEN',
|
49
|
+
key: :token,
|
50
|
+
description: 'Allure API Token'
|
51
|
+
),
|
52
|
+
FastlaneCore::ConfigItem.new(
|
53
|
+
key: :url,
|
54
|
+
description: 'Testops URL'
|
55
|
+
),
|
56
|
+
FastlaneCore::ConfigItem.new(
|
57
|
+
key: :release_version,
|
58
|
+
description: 'Release version',
|
59
|
+
optional: true
|
60
|
+
),
|
61
|
+
FastlaneCore::ConfigItem.new(
|
62
|
+
key: :testplan,
|
63
|
+
description: 'Testplan name in Allure Testops'
|
64
|
+
),
|
65
|
+
FastlaneCore::ConfigItem.new(
|
66
|
+
key: :project_id,
|
67
|
+
description: 'Project identifier in Allure Testops'
|
68
|
+
),
|
69
|
+
FastlaneCore::ConfigItem.new(
|
70
|
+
key: :jira,
|
71
|
+
description: 'Jira link',
|
72
|
+
default_value: 'Default'
|
73
|
+
)
|
74
|
+
]
|
75
|
+
end
|
76
|
+
|
77
|
+
def self.supported?(_platform)
|
78
|
+
true
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-stream_actions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GetStream
|
@@ -228,6 +228,10 @@ extra_rdoc_files: []
|
|
228
228
|
files:
|
229
229
|
- README.md
|
230
230
|
- lib/fastlane/plugin/stream_actions.rb
|
231
|
+
- lib/fastlane/plugin/stream_actions/actions/allure_api.rb
|
232
|
+
- lib/fastlane/plugin/stream_actions/actions/allure_create_launch.rb
|
233
|
+
- lib/fastlane/plugin/stream_actions/actions/allure_create_testcase.rb
|
234
|
+
- lib/fastlane/plugin/stream_actions/actions/allure_run_testplan.rb
|
231
235
|
- lib/fastlane/plugin/stream_actions/actions/custom_match.rb
|
232
236
|
- lib/fastlane/plugin/stream_actions/actions/is_check_required.rb
|
233
237
|
- lib/fastlane/plugin/stream_actions/actions/pod_push_safely.rb
|