pact_broker 2.111.0 → 2.112.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/Gemfile +1 -1
- data/docs/CONFIGURATION.md +2 -2
- data/lib/pact_broker/api/decorators/triggered_webhook_logs_decorator.rb +38 -0
- data/lib/pact_broker/api/resources/badge_methods.rb +5 -1
- data/lib/pact_broker/api/resources/can_i_merge_badge.rb +6 -0
- data/lib/pact_broker/api/resources/labels.rb +13 -0
- data/lib/pact_broker/api/resources/triggered_webhook_logs.rb +5 -1
- data/lib/pact_broker/config/runtime_configuration.rb +1 -0
- data/lib/pact_broker/deployments/deployed_version.rb +3 -2
- data/lib/pact_broker/deployments/released_version.rb +1 -0
- data/lib/pact_broker/domain/verification.rb +1 -0
- data/lib/pact_broker/integrations/integration.rb +5 -3
- data/lib/pact_broker/pacts/latest_pact_publication_id_for_consumer_version.rb +1 -0
- data/lib/pact_broker/tasks/clean_task.rb +1 -1
- data/lib/pact_broker/verifications/latest_verification_id_for_pact_version_and_provider_version.rb +4 -3
- data/lib/pact_broker/verifications/pact_version_provider_tag_successful_verification.rb +1 -0
- data/lib/pact_broker/version.rb +1 -1
- data/lib/pact_broker/versions/branch_head.rb +5 -4
- data/lib/pact_broker/webhooks/execution.rb +2 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7da30c01ac5c3b656df24282a63fe7d18e42d83ed7ffdda14d3919481497f39
|
4
|
+
data.tar.gz: 71c525bd8ac9ed56c8d15f3f2d6c274a32c925be65e75f889d351033d759c400
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 95f5eed3bcda08ad27274d0bf858ea78319455ca45f783b0cd21a3709ee1ac3a1956325713466b8f1438cda86f83f51a35cccb875c81f864d2f53b054f7c0807
|
7
|
+
data.tar.gz: e51971781ce0679309cd60a8bb0eb281b2fc9a01872db91a4cd6f3f00b575805e7b5244d2b0f4d68a699140799e8cf50fca9940ddd72c77b207ca749de468fda
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
<a name="v2.112.0"></a>
|
2
|
+
### v2.112.0 (2024-09-09)
|
3
|
+
|
4
|
+
#### Features
|
5
|
+
|
6
|
+
* implemented setting cache for can-i-merge badges based on default configuration ([e2bce55e](/../../commit/e2bce55e))
|
7
|
+
* add application/hal+json content type for webhook logs (#679) ([e84de4f4](/../../commit/e84de4f4))
|
8
|
+
|
9
|
+
#### Bug Fixes
|
10
|
+
|
11
|
+
* make clean_task.rb print the payload correctly ([10fd69e2](/../../commit/10fd69e2))
|
12
|
+
|
1
13
|
<a name="v2.111.0"></a>
|
2
14
|
### v2.111.0 (2024-07-26)
|
3
15
|
|
data/Gemfile
CHANGED
data/docs/CONFIGURATION.md
CHANGED
@@ -248,8 +248,8 @@ The number of seconds after which an SQL query will be aborted. Only supported f
|
|
248
248
|
|
249
249
|
**Environment variable name:** `PACT_BROKER_DATABASE_STATEMENT_TIMEOUT`<br/>
|
250
250
|
**YAML configuration key name:** `database_statement_timeout`<br/>
|
251
|
-
**Default:** `
|
252
|
-
**Allowed values:** A positive integer
|
251
|
+
**Default:** `15000`<br/>
|
252
|
+
**Allowed values:** A positive integer in milliseconds<br/>
|
253
253
|
**More information:** https://www.postgresql.org/docs/9.3/runtime-config-client.html<br/>
|
254
254
|
|
255
255
|
### metrics_sql_statement_timeout
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require_relative "base_decorator"
|
2
|
+
|
3
|
+
module PactBroker
|
4
|
+
module Api
|
5
|
+
module Decorators
|
6
|
+
class TriggeredWebhookLogsDecorator < BaseDecorator
|
7
|
+
class WebhookExecutionDecorator < BaseDecorator
|
8
|
+
property :success
|
9
|
+
property :logs
|
10
|
+
property :created_at, as: :createdAt
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
nested :triggeredWebhook, embedded: true do
|
15
|
+
property :uuid
|
16
|
+
end
|
17
|
+
|
18
|
+
collection :webhook_executions, as: :executions, :class => PactBroker::Webhooks::Execution, :extend => WebhookExecutionDecorator
|
19
|
+
|
20
|
+
link :self do | options |
|
21
|
+
{
|
22
|
+
title: "Triggered webhook logs",
|
23
|
+
href: options[:resource_url]
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
link :'pb:webhook' do | context |
|
28
|
+
if represented.webhook
|
29
|
+
{
|
30
|
+
href: webhook_url(represented.webhook.uuid, context[:base_url]),
|
31
|
+
title: "Webhook"
|
32
|
+
}
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -32,7 +32,7 @@ module PactBroker
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def moved_temporarily?
|
35
|
-
|
35
|
+
set_cache_control("no-cache")
|
36
36
|
begin
|
37
37
|
badge_url
|
38
38
|
rescue StandardError => e
|
@@ -46,6 +46,10 @@ module PactBroker
|
|
46
46
|
raise NotImplementedError
|
47
47
|
end
|
48
48
|
|
49
|
+
def set_cache_control(cache_control_str)
|
50
|
+
response.headers["Cache-Control"] = cache_control_str
|
51
|
+
end
|
52
|
+
|
49
53
|
private
|
50
54
|
|
51
55
|
def label
|
@@ -15,6 +15,8 @@ module PactBroker
|
|
15
15
|
# when there is no main branch version, we return an error badge url
|
16
16
|
badge_service.error_badge_url("main branch version", "not found")
|
17
17
|
else
|
18
|
+
# when badge is available, set cache based on configuration
|
19
|
+
set_cache_control(default_cache_for_succesful_badge)
|
18
20
|
# we call badge_service to build the badge url
|
19
21
|
badge_service.can_i_merge_badge_url(deployable: results)
|
20
22
|
end
|
@@ -22,6 +24,10 @@ module PactBroker
|
|
22
24
|
|
23
25
|
private
|
24
26
|
|
27
|
+
def default_cache_for_succesful_badge
|
28
|
+
PactBroker.configuration.badge_default_cache_setting
|
29
|
+
end
|
30
|
+
|
25
31
|
def results
|
26
32
|
# can_i_merge returns true or false if the main branch version is compatible with all the integrations
|
27
33
|
@results ||= matrix_service.can_i_merge(pacticipant: pacticipant, latest_main_branch_version: version)
|
@@ -16,6 +16,10 @@ module PactBroker
|
|
16
16
|
["GET", "OPTIONS"]
|
17
17
|
end
|
18
18
|
|
19
|
+
def malformed_request?
|
20
|
+
super || request.get? && validation_errors_for_schema?(schema, request.query)
|
21
|
+
end
|
22
|
+
|
19
23
|
def policy_name
|
20
24
|
:'labels::labels'
|
21
25
|
end
|
@@ -28,6 +32,15 @@ module PactBroker
|
|
28
32
|
)
|
29
33
|
end
|
30
34
|
|
35
|
+
private
|
36
|
+
|
37
|
+
def schema
|
38
|
+
if request.get?
|
39
|
+
PactBroker::Api::Contracts::PaginationQueryParamsSchema
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
|
31
44
|
def labels
|
32
45
|
label_service.get_all_unique_labels(pagination_options)
|
33
46
|
end
|
@@ -7,7 +7,7 @@ module PactBroker
|
|
7
7
|
class TriggeredWebhookLogs < BaseResource
|
8
8
|
|
9
9
|
def content_types_provided
|
10
|
-
[["text/plain", :to_text]]
|
10
|
+
[["text/plain", :to_text], ["application/hal+json", :to_json]]
|
11
11
|
end
|
12
12
|
|
13
13
|
def allowed_methods
|
@@ -27,6 +27,10 @@ module PactBroker
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
+
def to_json
|
31
|
+
decorator_class(:triggered_webhook_logs_decorator).new(triggered_webhook).to_json(**decorator_options)
|
32
|
+
end
|
33
|
+
|
30
34
|
def policy_name
|
31
35
|
:'webhooks::triggered_webhook'
|
32
36
|
end
|
@@ -76,6 +76,7 @@ module PactBroker
|
|
76
76
|
badge_provider_mode: :redirect,
|
77
77
|
enable_public_badge_access: false,
|
78
78
|
shields_io_base_url: "https://img.shields.io",
|
79
|
+
badge_default_cache_setting: "max-age=30",
|
79
80
|
use_case_sensitive_resource_names: true,
|
80
81
|
pact_content_diff_timeout: 15
|
81
82
|
)
|
@@ -129,8 +129,9 @@ end
|
|
129
129
|
# target_for_index | text | NOT NULL DEFAULT ''::text
|
130
130
|
# auto_created | boolean | DEFAULT false
|
131
131
|
# Indexes:
|
132
|
-
# deployed_versions_pkey
|
133
|
-
# deployed_versions_uuid_index
|
132
|
+
# deployed_versions_pkey | PRIMARY KEY btree (id)
|
133
|
+
# deployed_versions_uuid_index | UNIQUE btree (uuid)
|
134
|
+
# deployed_versions_version_id_ndx | btree (version_id)
|
134
135
|
# Foreign key constraints:
|
135
136
|
# deployed_versions_environment_id_fkey | (environment_id) REFERENCES environments(id)
|
136
137
|
# deployed_versions_version_id_fkey | (version_id) REFERENCES versions(id)
|
@@ -87,6 +87,7 @@ end
|
|
87
87
|
# released_versions_uuid_index | UNIQUE btree (uuid)
|
88
88
|
# released_versions_version_id_environment_id_index | UNIQUE btree (version_id, environment_id)
|
89
89
|
# released_version_support_ended_at_index | btree (support_ended_at)
|
90
|
+
# released_versions_version_id_ndx | btree (version_id)
|
90
91
|
# Foreign key constraints:
|
91
92
|
# released_versions_environment_id_fkey | (environment_id) REFERENCES environments(id)
|
92
93
|
# released_versions_version_id_fkey | (version_id) REFERENCES versions(id)
|
@@ -266,6 +266,7 @@ end
|
|
266
266
|
# verifications_pact_version_id_id_index | btree (pact_version_id, id)
|
267
267
|
# verifications_provider_id_consumer_id_index | btree (provider_id, consumer_id)
|
268
268
|
# verifications_provider_id_index | btree (provider_id)
|
269
|
+
# verifications_provider_version_id_index | btree (provider_version_id)
|
269
270
|
# Foreign key constraints:
|
270
271
|
# fk_verifications_versions | (provider_version_id) REFERENCES versions(id)
|
271
272
|
# verifications_consumer_id_fkey | (consumer_id) REFERENCES pacticipants(id)
|
@@ -149,9 +149,11 @@ end
|
|
149
149
|
|
150
150
|
# Table: integrations
|
151
151
|
# Columns:
|
152
|
-
# id
|
153
|
-
# consumer_id
|
154
|
-
# provider_id
|
152
|
+
# id | integer | PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY
|
153
|
+
# consumer_id | integer | NOT NULL
|
154
|
+
# provider_id | integer | NOT NULL
|
155
|
+
# created_at | timestamp without time zone | NOT NULL
|
156
|
+
# contract_data_updated_at | timestamp without time zone |
|
155
157
|
# Indexes:
|
156
158
|
# integrations_pkey | PRIMARY KEY btree (id)
|
157
159
|
# integrations_consumer_id_provider_id_unique | UNIQUE btree (consumer_id, provider_id)
|
@@ -24,6 +24,7 @@ end
|
|
24
24
|
# Indexes:
|
25
25
|
# latest_pact_publication_ids_for_consume_pact_publication_id_key | UNIQUE btree (pact_publication_id)
|
26
26
|
# unq_latest_ppid_prov_conver | UNIQUE btree (provider_id, consumer_version_id)
|
27
|
+
# latest_pp_ids_for_cons_ver_con_ver_id_ndx | btree (consumer_version_id)
|
27
28
|
# lpp_provider_id_consumer_id_index | btree (provider_id, consumer_id)
|
28
29
|
# Foreign key constraints:
|
29
30
|
# latest_pact_publication_ids_for_consum_consumer_version_id_fkey | (consumer_version_id) REFERENCES versions(id) ON DELETE CASCADE
|
@@ -105,7 +105,7 @@ module PactBroker
|
|
105
105
|
|
106
106
|
def output(string, payload = {})
|
107
107
|
prefix = dry_run ? "[DRY RUN] " : ""
|
108
|
-
logger ? logger.info("#{prefix}#{string}") : puts("#{prefix}#{string} #{payload.to_json}")
|
108
|
+
logger ? logger.info("#{prefix}#{string}", payload) : puts("#{prefix}#{string} #{payload.to_json}")
|
109
109
|
end
|
110
110
|
|
111
111
|
def add_defaults_to_keep_selectors
|
data/lib/pact_broker/verifications/latest_verification_id_for_pact_version_and_provider_version.rb
CHANGED
@@ -23,9 +23,10 @@ end
|
|
23
23
|
# verification_id | integer | NOT NULL
|
24
24
|
# created_at | timestamp without time zone |
|
25
25
|
# Indexes:
|
26
|
-
# latest_v_id_for_pv_and_pv_pv_id_pv_id_unq
|
27
|
-
# latest_v_id_for_pv_and_pv_v_id_unq
|
28
|
-
# latest_v_id_for_pv_and_pv_pv_id_v_id
|
26
|
+
# latest_v_id_for_pv_and_pv_pv_id_pv_id_unq | UNIQUE btree (pact_version_id, provider_version_id)
|
27
|
+
# latest_v_id_for_pv_and_pv_v_id_unq | UNIQUE btree (verification_id)
|
28
|
+
# latest_v_id_for_pv_and_pv_pv_id_v_id | btree (pact_version_id, verification_id)
|
29
|
+
# latest_verif_id_for_pact_ver_and_prov_ver_prov_ver_id_ndx | btree (provider_version_id)
|
29
30
|
# Foreign key constraints:
|
30
31
|
# latest_v_id_for_pv_and_pv_consumer_id_fk | (consumer_id) REFERENCES pacticipants(id) ON DELETE CASCADE
|
31
32
|
# latest_v_id_for_pv_and_pv_pact_version_id_fk | (pact_version_id) REFERENCES pact_versions(id) ON DELETE CASCADE
|
@@ -22,6 +22,7 @@ end
|
|
22
22
|
# Indexes:
|
23
23
|
# pact_version_provider_tag_successful_verifications_pkey | PRIMARY KEY btree (id)
|
24
24
|
# pact_version_provider_tag_verifications_pv_pvtn_wip_unique | UNIQUE btree (pact_version_id, provider_version_tag_name, wip)
|
25
|
+
# pact_ver_prov_tag_success_verif_verif_id_ndx | btree (verification_id)
|
25
26
|
# Foreign key constraints:
|
26
27
|
# pact_version_provider_tag_successful_verifications_pv_id_fk | (pact_version_id) REFERENCES pact_versions(id) ON DELETE CASCADE
|
27
28
|
# pact_version_provider_tag_successful_verifications_v_id_fk | (verification_id) REFERENCES verifications(id) ON DELETE SET NULL
|
data/lib/pact_broker/version.rb
CHANGED
@@ -32,10 +32,11 @@ end
|
|
32
32
|
# pacticipant_id | integer | NOT NULL
|
33
33
|
# branch_name | text | NOT NULL
|
34
34
|
# Indexes:
|
35
|
-
# branch_heads_branch_id_index
|
36
|
-
# branch_heads_branch_name_index
|
37
|
-
#
|
38
|
-
#
|
35
|
+
# branch_heads_branch_id_index | UNIQUE btree (branch_id)
|
36
|
+
# branch_heads_branch_name_index | btree (branch_name)
|
37
|
+
# branch_heads_branch_version_id_index | btree (branch_version_id)
|
38
|
+
# branch_heads_pacticipant_id_index | btree (pacticipant_id)
|
39
|
+
# branch_heads_version_id_index | btree (version_id)
|
39
40
|
# Foreign key constraints:
|
40
41
|
# branch_heads_branch_id_fkey | (branch_id) REFERENCES branches(id) ON DELETE CASCADE
|
41
42
|
# branch_heads_branch_version_id_fkey | (branch_version_id) REFERENCES branch_versions(id) ON DELETE CASCADE
|
@@ -29,12 +29,13 @@ end
|
|
29
29
|
# Table: webhook_executions
|
30
30
|
# Columns:
|
31
31
|
# id | integer | PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY
|
32
|
-
# triggered_webhook_id | integer |
|
33
32
|
# success | boolean | NOT NULL
|
34
33
|
# logs | text |
|
35
34
|
# created_at | timestamp without time zone | NOT NULL
|
35
|
+
# triggered_webhook_id | integer |
|
36
36
|
# Indexes:
|
37
37
|
# webhook_executions_pkey | PRIMARY KEY btree (id)
|
38
|
+
# webhook_executions_pact_publication_id_index | btree (pact_publication_id)
|
38
39
|
# webhook_executions_triggered_webhook_id_index | btree (triggered_webhook_id)
|
39
40
|
# Foreign key constraints:
|
40
41
|
# webhook_executions_consumer_id_fkey | (consumer_id) REFERENCES pacticipants(id)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pact_broker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.112.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bethany Skurrie
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2024-
|
13
|
+
date: 2024-09-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: json
|
@@ -685,6 +685,7 @@ files:
|
|
685
685
|
- lib/pact_broker/api/decorators/tagged_pact_versions_decorator.rb
|
686
686
|
- lib/pact_broker/api/decorators/timestamps.rb
|
687
687
|
- lib/pact_broker/api/decorators/triggered_webhook_decorator.rb
|
688
|
+
- lib/pact_broker/api/decorators/triggered_webhook_logs_decorator.rb
|
688
689
|
- lib/pact_broker/api/decorators/triggered_webhooks_decorator.rb
|
689
690
|
- lib/pact_broker/api/decorators/validation_errors_decorator.rb
|
690
691
|
- lib/pact_broker/api/decorators/validation_errors_problem_json_decorator.rb
|
@@ -1268,7 +1269,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1268
1269
|
- !ruby/object:Gem::Version
|
1269
1270
|
version: '0'
|
1270
1271
|
requirements: []
|
1271
|
-
rubygems_version: 3.5.
|
1272
|
+
rubygems_version: 3.5.18
|
1272
1273
|
signing_key:
|
1273
1274
|
specification_version: 4
|
1274
1275
|
summary: See description
|