allure-report-publisher 3.2.1 → 4.0.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
2
  SHA256:
3
- metadata.gz: 3ab566653044eb65dcda70282d0d9a951bac9060645fc7b1bd0559a40f44aa7a
4
- data.tar.gz: 7061067412360b2a0cb41e393e4b3e329c76266e17e35b05a0264dab66070673
3
+ metadata.gz: ba8581fa9d96433802742522763a5f00aaa292ce611ddff70a539f79fa72966a
4
+ data.tar.gz: 99759bf845adc787ab167087fd3003118bdae5c1f67fa1468c7fd9e04bd3377c
5
5
  SHA512:
6
- metadata.gz: 91735d0fd14f8fe53c2be7a477a2f32400c0a87fd2f7c168139680af4b324d86186850c27599cecc40ae67ba56e5ea1460ff80e1c4b610ad2ec03404fc8b737d
7
- data.tar.gz: ca0ac1ec124f0b73c1490028439e04e0afdbe1b79cdb05344cf7c59af86c9a6e3c37079eb6fc760254d3ee4f694f3e2041bcfacc70f756322d10f536fe49ee36
6
+ metadata.gz: 2cead4c3295aceef509f1293e29068752f501d540e2797f1d9c5e65fe81479e8e4b2bf6c028ce10a55ab3707c53ae8d0fc10048bf307d6c7d985d555faaa981c
7
+ data.tar.gz: 58fbf4ed284c17fd6bb6651a4e722dee25e38b2ea8628f12d22a64fc2a35261b1691fe560c93487673d59649e4a82abc37728fb0e54068040f5f3d8cf94e802b
data/README.md CHANGED
@@ -5,7 +5,6 @@
5
5
  ![Workflow status](https://github.com/andrcuns/allure-report-publisher/workflows/Test/badge.svg)
6
6
  [![Maintainability](https://api.codeclimate.com/v1/badges/210eaa4f74588fb08313/maintainability)](https://codeclimate.com/github/andrcuns/allure-report-publisher/maintainability)
7
7
  [![Test Coverage](https://api.codeclimate.com/v1/badges/210eaa4f74588fb08313/test_coverage)](https://codeclimate.com/github/andrcuns/allure-report-publisher/test_coverage)
8
- [![Test Report](https://img.shields.io/badge/report-allure-blue.svg)](https://storage.googleapis.com/allure-test-reports/allure-report-publisher/refs/heads/main/index.html)
9
8
 
10
9
  Upload your report to a file storage of your choice.
11
10
 
@@ -57,7 +56,6 @@ Options:
57
56
  --[no-]copy-latest # Keep copy of latest report at base prefix path, default: false
58
57
  --[no-]color # Force color output
59
58
  --[no-]ignore-missing-results # Ignore missing allure results, default: false
60
- --[no-]unresolved-discussion-on-failure # Add an unresolved discussion comment on test failure. GitLab only, default: false
61
59
  --[no-]debug # Print additional debug output, default: false
62
60
  --help, -h # Print this help
63
61
 
@@ -76,10 +76,6 @@ module Publisher
76
76
  type: :boolean,
77
77
  default: false,
78
78
  desc: "Ignore missing allure results"
79
- option :unresolved_discussion_on_failure,
80
- type: :boolean,
81
- default: false,
82
- desc: "Add an unresolved discussion comment on test failure. GitLab only"
83
79
  option :debug,
84
80
  type: :boolean,
85
81
  default: false,
@@ -134,7 +130,6 @@ module Publisher
134
130
  :collapse_summary,
135
131
  :flaky_warning_status,
136
132
  :summary_table_type,
137
- :unresolved_discussion_on_failure,
138
133
  :report_title
139
134
  )
140
135
  )
@@ -148,13 +143,14 @@ module Publisher
148
143
  {
149
144
  "s3" => Uploaders::S3,
150
145
  "gcs" => Uploaders::GCS
151
- }[uploader]
146
+ }.fetch(uploader)
152
147
  end
153
148
 
154
149
  # Validate required args
155
150
  #
156
151
  # @return [void]
157
152
  def validate_args
153
+ error("Unsupported cloud storage type! Supported types are: s3, gcs") unless %w[s3 gcs].include?(args[:type])
158
154
  error("Missing argument --results-glob!") unless args[:results_glob]
159
155
  error("Missing argument --bucket!") unless args[:bucket]
160
156
  URI.parse(args[:base_url]) if args[:base_url]
@@ -4,7 +4,7 @@ module Publisher
4
4
  #
5
5
  class UrlSectionBuilder
6
6
  DESCRIPTION_PATTERN = /<!-- allure -->[\s\S]+<!-- allurestop -->/
7
- JOBS_PATTERN = /<!-- jobs -->\n([\s\S]+)\n<!-- jobs -->/
7
+ JOBS_PATTERN = /<!-- jobs -->(?<jobs>[\s\S]+)<!-- jobs -->/
8
8
 
9
9
  # Url section builder
10
10
  #
@@ -106,7 +106,7 @@ module Publisher
106
106
  entry << "<summary>expand test summary</summary>\n" if collapse_summary
107
107
  entry << summary.table if summary_type
108
108
  entry << "</details>" if collapse_summary
109
- entry << "<!-- #{build_name} -->\n"
109
+ entry << "<!-- #{build_name} -->"
110
110
 
111
111
  entry.join("\n")
112
112
  end
@@ -116,36 +116,31 @@ module Publisher
116
116
  #
117
117
  # @return [RegExp]
118
118
  def job_entry_pattern
119
- @job_entry_pattern ||= /<!-- #{build_name} -->\n([\s\S]+)\n<!-- #{build_name} -->\n/
119
+ @job_entry_pattern ||= /<!-- #{build_name} -->[\s\S]+<!-- #{build_name} -->/
120
120
  end
121
121
 
122
122
  # Allure report url section
123
123
  #
124
124
  # @return [String]
125
125
  def url_section(job_entries: job_entry, separator: true)
126
- reports = <<~BODY.strip
127
- <!-- allure -->
128
- ---
129
- #{heading}
130
-
126
+ <<~BODY.strip
127
+ <!-- allure -->#{separator ? "\n---\n" : "\n"}#{heading}\n
131
128
  <!-- jobs -->
132
129
  #{job_entries}
133
130
  <!-- jobs -->
134
131
  <!-- allurestop -->
135
132
  BODY
136
-
137
- separator ? reports : reports.gsub("---\n", "")
138
133
  end
139
134
 
140
135
  # Return updated jobs section
141
136
  #
142
- # @param [String] urls
137
+ # @param [String] body
143
138
  # @return [String]
144
- def jobs_section(urls_block)
145
- jobs = urls_block.match(JOBS_PATTERN)[1]
146
- return jobs.gsub(job_entry_pattern, job_entry) if jobs.match?(job_entry_pattern)
139
+ def jobs_section(body)
140
+ jobs = body.match(JOBS_PATTERN)[:jobs]
141
+ return jobs.gsub(job_entry_pattern, job_entry).strip if jobs.match?(job_entry_pattern)
147
142
 
148
- "#{jobs}\n#{job_entry}"
143
+ "#{jobs.strip}\n\n#{job_entry}"
149
144
  end
150
145
  end
151
146
  end
@@ -33,7 +33,6 @@ module Publisher
33
33
  # @option args [Symbol] :summary_table_type
34
34
  # @option args [Boolean] :collapse_summay
35
35
  # @option args [Boolean] :flaky_warning_status
36
- # @option args [Boolean] :unresolved_discussion_on_failure
37
36
  # @option args [String] :report_title
38
37
  def initialize(**args)
39
38
  @report_url = args[:report_url]
@@ -43,7 +42,6 @@ module Publisher
43
42
  @summary_table_type = args[:summary_table_type]
44
43
  @collapse_summary = args[:collapse_summary]
45
44
  @flaky_warning_status = args[:flaky_warning_status]
46
- @unresolved_discussion_on_failure = args[:unresolved_discussion_on_failure]
47
45
  @report_title = args[:report_title]
48
46
  end
49
47
 
@@ -65,7 +63,6 @@ module Publisher
65
63
  :collapse_summary,
66
64
  :summary_table_type,
67
65
  :flaky_warning_status,
68
- :unresolved_discussion_on_failure,
69
66
  :report_title
70
67
 
71
68
  # Current pull request description
@@ -38,23 +38,6 @@ module Publisher
38
38
  @pr_description ||= client.merge_request(project, mr_iid).description
39
39
  end
40
40
 
41
- # Comment with alert text
42
- #
43
- # @return [Gitlab::ObjectifiedHash]
44
- def alert_comment
45
- @alert_comment ||= discussion&.notes&.detect do |note|
46
- note.body.include?(alert_comment_text)
47
- end
48
- end
49
-
50
- # Text for alert comment
51
- #
52
- # @return [String]
53
- def alert_comment_text
54
- @alert_comment_text ||=
55
- env("ALLURE_FAILURE_ALERT_COMMENT") || "There are some test failures that need attention"
56
- end
57
-
58
41
  # Custom sha
59
42
  #
60
43
  # @return [String]
@@ -96,39 +79,19 @@ module Publisher
96
79
  # @return [void]
97
80
  def add_comment
98
81
  create_or_update_comment
99
- create_or_resolve_discussion
100
82
  end
101
83
 
102
84
  # Create or update comment with report url
103
85
  #
104
86
  # @return [void]
105
87
  def create_or_update_comment
106
- if main_comment
107
- log_debug("Updating summary in comment with id #{discussion.id} in mr !#{mr_iid}")
108
-
109
- return client.edit_merge_request_note(
110
- project,
111
- mr_iid,
112
- main_comment.id,
113
- url_section_builder.comment_body(main_comment.body)
114
- )
88
+ unless comment
89
+ log_debug("Creating comment with summary for mr !#{mr_iid}")
90
+ return client.create_merge_request_comment(project, mr_iid, url_section_builder.comment_body) unless comment
115
91
  end
116
92
 
117
- log_debug("Creating comment with summary for mr ! #{mr_iid}")
118
- client.create_merge_request_comment(project, mr_iid, url_section_builder.comment_body)
119
- end
120
-
121
- # Create or resolve comment discussion
122
- #
123
- # @return [void]
124
- def create_or_resolve_discussion
125
- @discussion = nil
126
-
127
- if unresolved_discussion_on_failure && report_has_failures? && !alert_comment
128
- client.create_merge_request_discussion_note(project, mr_iid, discussion.id, body: alert_comment_text)
129
- elsif alert_comment && !report_has_failures?
130
- client.delete_merge_request_discussion_note(project, mr_iid, discussion.id, alert_comment.id)
131
- end
93
+ log_debug("Creating comment with summary for mr !#{mr_iid}")
94
+ client.edit_merge_request_note(project, mr_iid, comment.id, url_section_builder.comment_body(comment.body))
132
95
  end
133
96
 
134
97
  # Check if allure report has failures
@@ -138,21 +101,14 @@ module Publisher
138
101
  main_comment&.body&.include?("❌")
139
102
  end
140
103
 
141
- # Existing discussion that has comment with allure urls
104
+ # Existing comment with allure urls
142
105
  #
143
106
  # @return [Gitlab::ObjectifiedHash]
144
- def discussion
145
- @discussion ||= client.merge_request_discussions(project, mr_iid).auto_paginate.detect do |discussion|
146
- discussion.notes.any? { |note| Helpers::UrlSectionBuilder.match?(note.body) }
107
+ def comment
108
+ client.merge_request_comments(project, mr_iid).auto_paginate.detect do |comment|
109
+ Helpers::UrlSectionBuilder.match?(comment.body)
147
110
  end
148
111
  end
149
-
150
- # Comment/note with allure urls
151
- #
152
- # @return [Gitlab::ObjectifiedHash]
153
- def main_comment
154
- discussion&.notes&.detect { |note| Helpers::UrlSectionBuilder.match?(note.body) }
155
- end
156
112
  end
157
113
  end
158
114
  end
@@ -31,8 +31,8 @@ module Publisher
31
31
  def client_args
32
32
  @client_args ||= {
33
33
  region: ENV["AWS_REGION"] || "us-east-1",
34
- force_path_style: ENV["AWS_FORCE_PATH_STYLE"] == "true",
35
- endpoint: ENV["AWS_ENDPOINT"]
34
+ force_path_style: path_style?,
35
+ endpoint: aws_endpoint
36
36
  }.compact
37
37
  end
38
38
 
@@ -43,6 +43,20 @@ module Publisher
43
43
  @latest_report_url ||= url(prefix)
44
44
  end
45
45
 
46
+ # Custom aws endpoint
47
+ #
48
+ # @return [<String, nil>]
49
+ def aws_endpoint
50
+ @aws_endpoint ||= ENV["AWS_ENDPOINT"]
51
+ end
52
+
53
+ # Force aws path style
54
+ #
55
+ # @return [Boolean]
56
+ def path_style?
57
+ ENV["AWS_FORCE_PATH_STYLE"] == "true"
58
+ end
59
+
46
60
  # Add allure history
47
61
  #
48
62
  # @return [void]
@@ -143,7 +157,15 @@ module Publisher
143
157
  # @param [String] path_prefix
144
158
  # @return [String]
145
159
  def url(path_prefix)
146
- [base_url || "http://#{bucket_name}.s3.amazonaws.com", path_prefix, "index.html"].compact.join("/")
160
+ custom_base = if aws_endpoint
161
+ path_style? ? "#{aws_endpoint}/#{bucket_name}" : aws_endpoint
162
+ end
163
+
164
+ [
165
+ base_url || custom_base || "http://#{bucket_name}.s3.amazonaws.com",
166
+ path_prefix,
167
+ "index.html"
168
+ ].compact.join("/")
147
169
  end
148
170
 
149
171
  # Get file content type
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Publisher
4
- VERSION = "3.2.1"
4
+ VERSION = "4.0.2"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: allure-report-publisher
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.1
4
+ version: 4.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrejs Cunskis
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-04-15 00:00:00.000000000 Z
11
+ date: 2024-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-s3
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: 1.93.1
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: 1.147.0
22
+ version: 1.156.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: 1.93.1
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: 1.147.0
32
+ version: 1.156.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: dry-cli
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -74,16 +74,22 @@ dependencies:
74
74
  name: gitlab
75
75
  requirement: !ruby/object:Gem::Requirement
76
76
  requirements:
77
- - - "~>"
77
+ - - ">="
78
78
  - !ruby/object:Gem::Version
79
79
  version: '4.17'
80
+ - - "<"
81
+ - !ruby/object:Gem::Version
82
+ version: '6.0'
80
83
  type: :runtime
81
84
  prerelease: false
82
85
  version_requirements: !ruby/object:Gem::Requirement
83
86
  requirements:
84
- - - "~>"
87
+ - - ">="
85
88
  - !ruby/object:Gem::Version
86
89
  version: '4.17'
90
+ - - "<"
91
+ - !ruby/object:Gem::Version
92
+ version: '6.0'
87
93
  - !ruby/object:Gem::Dependency
88
94
  name: google-cloud-storage
89
95
  requirement: !ruby/object:Gem::Requirement
@@ -121,7 +127,7 @@ dependencies:
121
127
  version: '4.21'
122
128
  - - "<"
123
129
  - !ruby/object:Gem::Version
124
- version: '9.0'
130
+ version: '10.0'
125
131
  type: :runtime
126
132
  prerelease: false
127
133
  version_requirements: !ruby/object:Gem::Requirement
@@ -131,7 +137,7 @@ dependencies:
131
137
  version: '4.21'
132
138
  - - "<"
133
139
  - !ruby/object:Gem::Version
134
- version: '9.0'
140
+ version: '10.0'
135
141
  - !ruby/object:Gem::Dependency
136
142
  name: parallel
137
143
  requirement: !ruby/object:Gem::Requirement
@@ -235,7 +241,6 @@ homepage: https://github.com/andrcuns/allure-report-uploader
235
241
  licenses:
236
242
  - MIT
237
243
  metadata:
238
- homepage_uri: https://github.com/andrcuns/allure-report-uploader
239
244
  source_code_uri: https://github.com/andrcuns/allure-report-uploader
240
245
  changelog_uri: https://github.com/andrcuns/allure-report-uploader/releases
241
246
  documentation_uri: https://github.com/andrcuns/allure-report-uploader/blob/master/README.md
@@ -249,7 +254,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
249
254
  requirements:
250
255
  - - ">="
251
256
  - !ruby/object:Gem::Version
252
- version: '3.0'
257
+ version: '3.1'
253
258
  required_rubygems_version: !ruby/object:Gem::Requirement
254
259
  requirements:
255
260
  - - ">="