pact_broker 2.85.1 → 2.86.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/release_gem.yml +1 -1
- data/.github/workflows/trigger_pact_docs_update.yml +22 -0
- data/CHANGELOG.md +10 -0
- data/DEVELOPER_DOCUMENTATION.md +0 -2
- data/db/migrations/20210914_add_labels_to_webhooks.rb +14 -0
- data/db/migrations/20210915_add_verified_by_to_verification.rb +6 -0
- data/docker-compose-ci-mysql.yml +1 -0
- data/docs/CONFIGURATION.md +255 -66
- data/docs/configuration.yml +166 -101
- data/lib/db.rb +0 -1
- data/lib/pact_broker/api/contracts/webhook_contract.rb +24 -2
- data/lib/pact_broker/api/decorators/verification_decorator.rb +4 -0
- data/lib/pact_broker/api/decorators/webhook_decorator.rb +27 -4
- data/lib/pact_broker/api/pact_broker_urls.rb +4 -0
- data/lib/pact_broker/api/resources/all_webhooks.rb +2 -2
- data/lib/pact_broker/config/runtime_configuration.rb +4 -0
- data/lib/pact_broker/config/runtime_configuration_database_methods.rb +1 -1
- data/lib/pact_broker/db/clean.rb +1 -2
- data/lib/pact_broker/doc/views/pacticipant/label.markdown +12 -0
- data/lib/pact_broker/doc/views/webhooks.markdown +17 -0
- data/lib/pact_broker/domain/pacticipant.rb +4 -0
- data/lib/pact_broker/domain/verification.rb +16 -4
- data/lib/pact_broker/domain/webhook.rb +5 -5
- data/lib/pact_broker/domain/webhook_pacticipant.rb +6 -0
- data/lib/pact_broker/locale/en.yml +1 -0
- data/lib/pact_broker/matrix/head_row.rb +1 -1
- data/lib/pact_broker/matrix/quick_row.rb +0 -1
- data/lib/pact_broker/matrix/repository.rb +0 -1
- data/lib/pact_broker/matrix/row.rb +2 -2
- data/lib/pact_broker/pacts/latest_pact_publication_id_for_consumer_version.rb +0 -1
- data/lib/pact_broker/pacts/pact_publication.rb +7 -0
- data/lib/pact_broker/pacts/pact_publication_clean_selector_dataset_module.rb +19 -0
- data/lib/pact_broker/pacts/pact_publication_dataset_module.rb +30 -2
- data/lib/pact_broker/pacts/pact_version.rb +24 -1
- data/lib/pact_broker/pacts/pacts_for_verification_repository.rb +2 -2
- data/lib/pact_broker/pacts/repository.rb +50 -47
- data/lib/pact_broker/test/http_test_data_builder.rb +37 -10
- data/lib/pact_broker/test/test_data_builder.rb +22 -5
- data/lib/pact_broker/verifications/repository.rb +5 -2
- data/lib/pact_broker/verifications/service.rb +4 -1
- data/lib/pact_broker/version.rb +1 -1
- data/lib/pact_broker/webhooks/event_listener.rb +4 -2
- data/lib/pact_broker/webhooks/pact_and_verification_parameters.rb +1 -0
- data/lib/pact_broker/webhooks/repository.rb +10 -4
- data/lib/pact_broker/webhooks/webhook.rb +66 -8
- data/script/data/verify-pact-for-multiple-selectors.rb +30 -0
- data/script/docs/generate-configuration-docs.rb +24 -3
- data/script/generate-erd +55 -0
- data/spec/features/create_webhook_spec.rb +55 -10
- data/spec/features/get_pact_spec.rb +2 -3
- data/spec/fixtures/verification.json +4 -0
- data/spec/integration/webhooks/pact_publication_spec.rb +51 -0
- data/spec/lib/pact_broker/api/contracts/webhook_contract_spec.rb +50 -0
- data/spec/lib/pact_broker/api/decorators/verification_decorator_spec.rb +8 -1
- data/spec/lib/pact_broker/api/decorators/verification_summary_decorator_spec.rb +3 -1
- data/spec/lib/pact_broker/api/decorators/webhook_decorator_spec.rb +4 -4
- data/spec/lib/pact_broker/config/runtime_configuration_documentation_spec.rb +30 -0
- data/spec/lib/pact_broker/deployments/environment_service_spec.rb +1 -1
- data/spec/lib/pact_broker/matrix/head_row_spec.rb +9 -5
- data/spec/lib/pact_broker/pacts/{latest_tagged_pact_publications_spec.rb → pact_publication_clean_selector_dataset_module_spec.rb} +7 -9
- data/spec/lib/pact_broker/pacts/pact_version_spec.rb +32 -0
- data/spec/lib/pact_broker/pacts/repository_spec.rb +33 -0
- data/spec/lib/pact_broker/verifications/service_spec.rb +16 -2
- data/spec/lib/pact_broker/webhooks/repository_spec.rb +158 -15
- data/spec/lib/pact_broker/webhooks/webhook_spec.rb +8 -5
- metadata +16 -11
- data/lib/pact_broker/pacts/all_pact_publications.rb +0 -158
- data/lib/pact_broker/pacts/latest_pact_publications.rb +0 -48
- data/lib/pact_broker/pacts/latest_pact_publications_by_consumer_version.rb +0 -26
- data/lib/pact_broker/pacts/latest_tagged_pact_publications.rb +0 -45
- data/lib/pact_broker/verifications/latest_verification_for_pact_version.rb +0 -39
- data/spec/lib/pact_broker/verifications/latest_verification_for_pact_version_spec.rb +0 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 349e4547b3d6dbd536df4c39648a8ab89975580509e895d98283535b4406cf06
|
4
|
+
data.tar.gz: '096c7874fd1497771def8096b581bd68e675a0339ed43dfbc340e21f455a73f6'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1e9248d5f73dc92fc48ddc0ba33f735533dda17276398bbddf38b9437808fc7dc4ecb8fa16ed55532b88b72101883490778447eafd6996c4af8e1e2b1684ec0
|
7
|
+
data.tar.gz: 750b601c780b37d3df11570e468348e58accaed804d9a34904200c24895be014c4a898d07d714aeb8c0828620db230317b4e41f844c77448c80f065b348053e5
|
@@ -35,7 +35,7 @@ jobs:
|
|
35
35
|
needs: release
|
36
36
|
strategy:
|
37
37
|
matrix:
|
38
|
-
repository: [pact-foundation/pact-broker-docker, DiUS/pact_broker-docker]
|
38
|
+
repository: [pact-foundation/pact-broker-docker, DiUS/pact_broker-docker, pact-foundation/gem-released]
|
39
39
|
runs-on: ubuntu-latest
|
40
40
|
steps:
|
41
41
|
- name: Notify ${{ matrix.repository }} of gem release
|
@@ -0,0 +1,22 @@
|
|
1
|
+
name: Trigger update to docs.pact.io
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- master
|
7
|
+
paths:
|
8
|
+
- '**/*.md'
|
9
|
+
repository_dispatch:
|
10
|
+
types:
|
11
|
+
- gem-released
|
12
|
+
|
13
|
+
jobs:
|
14
|
+
build:
|
15
|
+
runs-on: ubuntu-latest
|
16
|
+
steps:
|
17
|
+
- name: Trigger docs.pact.io update workflow
|
18
|
+
uses: peter-evans/repository-dispatch@v1
|
19
|
+
with:
|
20
|
+
token: ${{ secrets.GHTOKENFORTRIGGERINGPACTDOCSUPDATE }}
|
21
|
+
repository: pact-foundation/docs.pact.io
|
22
|
+
event-type: pact-broker-docs-updated
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
<a name="v2.86.0"></a>
|
2
|
+
### v2.86.0 (2021-09-17)
|
3
|
+
|
4
|
+
#### Features
|
5
|
+
|
6
|
+
* allow webhooks to match pacticipants by label (#501) ([f30a9dcc](/../../commit/f30a9dcc))
|
7
|
+
* in the webhook body for contract_published and contract_content_changed, use the latest verification from the main branch if present ([b45398bd](/../../commit/b45398bd))
|
8
|
+
* change default database_connection_validation_timeout from -1 (every request) to nil (which Sequel will set to 3600 seconds) ([0c508572](/../../commit/0c508572))
|
9
|
+
* add version details of the implementation that verified a Pact (#363) ([021a8692](/../../commit/021a8692))
|
10
|
+
|
1
11
|
<a name="v2.85.1"></a>
|
2
12
|
### v2.85.1 (2021-09-14)
|
3
13
|
|
data/DEVELOPER_DOCUMENTATION.md
CHANGED
@@ -85,8 +85,6 @@ pact publication resource will be created with an incremented revision number, b
|
|
85
85
|
|
86
86
|
* `latest_pact_publications_by_consumer_versions` - This view has the same columns as `all_pact_publications`, but it only contains the latest revision of the pact for each provider/consumer/version. It maps to what a user would consider the "pact" resource ie. `/pacts/provider/PROVIDER/consumer/CONSUMER/version/VERSION`. Previous revisions are not currently exposed via the API.
|
87
87
|
|
88
|
-
The `AllPactPublications` Sequel model in the code is what is used when querying data for displaying in a response, rather than the normalised separate PactPublication and PactVersion models.
|
89
|
-
|
90
88
|
* `latest_pact_publications` - This view has the same columns as `all_pact_publications`, but it only contains the latest revision of the pact for the latest consumer version for each consumer/provider pair. It is what a user would consider the "latest pact", and maps to the resource at `/pacts/provider/PROVIDER/consumer/CONSUMER/latest`
|
91
89
|
|
92
90
|
* `latest_tagged_pact_publications` - This view has the same columns as `all_pact_publications`, plus a `tag_name` column. It is used to return the pact for the latest tagged version of a consumer.
|
@@ -0,0 +1,14 @@
|
|
1
|
+
Sequel.migration do
|
2
|
+
change do
|
3
|
+
alter_table(:webhooks) do
|
4
|
+
add_column(:consumer_label, String)
|
5
|
+
add_column(:provider_label, String)
|
6
|
+
end
|
7
|
+
|
8
|
+
# SQLite workaround - with one `alter_table` block it adds only last constraint.
|
9
|
+
alter_table(:webhooks) do
|
10
|
+
add_constraint(:consumer_label_exclusion, "consumer_id IS NULL OR (consumer_id IS NOT NULL AND consumer_label IS NULL)")
|
11
|
+
add_constraint(:provider_label_exclusion, "provider_id IS NULL OR (provider_id IS NOT NULL AND provider_label IS NULL)")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/docker-compose-ci-mysql.yml
CHANGED
data/docs/CONFIGURATION.md
CHANGED
@@ -1,6 +1,68 @@
|
|
1
1
|
# Pact Broker Configuration
|
2
2
|
|
3
3
|
|
4
|
+
<!-- This is a generated file. Please do not edit it directly. -->
|
5
|
+
|
6
|
+
The Pact Broker supports configuration via environment variables or a YAML file.
|
7
|
+
|
8
|
+
To configure the application using a YAML file, place it in the location `config/pact_broker.yml`,
|
9
|
+
relative to the working directory of the application, or set the environment
|
10
|
+
variable `PACT_BROKER_CONF` to the full path to the configuration file.
|
11
|
+
<br/>
|
12
|
+
|
13
|
+
## Logging
|
14
|
+
|
15
|
+
<hr/>
|
16
|
+
|
17
|
+
|
18
|
+
### log_level
|
19
|
+
|
20
|
+
The application log level
|
21
|
+
|
22
|
+
**YAML configuration key name:** `log_level`<br/>
|
23
|
+
**Environment variable name:** `PACT_BROKER_LOG_LEVEL`<br/>
|
24
|
+
**Default:** `info`<br/>
|
25
|
+
**Allowed values:** `debug`, `info`, `warn`, `error`, `fatal`<br/>
|
26
|
+
|
27
|
+
### log_format
|
28
|
+
|
29
|
+
The application log format. Can be any value supported by Semantic Logger.
|
30
|
+
|
31
|
+
**YAML configuration key name:** `log_format`<br/>
|
32
|
+
**Environment variable name:** `PACT_BROKER_LOG_FORMAT`<br/>
|
33
|
+
**Default:** `default`<br/>
|
34
|
+
**Allowed values:** `default`, `json`, `color`<br/>
|
35
|
+
**More information:** https://github.com/rocketjob/semantic_logger/tree/master/lib/semantic_logger/formatters<br/>
|
36
|
+
|
37
|
+
### log_dir
|
38
|
+
|
39
|
+
The log file directory
|
40
|
+
|
41
|
+
**YAML configuration key name:** `log_dir`<br/>
|
42
|
+
**Environment variable name:** `PACT_BROKER_LOG_DIR`<br/>
|
43
|
+
**Default:** `./logs`<br/>
|
44
|
+
|
45
|
+
### log_stream
|
46
|
+
|
47
|
+
The stream to which the logs will be sent.
|
48
|
+
|
49
|
+
While the default is `file` for the Ruby application, it is set to `stdout` on the supported Docker images.
|
50
|
+
|
51
|
+
**YAML configuration key name:** `log_stream`<br/>
|
52
|
+
**Environment variable name:** `PACT_BROKER_LOG_STREAM`<br/>
|
53
|
+
**Default:** `file`<br/>
|
54
|
+
**Allowed values:** `stdout`, `file`<br/>
|
55
|
+
|
56
|
+
### hide_pactflow_messages
|
57
|
+
|
58
|
+
Set to `true` to hide the messages in the logs about Pactflow
|
59
|
+
|
60
|
+
**YAML configuration key name:** `hide_pactflow_messages`<br/>
|
61
|
+
**Environment variable name:** `PACT_BROKER_HIDE_PACTFLOW_MESSAGES`<br/>
|
62
|
+
**Default:** `true`<br/>
|
63
|
+
**Allowed values:** `true`, `false`<br/>
|
64
|
+
**More information:** https://pactflow.io<br/>
|
65
|
+
|
4
66
|
<br/>
|
5
67
|
|
6
68
|
## Database
|
@@ -15,6 +77,8 @@ The database adapter. For production use, Postgres must be used.
|
|
15
77
|
For investigations/spikes on a development machine, you can use SQlite. It is not supported as a production database, as it does not support
|
16
78
|
concurrent requests.
|
17
79
|
|
80
|
+
**YAML configuration key name:** `database_adapter`<br/>
|
81
|
+
**Environment variable name:** `PACT_BROKER_DATABASE_ADAPTER`<br/>
|
18
82
|
**Default:** `postgres`<br/>
|
19
83
|
**Allowed values:** `postgres` (for production use), `sqlite` (for spikes only)<br/>
|
20
84
|
|
@@ -22,39 +86,53 @@ concurrent requests.
|
|
22
86
|
|
23
87
|
The database username
|
24
88
|
|
89
|
+
**YAML configuration key name:** `database_username`<br/>
|
90
|
+
**Environment variable name:** `PACT_BROKER_DATABASE_USERNAME`<br/>
|
25
91
|
|
26
92
|
### database_password
|
27
93
|
|
28
94
|
The database password
|
29
95
|
|
96
|
+
**YAML configuration key name:** `database_password`<br/>
|
97
|
+
**Environment variable name:** `PACT_BROKER_DATABASE_PASSWORD`<br/>
|
30
98
|
|
31
99
|
### database_name
|
32
100
|
|
33
101
|
The database name. If using the `sqlite` adapter, this will be the path to the database file.
|
34
102
|
|
103
|
+
**YAML configuration key name:** `database_name`<br/>
|
104
|
+
**Environment variable name:** `PACT_BROKER_DATABASE_NAME`<br/>
|
35
105
|
**Examples:** `pact_broker`, `/tmp/pact_broker.sqlite3`, `./tmp/pact_broker.sqlite3`<br/>
|
36
106
|
|
37
107
|
### database_host
|
38
108
|
|
39
109
|
The database host
|
40
110
|
|
111
|
+
**YAML configuration key name:** `database_host`<br/>
|
112
|
+
**Environment variable name:** `PACT_BROKER_DATABASE_HOST`<br/>
|
41
113
|
|
42
114
|
### database_port
|
43
115
|
|
44
116
|
The database port. If ommited, the default port for the adapter will be used.
|
45
117
|
|
118
|
+
**YAML configuration key name:** `database_port`<br/>
|
119
|
+
**Environment variable name:** `PACT_BROKER_DATABASE_PORT`<br/>
|
46
120
|
|
47
121
|
### database_url
|
48
122
|
|
49
123
|
The full database URL may be specified instead of the separate adapter, username, password, name, host and port.
|
50
124
|
|
51
|
-
**
|
52
|
-
**
|
125
|
+
**YAML configuration key name:** `database_url`<br/>
|
126
|
+
**Environment variable name:** `PACT_BROKER_DATABASE_URL`<br/>
|
127
|
+
**Format:** `{database_adapter}://{database_username}:{database_password}@{database_host}:{database_port}/{database_name}`<br/>
|
128
|
+
**Examples:** `postgres://pact_broker_user:pact_broker_password@pact_broker_db_host/pact_broker`, `sqlite:///tmp/pact_broker.sqlite3` (relative path to working directory), `sqlite:////tmp/pact_broker.sqlite3` (absolute path)<br/>
|
53
129
|
|
54
130
|
### database_sslmode
|
55
131
|
|
56
132
|
The Postgresql ssl mode.
|
57
133
|
|
134
|
+
**YAML configuration key name:** `database_sslmode`<br/>
|
135
|
+
**Environment variable name:** `PACT_BROKER_DATABASE_SSLMODE`<br/>
|
58
136
|
**Default:** `prefer`<br/>
|
59
137
|
**Allowed values:** `disable`, `allow`, `prefer`, `require`, `verify-ca`, `verify-full`<br/>
|
60
138
|
**More information:** https://ankane.org/postgres-sslmode-explained<br/>
|
@@ -65,118 +143,116 @@ The log level that will be used when the SQL query statements are logged.
|
|
65
143
|
|
66
144
|
To disable noisy SQL query logging when the application `log_level` is set to `debug` for other reasons, use the value `none`.
|
67
145
|
|
146
|
+
**YAML configuration key name:** `sql_log_level`<br/>
|
147
|
+
**Environment variable name:** `PACT_BROKER_SQL_LOG_LEVEL`<br/>
|
68
148
|
**Default:** `debug`<br/>
|
69
149
|
**Allowed values:** `none`, `debug`, `info`, `warn`, `error`, `fatal`<br/>
|
70
150
|
|
71
151
|
### sql_log_warn_duration
|
72
152
|
|
153
|
+
The number of seconds after which to log an SQL query at warn level. Use this for detecting slow queries.
|
73
154
|
|
74
|
-
|
155
|
+
**YAML configuration key name:** `sql_log_warn_duration`<br/>
|
156
|
+
**Environment variable name:** `PACT_BROKER_SQL_LOG_WARN_DURATION`<br/>
|
75
157
|
**Default:** `5`<br/>
|
158
|
+
**Allowed values:** A positive integer or float, as a string.<br/>
|
159
|
+
**More information:** https://sequel.jeremyevans.net/rdoc/files/doc/opening_databases_rdoc.html#label-General+connection+options<br/>
|
76
160
|
|
77
161
|
### database_max_connections
|
78
162
|
|
163
|
+
The maximum size of the connection pool (4 connections by default on most databases)
|
79
164
|
|
80
|
-
|
81
|
-
**
|
165
|
+
**YAML configuration key name:** `database_max_connections`<br/>
|
166
|
+
**Environment variable name:** `PACT_BROKER_DATABASE_MAX_CONNECTIONS`<br/>
|
167
|
+
**Default:** `4`<br/>
|
168
|
+
**Allowed values:** A positive integer value.<br/>
|
169
|
+
**More information:** https://sequel.jeremyevans.net/rdoc/files/doc/opening_databases_rdoc.html#label-General+connection+options<br/>
|
82
170
|
|
83
171
|
### database_pool_timeout
|
84
172
|
|
173
|
+
The number of seconds to wait if a connection cannot be acquired before raising an error
|
85
174
|
|
86
|
-
|
175
|
+
**YAML configuration key name:** `database_pool_timeout`<br/>
|
176
|
+
**Environment variable name:** `PACT_BROKER_DATABASE_POOL_TIMEOUT`<br/>
|
87
177
|
**Default:** `5`<br/>
|
178
|
+
**Allowed values:** A positive integer.<br/>
|
179
|
+
**More information:** https://sequel.jeremyevans.net/rdoc/files/doc/opening_databases_rdoc.html#label-General+connection+options<br/>
|
88
180
|
|
89
181
|
### database_connect_max_retries
|
90
182
|
|
183
|
+
When running the Pact Broker Docker image experimentally using Docker Compose on a local development machine,
|
184
|
+
the Broker application process may be ready before the database is available for connection, causing the application
|
185
|
+
container to exit with an error. Setting the max retries to a non-zero number will allow it to retry the connection the
|
186
|
+
configured number of times, waiting 3 seconds between attempts.
|
91
187
|
|
92
|
-
|
188
|
+
**YAML configuration key name:** `database_connect_max_retries`<br/>
|
189
|
+
**Environment variable name:** `PACT_BROKER_DATABASE_CONNECT_MAX_RETRIES`<br/>
|
93
190
|
**Default:** `0`<br/>
|
191
|
+
**Allowed values:** A positive integer value.<br/>
|
94
192
|
|
95
193
|
### auto_migrate_db
|
96
194
|
|
195
|
+
Whether or not to run the database schema migrations on start up. It is recommended to set this to `true`.
|
97
196
|
|
98
|
-
|
197
|
+
**YAML configuration key name:** `auto_migrate_db`<br/>
|
198
|
+
**Environment variable name:** `PACT_BROKER_AUTO_MIGRATE_DB`<br/>
|
99
199
|
**Default:** `true`<br/>
|
200
|
+
**Allowed values:** `true`, `false`<br/>
|
100
201
|
|
101
202
|
### auto_migrate_db_data
|
102
203
|
|
204
|
+
Whether or not to run the database data migrations on start up. It is recommended to set this to `true`.
|
103
205
|
|
104
|
-
|
206
|
+
**YAML configuration key name:** `auto_migrate_db_data`<br/>
|
207
|
+
**Environment variable name:** `PACT_BROKER_AUTO_MIGRATE_DB_DATA`<br/>
|
105
208
|
**Default:** `true`<br/>
|
209
|
+
**Allowed values:** `true`, `false`<br/>
|
106
210
|
|
107
211
|
### allow_missing_migration_files
|
108
212
|
|
213
|
+
If `true`, will not raise an error if a database migration is recorded in the database that does not have an
|
214
|
+
equivalent file in the codebase. If this is true, an older version of the code may be used with a newer version of the database,
|
215
|
+
however, data integrity issues may occur.
|
109
216
|
|
110
|
-
|
111
|
-
**
|
112
|
-
|
113
|
-
### validate_database_connection_config
|
114
|
-
|
115
|
-
|
116
|
-
|
217
|
+
**YAML configuration key name:** `allow_missing_migration_files`<br/>
|
218
|
+
**Environment variable name:** `PACT_BROKER_ALLOW_MISSING_MIGRATION_FILES`<br/>
|
117
219
|
**Default:** `true`<br/>
|
220
|
+
**More information:** https://sequel.jeremyevans.net/rdoc/classes/Sequel/Migrator.html<br/>
|
118
221
|
|
119
222
|
### database_statement_timeout
|
120
223
|
|
224
|
+
The number of seconds after which an SQL query will be aborted. Only supported for Postgresql connections.
|
121
225
|
|
122
|
-
|
226
|
+
**YAML configuration key name:** `database_statement_timeout`<br/>
|
227
|
+
**Environment variable name:** `PACT_BROKER_DATABASE_STATEMENT_TIMEOUT`<br/>
|
123
228
|
**Default:** `15`<br/>
|
229
|
+
**Allowed values:** A positive integer or float.<br/>
|
230
|
+
**More information:** https://www.postgresql.org/docs/9.3/runtime-config-client.html<br/>
|
124
231
|
|
125
232
|
### metrics_sql_statement_timeout
|
126
233
|
|
234
|
+
The number of seconds after which the SQL queries used for the metrics endpoint will be aborted.
|
235
|
+
This is configurable separately from the standard `database_statement_timeout` as it may need to be significantly
|
236
|
+
longer than the desired value for standard queries.
|
127
237
|
|
128
|
-
|
238
|
+
**YAML configuration key name:** `metrics_sql_statement_timeout`<br/>
|
239
|
+
**Environment variable name:** `PACT_BROKER_METRICS_SQL_STATEMENT_TIMEOUT`<br/>
|
129
240
|
**Default:** `30`<br/>
|
241
|
+
**Allowed values:** A positive integer.<br/>
|
130
242
|
|
131
243
|
### database_connection_validation_timeout
|
132
244
|
|
245
|
+
The number of seconds after which to check the health of a connection from a connection pool before passing it to the application.
|
133
246
|
|
247
|
+
`-1` means that connections will be validated every time, which avoids errors
|
248
|
+
when databases are restarted and connections are killed. This has a performance
|
249
|
+
penalty, so consider increasing this timeout if building a frequently accessed service.
|
134
250
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
<hr/>
|
141
|
-
|
142
|
-
|
143
|
-
### log_level
|
144
|
-
|
145
|
-
The application log level
|
146
|
-
|
147
|
-
**Default:** `info`<br/>
|
148
|
-
**Allowed values:** `debug`, `info`, `warn`, `error`, `fatal`<br/>
|
149
|
-
|
150
|
-
### log_format
|
151
|
-
|
152
|
-
The application log format. Can be any value supported by Semantic Logger.
|
153
|
-
|
154
|
-
**Default:** `default`<br/>
|
155
|
-
**Allowed values:** `default`, `json`, `color`<br/>
|
156
|
-
**More information:** https://github.com/rocketjob/semantic_logger/tree/master/lib/semantic_logger/formatters<br/>
|
157
|
-
|
158
|
-
### log_dir
|
159
|
-
|
160
|
-
The log file directory
|
161
|
-
|
162
|
-
**Default:** `./logs`<br/>
|
163
|
-
|
164
|
-
### log_stream
|
165
|
-
|
166
|
-
The stream to which the logs will be sent.
|
167
|
-
|
168
|
-
While the default is `file` for the Ruby application, it is set to `stdout` on the supported Docker images.
|
169
|
-
|
170
|
-
**Default:** `file`<br/>
|
171
|
-
**Allowed values:** `stdout`, `file`<br/>
|
172
|
-
|
173
|
-
### hide_pactflow_messages
|
174
|
-
|
175
|
-
Set to `true` to hide the messages in the logs about Pactflow
|
176
|
-
|
177
|
-
**Default:** `true`<br/>
|
178
|
-
**Allowed values:** `true`, `false`<br/>
|
179
|
-
**More information:** https://pactflow.io<br/>
|
251
|
+
**YAML configuration key name:** `database_connection_validation_timeout`<br/>
|
252
|
+
**Environment variable name:** `PACT_BROKER_DATABASE_CONNECTION_VALIDATION_TIMEOUT`<br/>
|
253
|
+
**Default:** -1 for v2.85.1 and earlier, 3600 for later versions.<br/>
|
254
|
+
**Allowed values:** -1 or any positive integer.<br/>
|
255
|
+
**More information:** https://sequel.jeremyevans.net/rdoc-plugins/files/lib/sequel/extensions/connection_validator_rb.html<br/>
|
180
256
|
|
181
257
|
<br/>
|
182
258
|
|
@@ -190,8 +266,10 @@ should be used for CI/CD.
|
|
190
266
|
|
191
267
|
### basic_auth_enabled
|
192
268
|
|
193
|
-
Whether to enable basic authorization
|
269
|
+
Whether to enable basic authorization. This is automatically set to true for the Docker images if the `basic_auth_username` and `basic_auth_password` are set.
|
194
270
|
|
271
|
+
**YAML configuration key name:** `basic_auth_enabled`<br/>
|
272
|
+
**Environment variable name:** `PACT_BROKER_BASIC_AUTH_ENABLED`<br/>
|
195
273
|
**Default:** `false`<br/>
|
196
274
|
**Allowed values:** `true`, `false`<br/>
|
197
275
|
|
@@ -199,26 +277,36 @@ Whether to enable basic authorization
|
|
199
277
|
|
200
278
|
The username for the read/write basic auth user.
|
201
279
|
|
280
|
+
**YAML configuration key name:** `basic_auth_username`<br/>
|
281
|
+
**Environment variable name:** `PACT_BROKER_BASIC_AUTH_USERNAME`<br/>
|
202
282
|
|
203
283
|
### basic_auth_password
|
204
284
|
|
205
285
|
The password for the read/write basic auth user.
|
206
286
|
|
287
|
+
**YAML configuration key name:** `basic_auth_password`<br/>
|
288
|
+
**Environment variable name:** `PACT_BROKER_BASIC_AUTH_PASSWORD`<br/>
|
207
289
|
|
208
290
|
### basic_auth_read_only_username
|
209
291
|
|
210
292
|
The username for the read only basic auth user.
|
211
293
|
|
294
|
+
**YAML configuration key name:** `basic_auth_read_only_username`<br/>
|
295
|
+
**Environment variable name:** `PACT_BROKER_BASIC_AUTH_READ_ONLY_USERNAME`<br/>
|
212
296
|
|
213
297
|
### basic_auth_read_only_password
|
214
298
|
|
215
299
|
The password for the read only basic auth user.
|
216
300
|
|
301
|
+
**YAML configuration key name:** `basic_auth_read_only_password`<br/>
|
302
|
+
**Environment variable name:** `PACT_BROKER_BASIC_AUTH_READ_ONLY_PASSWORD`<br/>
|
217
303
|
|
218
304
|
### allow_public_read
|
219
305
|
|
220
306
|
If you want to allow public read access, but still require credentials for writing, then leave `basic_auth_read_only_username` and `basic_auth_read_only_password` unset, and set `allow_public_read` to `true`.
|
221
307
|
|
308
|
+
**YAML configuration key name:** `allow_public_read`<br/>
|
309
|
+
**Environment variable name:** `PACT_BROKER_ALLOW_PUBLIC_READ`<br/>
|
222
310
|
**Default:** `false`<br/>
|
223
311
|
**Allowed values:** `true`, `false`<br/>
|
224
312
|
|
@@ -226,6 +314,8 @@ If you want to allow public read access, but still require credentials for writi
|
|
226
314
|
|
227
315
|
If you have enabled basic auth, but require unauthenticated access to the heartbeat URL (eg. for use within an AWS autoscaling group), set `public_heartbeat` to `true`.
|
228
316
|
|
317
|
+
**YAML configuration key name:** `public_heartbeat`<br/>
|
318
|
+
**Environment variable name:** `PACT_BROKER_PUBLIC_HEARTBEAT`<br/>
|
229
319
|
**Default:** `false`<br/>
|
230
320
|
**Allowed values:** `true`, `false`<br/>
|
231
321
|
|
@@ -233,6 +323,8 @@ If you have enabled basic auth, but require unauthenticated access to the heartb
|
|
233
323
|
|
234
324
|
Set this to true to allow status badges to be embedded in README files without requiring a hardcoded password.
|
235
325
|
|
326
|
+
**YAML configuration key name:** `enable_public_badge_access`<br/>
|
327
|
+
**Environment variable name:** `PACT_BROKER_ENABLE_PUBLIC_BADGE_ACCESS`<br/>
|
236
328
|
**Default:** `false`<br/>
|
237
329
|
**Allowed values:** `true`, `false`<br/>
|
238
330
|
|
@@ -248,6 +340,8 @@ Set this to true to allow status badges to be embedded in README files without r
|
|
248
340
|
The schedule of seconds to wait between webhook execution attempts.
|
249
341
|
The default schedule is 10 sec, 1 min, 2 min, 5 min, 10 min, 20 min (38 minutes in total).
|
250
342
|
|
343
|
+
**YAML configuration key name:** `webhook_retry_schedule`<br/>
|
344
|
+
**Environment variable name:** `PACT_BROKER_WEBHOOK_RETRY_SCHEDULE`<br/>
|
251
345
|
**Format:** A space separated list of integers.<br/>
|
252
346
|
**Default:** `10 60 120 300 600 1200`<br/>
|
253
347
|
|
@@ -256,6 +350,8 @@ The default schedule is 10 sec, 1 min, 2 min, 5 min, 10 min, 20 min (38 minutes
|
|
256
350
|
The allowed HTTP methods for webhooks.
|
257
351
|
It is highly recommended that only `POST` requests are allowed to ensure that webhooks cannot be used to retrieve sensitive information from hosts within the same network.
|
258
352
|
|
353
|
+
**YAML configuration key name:** `webhook_http_method_whitelist`<br/>
|
354
|
+
**Environment variable name:** `PACT_BROKER_WEBHOOK_HTTP_METHOD_WHITELIST`<br/>
|
259
355
|
**Format:** A space separated list.<br/>
|
260
356
|
**Default:** `POST`<br/>
|
261
357
|
**Allowed values:** `POST`, `GET` (not recommended), `PUT` (not recommended), `PATCH` (not recommended), `DELETE` (not recommended)<br/>
|
@@ -268,6 +364,8 @@ considered a success, otherwise the webhook will be re-triggered based on the `w
|
|
268
364
|
In most cases, configuring this is not necessary, but there are some CI systems that return a non 200 status for a success,
|
269
365
|
which is why this feature exists.
|
270
366
|
|
367
|
+
**YAML configuration key name:** `webhook_http_code_success`<br/>
|
368
|
+
**Environment variable name:** `PACT_BROKER_WEBHOOK_HTTP_CODE_SUCCESS`<br/>
|
271
369
|
**Format:** A space separated list of integers.<br/>
|
272
370
|
**Default:** `200 201 202 203 204 205 206`<br/>
|
273
371
|
**Allowed values:** `Any valid HTTP status code`<br/>
|
@@ -276,6 +374,8 @@ which is why this feature exists.
|
|
276
374
|
|
277
375
|
The allowed URL schemes for webhooks.
|
278
376
|
|
377
|
+
**YAML configuration key name:** `webhook_scheme_whitelist`<br/>
|
378
|
+
**Environment variable name:** `PACT_BROKER_WEBHOOK_SCHEME_WHITELIST`<br/>
|
279
379
|
**Format:** A space delimited list.<br/>
|
280
380
|
**Default:** `https`<br/>
|
281
381
|
**Allowed values:** `https`, `http`<br/>
|
@@ -285,8 +385,10 @@ The allowed URL schemes for webhooks.
|
|
285
385
|
A list of hosts, network ranges, or host regular expressions.
|
286
386
|
Regular expressions should start and end with a `/` to differentiate them from Strings.
|
287
387
|
Note that backslashes need to be escaped with a second backslash when setting via an environment variable.
|
288
|
-
Please read the Webhook whitelists section of the Pact Broker configuration documentation to understand how the whitelist is used.
|
388
|
+
Please read the [Webhook whitelists section](https://docs.pact.io/pact_broker/configuration/features#webhooks) of the Pact Broker configuration documentation to understand how the whitelist is used.
|
289
389
|
|
390
|
+
**YAML configuration key name:** `webhook_host_whitelist`<br/>
|
391
|
+
**Environment variable name:** `PACT_BROKER_WEBHOOK_HOST_WHITELIST`<br/>
|
290
392
|
**Examples:** `github.com`, `10.2.3.41/24`, `/.*\\.foo\\.com$/`<br/>
|
291
393
|
**More information:** https://docs.pact.io/pact_broker/configuration/#webhook-whitelists<br/>
|
292
394
|
|
@@ -294,12 +396,22 @@ Please read the Webhook whitelists section of the Pact Broker configuration docu
|
|
294
396
|
|
295
397
|
If set to true, SSL verification will be disabled for the HTTP requests made by the webhooks
|
296
398
|
|
399
|
+
**YAML configuration key name:** `disable_ssl_verification`<br/>
|
400
|
+
**Environment variable name:** `PACT_BROKER_DISABLE_SSL_VERIFICATION`<br/>
|
297
401
|
**Default:** `false`<br/>
|
298
402
|
**Allowed values:** `true`, `false`<br/>
|
299
403
|
|
404
|
+
### user_agent
|
405
|
+
|
406
|
+
The user agent to set when making HTTP requests for webhooks.
|
407
|
+
|
408
|
+
**YAML configuration key name:** `user_agent`<br/>
|
409
|
+
**Environment variable name:** `PACT_BROKER_USER_AGENT`<br/>
|
410
|
+
**Default:** `Pact Broker v{VERSION}`<br/>
|
411
|
+
|
300
412
|
<br/>
|
301
413
|
|
302
|
-
##
|
414
|
+
## Resources
|
303
415
|
|
304
416
|
<hr/>
|
305
417
|
|
@@ -310,6 +422,8 @@ The HTTP port that the Pact Broker application will run on. This will only be ho
|
|
310
422
|
a package that actually reads this property (eg. one of the supported Docker images). If you are running the vanilla Ruby application,
|
311
423
|
the application will run on the port the server has been configured to run on (eg. `bundle exec rackup -p 9393`)
|
312
424
|
|
425
|
+
**YAML configuration key name:** `port`<br/>
|
426
|
+
**Environment variable name:** `PACT_BROKER_PORT`<br/>
|
313
427
|
**Default:** `9292`<br/>
|
314
428
|
|
315
429
|
### base_url
|
@@ -321,6 +435,8 @@ deploying the Pact Broker to production as it prevents cache poisoning security
|
|
321
435
|
It is also required when deploying the Broker behind a reverse proxy, and when the application has been mounted at a non-root context.
|
322
436
|
Note that this attribute does not change where the application is actually mounted (that is the concern of the deployment configuration) - it just changes the links.
|
323
437
|
|
438
|
+
**YAML configuration key name:** `base_url`<br/>
|
439
|
+
**Environment variable name:** `PACT_BROKER_BASE_URL`<br/>
|
324
440
|
**Examples:** `https://pact-broker.mycompany.com`, `https://my-company.com:9292/pact-broker`<br/>
|
325
441
|
|
326
442
|
### base_urls
|
@@ -328,6 +444,8 @@ Note that this attribute does not change where the application is actually mount
|
|
328
444
|
An alias of base_url. From version 2.79.0, multiple base URLs can be configured for architectures that use
|
329
445
|
gateways or proxies that allow the same Pact Broker instance to be addressed with different base URLs.
|
330
446
|
|
447
|
+
**YAML configuration key name:** `base_urls`<br/>
|
448
|
+
**Environment variable name:** `PACT_BROKER_BASE_URLS`<br/>
|
331
449
|
**Format:** A space separated list.<br/>
|
332
450
|
**Example:** `http://my-internal-pact-broker:9292 https://my-external-pact-broker`<br/>
|
333
451
|
|
@@ -335,9 +453,34 @@ gateways or proxies that allow the same Pact Broker instance to be addressed wit
|
|
335
453
|
|
336
454
|
The URL of the shields.io server used to generate the README badges.
|
337
455
|
|
456
|
+
**YAML configuration key name:** `shields_io_base_url`<br/>
|
457
|
+
**Environment variable name:** `PACT_BROKER_SHIELDS_IO_BASE_URL`<br/>
|
338
458
|
**Default:** `https://img.shields.io`<br/>
|
339
459
|
**More information:** https://shields.io<br/>
|
340
460
|
|
461
|
+
### badge_provider_mode
|
462
|
+
|
463
|
+
The method by which the badges are generated. When set to `redirect`, a request to the Pact Broker for a badge will be sent a redirect response
|
464
|
+
to render the badge from the shields.io server directly in the browser. This is the recommended value.
|
465
|
+
When set to `proxy`, the Pact Broker will make a request directly to the configured shields.io server, and then send the returned file
|
466
|
+
back to the browser. This mode is not recommended for security and performance reasons.
|
467
|
+
|
468
|
+
**YAML configuration key name:** `badge_provider_mode`<br/>
|
469
|
+
**Environment variable name:** `PACT_BROKER_BADGE_PROVIDER_MODE`<br/>
|
470
|
+
**Default:** `redirect`<br/>
|
471
|
+
**Allowed values:** `redirect`, `proxy`<br/>
|
472
|
+
|
473
|
+
### enable_diagnostic_endpoints
|
474
|
+
|
475
|
+
Whether or not to enable the diagnostic endpoints at `/diagnostic/status/heartbeat` and `"diagnostic/status/dependencies`.
|
476
|
+
The heartbeat endpoint is for use by load balancers, and the dependencies endpoint is for checking that the database
|
477
|
+
is available (do not use this for load balancing, as it makes a database connection).
|
478
|
+
|
479
|
+
**YAML configuration key name:** `enable_diagnostic_endpoints`<br/>
|
480
|
+
**Environment variable name:** `PACT_BROKER_ENABLE_DIAGNOSTIC_ENDPOINTS`<br/>
|
481
|
+
**Default:** `true`<br/>
|
482
|
+
**Allowed values:** `true`, `false`<br/>
|
483
|
+
|
341
484
|
<br/>
|
342
485
|
|
343
486
|
## Domain
|
@@ -359,6 +502,8 @@ or that the pacticipant should be created manually if it was intended to be a ne
|
|
359
502
|
To turn this feature off, set `check_for_potential_duplicate_pacticipant_names` to `false`, and make sure everyone is very careful with their naming!
|
360
503
|
The usefulness of the Broker depends on the integrity of the data, which in turn depends on the correctness of the pacticipant names.
|
361
504
|
|
505
|
+
**YAML configuration key name:** `check_for_potential_duplicate_pacticipant_names`<br/>
|
506
|
+
**Environment variable name:** `PACT_BROKER_CHECK_FOR_POTENTIAL_DUPLICATE_PACTICIPANT_NAMES`<br/>
|
362
507
|
**Default:** `true`<br/>
|
363
508
|
**Allowed values:** `true`, `false`<br/>
|
364
509
|
|
@@ -369,6 +514,9 @@ also created for the pacticipant version.
|
|
369
514
|
|
370
515
|
This is to assist in the migration from using tags to track deployments to using the deployed and released versions feature.
|
371
516
|
|
517
|
+
**YAML configuration key name:** `create_deployed_versions_for_tags`<br/>
|
518
|
+
**Environment variable name:** `PACT_BROKER_CREATE_DEPLOYED_VERSIONS_FOR_TAGS`<br/>
|
519
|
+
**Supported versions:** From v2.81.0<br/>
|
372
520
|
**Default:** `true`<br/>
|
373
521
|
**Allowed values:** `true`, `false`<br/>
|
374
522
|
**More information:** https://docs.pact.io/pact_broker/recording_deployments_and_releases/<br/>
|
@@ -380,9 +528,48 @@ will be used to populate the `branch` property of the version.
|
|
380
528
|
|
381
529
|
This is to assist in the migration from using tags to track branches to using the branches feature.
|
382
530
|
|
531
|
+
**YAML configuration key name:** `use_first_tag_as_branch`<br/>
|
532
|
+
**Environment variable name:** `PACT_BROKER_USE_FIRST_TAG_AS_BRANCH`<br/>
|
533
|
+
**Supported versions:** From v2.82.0<br/>
|
534
|
+
**Default:** `true`<br/>
|
535
|
+
**Allowed values:** `true`, `false`<br/>
|
536
|
+
|
537
|
+
### auto_detect_main_branch
|
538
|
+
|
539
|
+
When `true` and a pacticipant version is created with a tag or a branch that matches one of the names in `main_branch_candidates`,
|
540
|
+
the `mainBranch` property is set for that pacticipant if it is not already set.
|
541
|
+
|
542
|
+
This is to assist in the migration from using tags to track branches to using the branches feature.
|
543
|
+
|
544
|
+
**YAML configuration key name:** `auto_detect_main_branch`<br/>
|
545
|
+
**Environment variable name:** `PACT_BROKER_AUTO_DETECT_MAIN_BRANCH`<br/>
|
546
|
+
**Supported versions:** From v2.82.0<br/>
|
383
547
|
**Default:** `true`<br/>
|
384
548
|
**Allowed values:** `true`, `false`<br/>
|
385
549
|
|
550
|
+
### main_branch_candidates
|
551
|
+
|
552
|
+
An array of potential main branch names used when automatically detecting the main branch for a pacticipant.
|
553
|
+
|
554
|
+
**YAML configuration key name:** `main_branch_candidates`<br/>
|
555
|
+
**Environment variable name:** `PACT_BROKER_MAIN_BRANCH_CANDIDATES`<br/>
|
556
|
+
**Supported versions:** From v2.82.0<br/>
|
557
|
+
**Format:** A space delimited list.<br/>
|
558
|
+
**Default:** `develop main master`<br/>
|
559
|
+
|
560
|
+
### allow_dangerous_contract_modification
|
561
|
+
|
562
|
+
Whether or not to allow the pact content for an existing consumer version to be modified. It is strongly recommended that this is set to false,
|
563
|
+
as allowing modification makes the results of can-i-deploy unreliable. When this is set to false as recommended, each commit must publish pacts
|
564
|
+
with a unique version number.
|
565
|
+
|
566
|
+
**YAML configuration key name:** `allow_dangerous_contract_modification`<br/>
|
567
|
+
**Environment variable name:** `PACT_BROKER_ALLOW_DANGEROUS_CONTRACT_MODIFICATION`<br/>
|
568
|
+
**Supported versions:** From v2.82.0<br/>
|
569
|
+
**Default:** For new installations of v2.82.0 and later, this defaults to `false`.<br/>
|
570
|
+
**Allowed values:** `true`, `false`<br/>
|
571
|
+
**More information:** https://docs.pact.io/versioning<br/>
|
572
|
+
|
386
573
|
<br/>
|
387
574
|
|
388
575
|
## Miscellaneous
|
@@ -394,5 +581,7 @@ This is to assist in the migration from using tags to track branches to using th
|
|
394
581
|
|
395
582
|
A list of features to enable in the Pact Broker for beta testing before public release.
|
396
583
|
|
584
|
+
**YAML configuration key name:** `features`<br/>
|
585
|
+
**Environment variable name:** `PACT_BROKER_FEATURES`<br/>
|
397
586
|
**Format:** A space separated list.<br/>
|
398
587
|
|