pact_broker 2.95.1 → 2.98.0
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 +4 -4
- data/CHANGELOG.md +31 -0
- data/Gemfile +1 -0
- data/docs/CONFIGURATION.md +120 -66
- data/lib/db.rb +1 -7
- data/lib/pact_broker/api/middleware/http_debug_logs.rb +36 -0
- data/lib/pact_broker/app.rb +3 -7
- data/lib/pact_broker/config/basic_auth_configuration.rb +7 -0
- data/lib/pact_broker/config/runtime_configuration.rb +22 -4
- data/lib/pact_broker/config/runtime_configuration_coercion_methods.rb +11 -0
- data/lib/pact_broker/config/runtime_configuration_database_methods.rb +6 -1
- data/lib/pact_broker/config/runtime_configuration_logging_methods.rb +13 -2
- data/lib/pact_broker/configuration.rb +2 -12
- data/lib/pact_broker/db/models.rb +2 -2
- data/lib/pact_broker/index/service.rb +2 -3
- data/lib/pact_broker/integrations/integration.rb +21 -6
- data/lib/pact_broker/integrations/service.rb +1 -1
- data/lib/pact_broker/matrix/repository.rb +2 -3
- data/lib/pact_broker/matrix/service.rb +0 -1
- data/lib/pact_broker/metrics/service.rb +2 -2
- data/lib/pact_broker/pacts/lazy_loaders.rb +26 -0
- data/lib/pact_broker/pacts/pact_publication.rb +13 -34
- data/lib/pact_broker/pacts/pact_version.rb +24 -28
- data/lib/pact_broker/pacts/pact_version_association_loaders.rb +36 -0
- data/lib/pact_broker/pacts/pacts_for_verification_repository.rb +9 -13
- data/lib/pact_broker/pacts/repository.rb +29 -25
- data/lib/pact_broker/repositories/helpers.rb +4 -0
- data/lib/pact_broker/test/http_test_data_builder.rb +8 -1
- data/lib/pact_broker/test/test_data_builder.rb +2 -1
- data/lib/pact_broker/ui/controllers/matrix.rb +14 -11
- data/lib/pact_broker/version.rb +1 -1
- data/pact_broker.gemspec +1 -1
- metadata +9 -16
- data/lib/pact_broker/matrix/aggregated_row.rb +0 -79
- data/lib/pact_broker/matrix/head_row.rb +0 -80
- data/lib/pact_broker/matrix/row.rb +0 -287
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d9aac85ace2c0ba5eaacc6fe462dbe4fc3d7623414f13a9bf351bc70d7a8b37f
|
4
|
+
data.tar.gz: 8bae3685f8b675c447aa986c0629875dad4e5e5e614411dea6ca75d77ed0918d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d2249bef385597430fa0f9c296a4b83e489a71dc027b681f60c57e82efe6805403ae9054d996afeb2a65c20fa7f363e868dd754b4a589249c7a639e86b616c9d
|
7
|
+
data.tar.gz: 60605b088a39d895374fc10028525b012b7d3a33579ade4f9f3c9119b014fbbf7857a18bb2f09147c65059d35f37a0858fcd126a408ba010dbd1c82ccc7e7788
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,34 @@
|
|
1
|
+
<a name="v2.98.0"></a>
|
2
|
+
### v2.98.0 (2022-03-29)
|
3
|
+
|
4
|
+
#### Features
|
5
|
+
|
6
|
+
* support debug logging of entire request and response ([42eb4a17](/../../commit/42eb4a17))
|
7
|
+
|
8
|
+
<a name="v2.97.0"></a>
|
9
|
+
### v2.97.0 (2022-03-29)
|
10
|
+
|
11
|
+
#### Features
|
12
|
+
|
13
|
+
* **webhook certificates**
|
14
|
+
* support setting webhook certificates using environment variables ([82c7a7e5](/../../commit/82c7a7e5))
|
15
|
+
|
16
|
+
#### Bug Fixes
|
17
|
+
|
18
|
+
* do not set postgres connection driver options if database_statement_timeout is nil ([adec4b00](/../../commit/adec4b00))
|
19
|
+
|
20
|
+
<a name="v2.96.0"></a>
|
21
|
+
### v2.96.0 (2022-03-21)
|
22
|
+
|
23
|
+
#### Features
|
24
|
+
|
25
|
+
* print final value of configuration attribute rather than source value ([9c0fd3c4](/../../commit/9c0fd3c4))
|
26
|
+
|
27
|
+
#### Bug Fixes
|
28
|
+
|
29
|
+
* ensure database and basic auth credentials are not coerced to arrays if they contain commas ([5bce7ce4](/../../commit/5bce7ce4))
|
30
|
+
* allow lazy loading when finding individual pacts ([04e03cb2](/../../commit/04e03cb2))
|
31
|
+
|
1
32
|
<a name="v2.95.1"></a>
|
2
33
|
### v2.95.1 (2022-03-18)
|
3
34
|
|
data/Gemfile
CHANGED
data/docs/CONFIGURATION.md
CHANGED
@@ -19,8 +19,8 @@ variable `PACT_BROKER_CONF` to the full path to the configuration file.
|
|
19
19
|
|
20
20
|
The application log level
|
21
21
|
|
22
|
-
**YAML configuration key name:** `log_level`<br/>
|
23
22
|
**Environment variable name:** `PACT_BROKER_LOG_LEVEL`<br/>
|
23
|
+
**YAML configuration key name:** `log_level`<br/>
|
24
24
|
**Default:** `info`<br/>
|
25
25
|
**Allowed values:** `debug`, `info`, `warn`, `error`, `fatal`<br/>
|
26
26
|
|
@@ -28,8 +28,8 @@ The application log level
|
|
28
28
|
|
29
29
|
The application log format. Can be any value supported by Semantic Logger.
|
30
30
|
|
31
|
-
**YAML configuration key name:** `log_format`<br/>
|
32
31
|
**Environment variable name:** `PACT_BROKER_LOG_FORMAT`<br/>
|
32
|
+
**YAML configuration key name:** `log_format`<br/>
|
33
33
|
**Default:** `default`<br/>
|
34
34
|
**Allowed values:** `default`, `json`, `color`<br/>
|
35
35
|
**More information:** https://github.com/rocketjob/semantic_logger/tree/master/lib/semantic_logger/formatters<br/>
|
@@ -38,8 +38,8 @@ The application log format. Can be any value supported by Semantic Logger.
|
|
38
38
|
|
39
39
|
The log file directory
|
40
40
|
|
41
|
-
**YAML configuration key name:** `log_dir`<br/>
|
42
41
|
**Environment variable name:** `PACT_BROKER_LOG_DIR`<br/>
|
42
|
+
**YAML configuration key name:** `log_dir`<br/>
|
43
43
|
**Default:** `./logs`<br/>
|
44
44
|
|
45
45
|
### log_stream
|
@@ -48,17 +48,28 @@ The stream to which the logs will be sent.
|
|
48
48
|
|
49
49
|
While the default is `file` for the Ruby application, it is set to `stdout` on the supported Docker images.
|
50
50
|
|
51
|
-
**YAML configuration key name:** `log_stream`<br/>
|
52
51
|
**Environment variable name:** `PACT_BROKER_LOG_STREAM`<br/>
|
52
|
+
**YAML configuration key name:** `log_stream`<br/>
|
53
53
|
**Default:** `file`<br/>
|
54
54
|
**Allowed values:** `stdout`, `file`<br/>
|
55
55
|
|
56
|
+
### http_debug_logging_enabled
|
57
|
+
|
58
|
+
Enable this setting to print the entire request and response to the logs at debug level. Used for troubleshooting issues.
|
59
|
+
Do not leave this on permanently, as it will have performance and security issues.
|
60
|
+
|
61
|
+
**Supported versions:** From v2.98.0<br/>
|
62
|
+
**Environment variable name:** `PACT_BROKER_HTTP_DEBUG_LOGGING_ENABLED`<br/>
|
63
|
+
**YAML configuration key name:** `http_debug_logging_enabled`<br/>
|
64
|
+
**Default:** `false`<br/>
|
65
|
+
**Allowed values:** `true`, `false`<br/>
|
66
|
+
|
56
67
|
### hide_pactflow_messages
|
57
68
|
|
58
69
|
Set to `true` to hide the messages in the logs about Pactflow
|
59
70
|
|
60
|
-
**YAML configuration key name:** `hide_pactflow_messages`<br/>
|
61
71
|
**Environment variable name:** `PACT_BROKER_HIDE_PACTFLOW_MESSAGES`<br/>
|
72
|
+
**YAML configuration key name:** `hide_pactflow_messages`<br/>
|
62
73
|
**Default:** `true`<br/>
|
63
74
|
**Allowed values:** `true`, `false`<br/>
|
64
75
|
**More information:** https://pactflow.io<br/>
|
@@ -77,8 +88,8 @@ The database adapter. For production use, Postgres must be used.
|
|
77
88
|
For investigations/spikes on a development machine, you can use SQlite. It is not supported as a production database, as it does not support
|
78
89
|
concurrent requests.
|
79
90
|
|
80
|
-
**YAML configuration key name:** `database_adapter`<br/>
|
81
91
|
**Environment variable name:** `PACT_BROKER_DATABASE_ADAPTER`<br/>
|
92
|
+
**YAML configuration key name:** `database_adapter`<br/>
|
82
93
|
**Default:** `postgres`<br/>
|
83
94
|
**Allowed values:** `postgres` (for production use), `sqlite` (for spikes only)<br/>
|
84
95
|
|
@@ -86,44 +97,44 @@ concurrent requests.
|
|
86
97
|
|
87
98
|
The database username
|
88
99
|
|
89
|
-
**YAML configuration key name:** `database_username`<br/>
|
90
100
|
**Environment variable name:** `PACT_BROKER_DATABASE_USERNAME`<br/>
|
101
|
+
**YAML configuration key name:** `database_username`<br/>
|
91
102
|
|
92
103
|
### database_password
|
93
104
|
|
94
105
|
The database password
|
95
106
|
|
96
|
-
**YAML configuration key name:** `database_password`<br/>
|
97
107
|
**Environment variable name:** `PACT_BROKER_DATABASE_PASSWORD`<br/>
|
108
|
+
**YAML configuration key name:** `database_password`<br/>
|
98
109
|
|
99
110
|
### database_name
|
100
111
|
|
101
112
|
The database name. If using the `sqlite` adapter, this will be the path to the database file.
|
102
113
|
|
103
|
-
**YAML configuration key name:** `database_name`<br/>
|
104
114
|
**Environment variable name:** `PACT_BROKER_DATABASE_NAME`<br/>
|
115
|
+
**YAML configuration key name:** `database_name`<br/>
|
105
116
|
**Examples:** `pact_broker`, `/tmp/pact_broker.sqlite3`, `./tmp/pact_broker.sqlite3`<br/>
|
106
117
|
|
107
118
|
### database_host
|
108
119
|
|
109
120
|
The database host
|
110
121
|
|
111
|
-
**YAML configuration key name:** `database_host`<br/>
|
112
122
|
**Environment variable name:** `PACT_BROKER_DATABASE_HOST`<br/>
|
123
|
+
**YAML configuration key name:** `database_host`<br/>
|
113
124
|
|
114
125
|
### database_port
|
115
126
|
|
116
127
|
The database port. If ommited, the default port for the adapter will be used.
|
117
128
|
|
118
|
-
**YAML configuration key name:** `database_port`<br/>
|
119
129
|
**Environment variable name:** `PACT_BROKER_DATABASE_PORT`<br/>
|
130
|
+
**YAML configuration key name:** `database_port`<br/>
|
120
131
|
|
121
132
|
### database_url
|
122
133
|
|
123
134
|
The full database URL may be specified instead of the separate adapter, username, password, name, host and port.
|
124
135
|
|
125
|
-
**YAML configuration key name:** `database_url`<br/>
|
126
136
|
**Environment variable name:** `PACT_BROKER_DATABASE_URL`<br/>
|
137
|
+
**YAML configuration key name:** `database_url`<br/>
|
127
138
|
**Format:** `{database_adapter}://{database_username}:{database_password}@{database_host}:{database_port}/{database_name}`<br/>
|
128
139
|
**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/>
|
129
140
|
|
@@ -131,8 +142,8 @@ The full database URL may be specified instead of the separate adapter, username
|
|
131
142
|
|
132
143
|
The Postgresql ssl mode.
|
133
144
|
|
134
|
-
**YAML configuration key name:** `database_sslmode`<br/>
|
135
145
|
**Environment variable name:** `PACT_BROKER_DATABASE_SSLMODE`<br/>
|
146
|
+
**YAML configuration key name:** `database_sslmode`<br/>
|
136
147
|
**Default:** `prefer`<br/>
|
137
148
|
**Allowed values:** `disable`, `allow`, `prefer`, `require`, `verify-ca`, `verify-full`<br/>
|
138
149
|
**More information:** https://ankane.org/postgres-sslmode-explained<br/>
|
@@ -143,8 +154,8 @@ The log level that will be used when the SQL query statements are logged.
|
|
143
154
|
|
144
155
|
To disable noisy SQL query logging when the application `log_level` is set to `debug` for other reasons, use the value `none`.
|
145
156
|
|
146
|
-
**YAML configuration key name:** `sql_log_level`<br/>
|
147
157
|
**Environment variable name:** `PACT_BROKER_SQL_LOG_LEVEL`<br/>
|
158
|
+
**YAML configuration key name:** `sql_log_level`<br/>
|
148
159
|
**Default:** `debug`<br/>
|
149
160
|
**Allowed values:** `none`, `debug`, `info`, `warn`, `error`, `fatal`<br/>
|
150
161
|
|
@@ -152,18 +163,29 @@ To disable noisy SQL query logging when the application `log_level` is set to `d
|
|
152
163
|
|
153
164
|
The number of seconds after which to log an SQL query at warn level. Use this for detecting slow queries.
|
154
165
|
|
155
|
-
**YAML configuration key name:** `sql_log_warn_duration`<br/>
|
156
166
|
**Environment variable name:** `PACT_BROKER_SQL_LOG_WARN_DURATION`<br/>
|
167
|
+
**YAML configuration key name:** `sql_log_warn_duration`<br/>
|
157
168
|
**Default:** `5`<br/>
|
158
169
|
**Allowed values:** A positive integer or float, as a string.<br/>
|
159
170
|
**More information:** https://sequel.jeremyevans.net/rdoc/files/doc/opening_databases_rdoc.html#label-General+connection+options<br/>
|
160
171
|
|
172
|
+
### sql_enable_caller_logging
|
173
|
+
|
174
|
+
Whether or not to enable caller_logging extension for database connection.
|
175
|
+
When enabled it logs source path that caused SQL query.
|
176
|
+
|
177
|
+
**Environment variable name:** `PACT_BROKER_SQL_ENABLE_CALLER_LOGGING`<br/>
|
178
|
+
**YAML configuration key name:** `sql_enable_caller_logging`<br/>
|
179
|
+
**Default:** `false`<br/>
|
180
|
+
**Allowed values:** `true`, `false`<br/>
|
181
|
+
**More information:** https://sequel.jeremyevans.net/rdoc-plugins/files/lib/sequel/extensions/caller_logging_rb.html<br/>
|
182
|
+
|
161
183
|
### database_max_connections
|
162
184
|
|
163
185
|
The maximum size of the connection pool (4 connections by default on most databases)
|
164
186
|
|
165
|
-
**YAML configuration key name:** `database_max_connections`<br/>
|
166
187
|
**Environment variable name:** `PACT_BROKER_DATABASE_MAX_CONNECTIONS`<br/>
|
188
|
+
**YAML configuration key name:** `database_max_connections`<br/>
|
167
189
|
**Default:** `4`<br/>
|
168
190
|
**Allowed values:** A positive integer value.<br/>
|
169
191
|
**More information:** https://sequel.jeremyevans.net/rdoc/files/doc/opening_databases_rdoc.html#label-General+connection+options<br/>
|
@@ -172,8 +194,8 @@ The maximum size of the connection pool (4 connections by default on most databa
|
|
172
194
|
|
173
195
|
The number of seconds to wait if a connection cannot be acquired before raising an error
|
174
196
|
|
175
|
-
**YAML configuration key name:** `database_pool_timeout`<br/>
|
176
197
|
**Environment variable name:** `PACT_BROKER_DATABASE_POOL_TIMEOUT`<br/>
|
198
|
+
**YAML configuration key name:** `database_pool_timeout`<br/>
|
177
199
|
**Default:** `5`<br/>
|
178
200
|
**Allowed values:** A positive integer.<br/>
|
179
201
|
**More information:** https://sequel.jeremyevans.net/rdoc/files/doc/opening_databases_rdoc.html#label-General+connection+options<br/>
|
@@ -185,8 +207,8 @@ the Broker application process may be ready before the database is available for
|
|
185
207
|
container to exit with an error. Setting the max retries to a non-zero number will allow it to retry the connection the
|
186
208
|
configured number of times, waiting 3 seconds between attempts.
|
187
209
|
|
188
|
-
**YAML configuration key name:** `database_connect_max_retries`<br/>
|
189
210
|
**Environment variable name:** `PACT_BROKER_DATABASE_CONNECT_MAX_RETRIES`<br/>
|
211
|
+
**YAML configuration key name:** `database_connect_max_retries`<br/>
|
190
212
|
**Default:** `0`<br/>
|
191
213
|
**Allowed values:** A positive integer value.<br/>
|
192
214
|
|
@@ -194,8 +216,8 @@ configured number of times, waiting 3 seconds between attempts.
|
|
194
216
|
|
195
217
|
Whether or not to run the database schema migrations on start up. It is recommended to set this to `true`.
|
196
218
|
|
197
|
-
**YAML configuration key name:** `auto_migrate_db`<br/>
|
198
219
|
**Environment variable name:** `PACT_BROKER_AUTO_MIGRATE_DB`<br/>
|
220
|
+
**YAML configuration key name:** `auto_migrate_db`<br/>
|
199
221
|
**Default:** `true`<br/>
|
200
222
|
**Allowed values:** `true`, `false`<br/>
|
201
223
|
|
@@ -203,8 +225,8 @@ Whether or not to run the database schema migrations on start up. It is recommen
|
|
203
225
|
|
204
226
|
Whether or not to run the database data migrations on start up. It is recommended to set this to `true`.
|
205
227
|
|
206
|
-
**YAML configuration key name:** `auto_migrate_db_data`<br/>
|
207
228
|
**Environment variable name:** `PACT_BROKER_AUTO_MIGRATE_DB_DATA`<br/>
|
229
|
+
**YAML configuration key name:** `auto_migrate_db_data`<br/>
|
208
230
|
**Default:** `true`<br/>
|
209
231
|
**Allowed values:** `true`, `false`<br/>
|
210
232
|
|
@@ -214,8 +236,8 @@ If `true`, will not raise an error if a database migration is recorded in the da
|
|
214
236
|
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
237
|
however, data integrity issues may occur.
|
216
238
|
|
217
|
-
**YAML configuration key name:** `allow_missing_migration_files`<br/>
|
218
239
|
**Environment variable name:** `PACT_BROKER_ALLOW_MISSING_MIGRATION_FILES`<br/>
|
240
|
+
**YAML configuration key name:** `allow_missing_migration_files`<br/>
|
219
241
|
**Default:** `true`<br/>
|
220
242
|
**More information:** https://sequel.jeremyevans.net/rdoc/classes/Sequel/Migrator.html<br/>
|
221
243
|
|
@@ -223,8 +245,8 @@ however, data integrity issues may occur.
|
|
223
245
|
|
224
246
|
The number of seconds after which an SQL query will be aborted. Only supported for Postgresql connections.
|
225
247
|
|
226
|
-
**YAML configuration key name:** `database_statement_timeout`<br/>
|
227
248
|
**Environment variable name:** `PACT_BROKER_DATABASE_STATEMENT_TIMEOUT`<br/>
|
249
|
+
**YAML configuration key name:** `database_statement_timeout`<br/>
|
228
250
|
**Default:** `15`<br/>
|
229
251
|
**Allowed values:** A positive integer or float.<br/>
|
230
252
|
**More information:** https://www.postgresql.org/docs/9.3/runtime-config-client.html<br/>
|
@@ -235,8 +257,8 @@ The number of seconds after which the SQL queries used for the metrics endpoint
|
|
235
257
|
This is configurable separately from the standard `database_statement_timeout` as it may need to be significantly
|
236
258
|
longer than the desired value for standard queries.
|
237
259
|
|
238
|
-
**YAML configuration key name:** `metrics_sql_statement_timeout`<br/>
|
239
260
|
**Environment variable name:** `PACT_BROKER_METRICS_SQL_STATEMENT_TIMEOUT`<br/>
|
261
|
+
**YAML configuration key name:** `metrics_sql_statement_timeout`<br/>
|
240
262
|
**Default:** `30`<br/>
|
241
263
|
**Allowed values:** A positive integer.<br/>
|
242
264
|
|
@@ -248,8 +270,8 @@ The number of seconds after which to check the health of a connection from a con
|
|
248
270
|
when databases are restarted and connections are killed. This has a performance
|
249
271
|
penalty, so consider increasing this timeout if building a frequently accessed service.
|
250
272
|
|
251
|
-
**YAML configuration key name:** `database_connection_validation_timeout`<br/>
|
252
273
|
**Environment variable name:** `PACT_BROKER_DATABASE_CONNECTION_VALIDATION_TIMEOUT`<br/>
|
274
|
+
**YAML configuration key name:** `database_connection_validation_timeout`<br/>
|
253
275
|
**Default:** -1 for v2.85.1 and earlier, 3600 for later versions.<br/>
|
254
276
|
**Allowed values:** -1 or any positive integer.<br/>
|
255
277
|
**More information:** https://sequel.jeremyevans.net/rdoc-plugins/files/lib/sequel/extensions/connection_validator_rb.html<br/>
|
@@ -268,8 +290,8 @@ should be used for CI/CD.
|
|
268
290
|
|
269
291
|
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.
|
270
292
|
|
271
|
-
**YAML configuration key name:** `basic_auth_enabled`<br/>
|
272
293
|
**Environment variable name:** `PACT_BROKER_BASIC_AUTH_ENABLED`<br/>
|
294
|
+
**YAML configuration key name:** `basic_auth_enabled`<br/>
|
273
295
|
**Default:** `false`<br/>
|
274
296
|
**Allowed values:** `true`, `false`<br/>
|
275
297
|
|
@@ -277,36 +299,36 @@ Whether to enable basic authorization. This is automatically set to true for the
|
|
277
299
|
|
278
300
|
The username for the read/write basic auth user.
|
279
301
|
|
280
|
-
**YAML configuration key name:** `basic_auth_username`<br/>
|
281
302
|
**Environment variable name:** `PACT_BROKER_BASIC_AUTH_USERNAME`<br/>
|
303
|
+
**YAML configuration key name:** `basic_auth_username`<br/>
|
282
304
|
|
283
305
|
### basic_auth_password
|
284
306
|
|
285
307
|
The password for the read/write basic auth user.
|
286
308
|
|
287
|
-
**YAML configuration key name:** `basic_auth_password`<br/>
|
288
309
|
**Environment variable name:** `PACT_BROKER_BASIC_AUTH_PASSWORD`<br/>
|
310
|
+
**YAML configuration key name:** `basic_auth_password`<br/>
|
289
311
|
|
290
312
|
### basic_auth_read_only_username
|
291
313
|
|
292
314
|
The username for the read only basic auth user.
|
293
315
|
|
294
|
-
**YAML configuration key name:** `basic_auth_read_only_username`<br/>
|
295
316
|
**Environment variable name:** `PACT_BROKER_BASIC_AUTH_READ_ONLY_USERNAME`<br/>
|
317
|
+
**YAML configuration key name:** `basic_auth_read_only_username`<br/>
|
296
318
|
|
297
319
|
### basic_auth_read_only_password
|
298
320
|
|
299
321
|
The password for the read only basic auth user.
|
300
322
|
|
301
|
-
**YAML configuration key name:** `basic_auth_read_only_password`<br/>
|
302
323
|
**Environment variable name:** `PACT_BROKER_BASIC_AUTH_READ_ONLY_PASSWORD`<br/>
|
324
|
+
**YAML configuration key name:** `basic_auth_read_only_password`<br/>
|
303
325
|
|
304
326
|
### allow_public_read
|
305
327
|
|
306
328
|
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`.
|
307
329
|
|
308
|
-
**YAML configuration key name:** `allow_public_read`<br/>
|
309
330
|
**Environment variable name:** `PACT_BROKER_ALLOW_PUBLIC_READ`<br/>
|
331
|
+
**YAML configuration key name:** `allow_public_read`<br/>
|
310
332
|
**Default:** `false`<br/>
|
311
333
|
**Allowed values:** `true`, `false`<br/>
|
312
334
|
|
@@ -314,8 +336,8 @@ If you want to allow public read access, but still require credentials for writi
|
|
314
336
|
|
315
337
|
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`.
|
316
338
|
|
317
|
-
**YAML configuration key name:** `public_heartbeat`<br/>
|
318
339
|
**Environment variable name:** `PACT_BROKER_PUBLIC_HEARTBEAT`<br/>
|
340
|
+
**YAML configuration key name:** `public_heartbeat`<br/>
|
319
341
|
**Default:** `false`<br/>
|
320
342
|
**Allowed values:** `true`, `false`<br/>
|
321
343
|
|
@@ -323,8 +345,8 @@ If you have enabled basic auth, but require unauthenticated access to the heartb
|
|
323
345
|
|
324
346
|
Set this to true to allow status badges to be embedded in README files without requiring a hardcoded password.
|
325
347
|
|
326
|
-
**YAML configuration key name:** `enable_public_badge_access`<br/>
|
327
348
|
**Environment variable name:** `PACT_BROKER_ENABLE_PUBLIC_BADGE_ACCESS`<br/>
|
349
|
+
**YAML configuration key name:** `enable_public_badge_access`<br/>
|
328
350
|
**Default:** `false`<br/>
|
329
351
|
**Allowed values:** `true`, `false`<br/>
|
330
352
|
|
@@ -340,8 +362,8 @@ Set this to true to allow status badges to be embedded in README files without r
|
|
340
362
|
The schedule of seconds to wait between webhook execution attempts.
|
341
363
|
The default schedule is 10 sec, 1 min, 2 min, 5 min, 10 min, 20 min (38 minutes in total).
|
342
364
|
|
343
|
-
**YAML configuration key name:** `webhook_retry_schedule`<br/>
|
344
365
|
**Environment variable name:** `PACT_BROKER_WEBHOOK_RETRY_SCHEDULE`<br/>
|
366
|
+
**YAML configuration key name:** `webhook_retry_schedule`<br/>
|
345
367
|
**Format:** A space separated list of integers.<br/>
|
346
368
|
**Default:** `10 60 120 300 600 1200`<br/>
|
347
369
|
|
@@ -350,8 +372,8 @@ The default schedule is 10 sec, 1 min, 2 min, 5 min, 10 min, 20 min (38 minutes
|
|
350
372
|
The allowed HTTP methods for webhooks.
|
351
373
|
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.
|
352
374
|
|
353
|
-
**YAML configuration key name:** `webhook_http_method_whitelist`<br/>
|
354
375
|
**Environment variable name:** `PACT_BROKER_WEBHOOK_HTTP_METHOD_WHITELIST`<br/>
|
376
|
+
**YAML configuration key name:** `webhook_http_method_whitelist`<br/>
|
355
377
|
**Format:** A space separated list.<br/>
|
356
378
|
**Default:** `POST`<br/>
|
357
379
|
**Allowed values:** `POST`, `GET` (not recommended), `PUT` (not recommended), `PATCH` (not recommended), `DELETE` (not recommended)<br/>
|
@@ -364,8 +386,8 @@ considered a success, otherwise the webhook will be re-triggered based on the `w
|
|
364
386
|
In most cases, configuring this is not necessary, but there are some CI systems that return a non 200 status for a success,
|
365
387
|
which is why this feature exists.
|
366
388
|
|
367
|
-
**YAML configuration key name:** `webhook_http_code_success`<br/>
|
368
389
|
**Environment variable name:** `PACT_BROKER_WEBHOOK_HTTP_CODE_SUCCESS`<br/>
|
390
|
+
**YAML configuration key name:** `webhook_http_code_success`<br/>
|
369
391
|
**Format:** A space separated list of integers.<br/>
|
370
392
|
**Default:** `200 201 202 203 204 205 206`<br/>
|
371
393
|
**Allowed values:** `Any valid HTTP status code`<br/>
|
@@ -374,8 +396,8 @@ which is why this feature exists.
|
|
374
396
|
|
375
397
|
The allowed URL schemes for webhooks.
|
376
398
|
|
377
|
-
**YAML configuration key name:** `webhook_scheme_whitelist`<br/>
|
378
399
|
**Environment variable name:** `PACT_BROKER_WEBHOOK_SCHEME_WHITELIST`<br/>
|
400
|
+
**YAML configuration key name:** `webhook_scheme_whitelist`<br/>
|
379
401
|
**Format:** A space delimited list.<br/>
|
380
402
|
**Default:** `https`<br/>
|
381
403
|
**Allowed values:** `https`, `http`<br/>
|
@@ -387,37 +409,69 @@ Regular expressions should start and end with a `/` to differentiate them from S
|
|
387
409
|
Note that backslashes need to be escaped with a second backslash when setting via an environment variable.
|
388
410
|
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.
|
389
411
|
|
390
|
-
**YAML configuration key name:** `webhook_host_whitelist`<br/>
|
391
412
|
**Environment variable name:** `PACT_BROKER_WEBHOOK_HOST_WHITELIST`<br/>
|
413
|
+
**Environment variable format:** A space separated list.<br/>
|
414
|
+
**YAML configuration key name:** `webhook_host_whitelist`<br/>
|
415
|
+
**YAML format:** A YAML list.<br/>
|
392
416
|
**Examples:** `github.com`, `10.2.3.41/24`, `/.*\\.foo\\.com$/`<br/>
|
393
417
|
**More information:** https://docs.pact.io/pact_broker/configuration/#webhook-whitelists<br/>
|
394
418
|
|
395
419
|
### webhook_certificates
|
396
420
|
|
397
|
-
A list of SSL certificate configuration objects with the
|
421
|
+
A list of SSL certificate configuration objects with the key `description`, and either `content` or `path`. These
|
398
422
|
certificates are used when a webhook needs to connect to a server that uses a self signed certificate.
|
399
423
|
|
400
424
|
Each certificate configuration item accepts a chain of certificates in PEM format - there may be multiple 'BEGIN CERTIFICATE' and 'END CERTIFICATE' in the content of each item.
|
401
425
|
|
402
|
-
When setting the content, use the syntax "content: |-" followed by a new line, and then the contents of the certificate
|
403
|
-
chain in PEM format, indented by 2 more characters.
|
404
|
-
|
405
|
-
When setting the path, the full path to the certificate file in PEM format must be specified.
|
406
|
-
|
407
426
|
The certificate configuration is not validated on startup. If any of the configured certificates cannot be loaded during the execution of a webhook, an error
|
408
427
|
will be logged, and they will be ignored. You can check if the configuration is working by testing the execution of
|
409
428
|
a webhook that connects to the server with the self signed certificate by following these instructions https://docs.pact.io/pact_broker/webhooks/debugging_webhooks#testing-webhook-execution
|
410
429
|
|
411
|
-
|
430
|
+
When setting the content in the YAML file, use the syntax "content: |-" followed by a new line, and then the contents of the certificate
|
431
|
+
chain in PEM format, indented by 2 more characters.
|
432
|
+
|
433
|
+
When setting the path, the full path to the certificate file in PEM format must be specified. When using Docker, you must ensure the
|
434
|
+
certificate file is [mounted into the container](https://docs.docker.com/storage/volumes/).
|
435
|
+
|
436
|
+
YAML Example:
|
437
|
+
|
438
|
+
```yaml
|
439
|
+
webhook_certificates:
|
440
|
+
- description: "An example self signed certificate with content"
|
441
|
+
content: |-
|
442
|
+
-----BEGIN CERTIFICATE-----
|
443
|
+
MIIDZDCCAkygAwIBAgIBATANBgkqhkiG9w0BAQsFADBCMRMwEQYKCZImiZPyLGQB
|
444
|
+
<REST OF CERTIFICATE>
|
445
|
+
jHT1Ty2CglM=
|
446
|
+
-----END CERTIFICATE-----
|
447
|
+
- description: "An example self signed certificate with a path"
|
448
|
+
path: "/full/path/to/the/cert.pem"
|
449
|
+
|
450
|
+
```
|
451
|
+
|
452
|
+
Environment variable example:
|
453
|
+
|
454
|
+
```shell
|
455
|
+
PACT_BROKER_WEBHOOK_CERTIFICATES__0__LABEL="An example self signed certificate with content"
|
456
|
+
PACT_BROKER_WEBHOOK_CERTIFICATES__0__CONTENT="-----BEGIN CERTIFICATE-----
|
457
|
+
MIIDZDCCAkygAwIBAgIBATANBgkqhkiG9w0BAQsFADBCMRMwEQYKCZImiZPyLGQB
|
458
|
+
<REST OF CERTIFICATE>
|
459
|
+
jHT1Ty2CglM=
|
460
|
+
-----END CERTIFICATE-----"
|
461
|
+
PACT_BROKER_WEBHOOK_CERTIFICATES__1__LABEL="An example self signed certificate with a path"
|
462
|
+
PACT_BROKER_WEBHOOK_CERTIFICATES__1__PATH="/full/path/to/the/cert.pem"
|
463
|
+
```
|
464
|
+
|
465
|
+
**Supported versions:** From v2.90.0 for YAML and 2.97.0 for environment variables.<br/>
|
412
466
|
**Environment variable name:** `PACT_BROKER_WEBHOOK_CERTIFICATES`<br/>
|
413
|
-
**
|
467
|
+
**YAML configuration key name:** `webhook_certificates`<br/>
|
414
468
|
|
415
469
|
### disable_ssl_verification
|
416
470
|
|
417
471
|
If set to true, SSL verification will be disabled for the HTTP requests made by the webhooks
|
418
472
|
|
419
|
-
**YAML configuration key name:** `disable_ssl_verification`<br/>
|
420
473
|
**Environment variable name:** `PACT_BROKER_DISABLE_SSL_VERIFICATION`<br/>
|
474
|
+
**YAML configuration key name:** `disable_ssl_verification`<br/>
|
421
475
|
**Default:** `false`<br/>
|
422
476
|
**Allowed values:** `true`, `false`<br/>
|
423
477
|
|
@@ -425,8 +479,8 @@ If set to true, SSL verification will be disabled for the HTTP requests made by
|
|
425
479
|
|
426
480
|
The user agent to set when making HTTP requests for webhooks.
|
427
481
|
|
428
|
-
**YAML configuration key name:** `user_agent`<br/>
|
429
482
|
**Environment variable name:** `PACT_BROKER_USER_AGENT`<br/>
|
483
|
+
**YAML configuration key name:** `user_agent`<br/>
|
430
484
|
**Default:** `Pact Broker v{VERSION}`<br/>
|
431
485
|
|
432
486
|
<br/>
|
@@ -442,8 +496,8 @@ The HTTP port that the Pact Broker application will run on. This will only be ho
|
|
442
496
|
a package that actually reads this property (eg. one of the supported Docker images). If you are running the vanilla Ruby application,
|
443
497
|
the application will run on the port the server has been configured to run on (eg. `bundle exec rackup -p 9393`)
|
444
498
|
|
445
|
-
**YAML configuration key name:** `port`<br/>
|
446
499
|
**Environment variable name:** `PACT_BROKER_PORT`<br/>
|
500
|
+
**YAML configuration key name:** `port`<br/>
|
447
501
|
**Default:** `9292`<br/>
|
448
502
|
|
449
503
|
### base_url
|
@@ -455,8 +509,8 @@ deploying the Pact Broker to production as it prevents cache poisoning security
|
|
455
509
|
It is also required when deploying the Broker behind a reverse proxy, and when the application has been mounted at a non-root context.
|
456
510
|
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.
|
457
511
|
|
458
|
-
**YAML configuration key name:** `base_url`<br/>
|
459
512
|
**Environment variable name:** `PACT_BROKER_BASE_URL`<br/>
|
513
|
+
**YAML configuration key name:** `base_url`<br/>
|
460
514
|
**Examples:** `https://pact-broker.mycompany.com`, `https://my-company.com:9292/pact-broker`<br/>
|
461
515
|
|
462
516
|
### base_urls
|
@@ -464,8 +518,8 @@ Note that this attribute does not change where the application is actually mount
|
|
464
518
|
An alias of base_url. From version 2.79.0, multiple base URLs can be configured for architectures that use
|
465
519
|
gateways or proxies that allow the same Pact Broker instance to be addressed with different base URLs.
|
466
520
|
|
467
|
-
**YAML configuration key name:** `base_urls`<br/>
|
468
521
|
**Environment variable name:** `PACT_BROKER_BASE_URLS`<br/>
|
522
|
+
**YAML configuration key name:** `base_urls`<br/>
|
469
523
|
**Format:** A space separated list.<br/>
|
470
524
|
**Example:** `http://my-internal-pact-broker:9292 https://my-external-pact-broker`<br/>
|
471
525
|
|
@@ -473,8 +527,8 @@ gateways or proxies that allow the same Pact Broker instance to be addressed wit
|
|
473
527
|
|
474
528
|
The URL of the shields.io server used to generate the README badges.
|
475
529
|
|
476
|
-
**YAML configuration key name:** `shields_io_base_url`<br/>
|
477
530
|
**Environment variable name:** `PACT_BROKER_SHIELDS_IO_BASE_URL`<br/>
|
531
|
+
**YAML configuration key name:** `shields_io_base_url`<br/>
|
478
532
|
**Default:** `https://img.shields.io`<br/>
|
479
533
|
**More information:** https://shields.io<br/>
|
480
534
|
|
@@ -485,8 +539,8 @@ to render the badge from the shields.io server directly in the browser. This is
|
|
485
539
|
When set to `proxy`, the Pact Broker will make a request directly to the configured shields.io server, and then send the returned file
|
486
540
|
back to the browser. This mode is not recommended for security and performance reasons.
|
487
541
|
|
488
|
-
**YAML configuration key name:** `badge_provider_mode`<br/>
|
489
542
|
**Environment variable name:** `PACT_BROKER_BADGE_PROVIDER_MODE`<br/>
|
543
|
+
**YAML configuration key name:** `badge_provider_mode`<br/>
|
490
544
|
**Default:** `redirect`<br/>
|
491
545
|
**Allowed values:** `redirect`, `proxy`<br/>
|
492
546
|
|
@@ -496,8 +550,8 @@ Whether or not to enable the diagnostic endpoints at `/diagnostic/status/heartbe
|
|
496
550
|
The heartbeat endpoint is for use by load balancers, and the dependencies endpoint is for checking that the database
|
497
551
|
is available (do not use this for load balancing, as it makes a database connection).
|
498
552
|
|
499
|
-
**YAML configuration key name:** `enable_diagnostic_endpoints`<br/>
|
500
553
|
**Environment variable name:** `PACT_BROKER_ENABLE_DIAGNOSTIC_ENDPOINTS`<br/>
|
554
|
+
**YAML configuration key name:** `enable_diagnostic_endpoints`<br/>
|
501
555
|
**Default:** `true`<br/>
|
502
556
|
**Allowed values:** `true`, `false`<br/>
|
503
557
|
|
@@ -505,8 +559,8 @@ is available (do not use this for load balancing, as it makes a database connect
|
|
505
559
|
|
506
560
|
Whether or not to enable the embedded HAL Browser.
|
507
561
|
|
508
|
-
**YAML configuration key name:** `use_hal_browser`<br/>
|
509
562
|
**Environment variable name:** `PACT_BROKER_USE_HAL_BROWSER`<br/>
|
563
|
+
**YAML configuration key name:** `use_hal_browser`<br/>
|
510
564
|
**Default:** `true`<br/>
|
511
565
|
**Allowed values:** `true`, `false`<br/>
|
512
566
|
**More information:** https://github.com/mikekelly/hal-browser<br/>
|
@@ -532,8 +586,8 @@ or that the pacticipant should be created manually if it was intended to be a ne
|
|
532
586
|
To turn this feature off, set `check_for_potential_duplicate_pacticipant_names` to `false`, and make sure everyone is very careful with their naming!
|
533
587
|
The usefulness of the Broker depends on the integrity of the data, which in turn depends on the correctness of the pacticipant names.
|
534
588
|
|
535
|
-
**YAML configuration key name:** `check_for_potential_duplicate_pacticipant_names`<br/>
|
536
589
|
**Environment variable name:** `PACT_BROKER_CHECK_FOR_POTENTIAL_DUPLICATE_PACTICIPANT_NAMES`<br/>
|
590
|
+
**YAML configuration key name:** `check_for_potential_duplicate_pacticipant_names`<br/>
|
537
591
|
**Default:** `true`<br/>
|
538
592
|
**Allowed values:** `true`, `false`<br/>
|
539
593
|
|
@@ -544,9 +598,9 @@ also created for the pacticipant version.
|
|
544
598
|
|
545
599
|
This is to assist in the migration from using tags to track deployments to using the deployed and released versions feature.
|
546
600
|
|
547
|
-
**YAML configuration key name:** `create_deployed_versions_for_tags`<br/>
|
548
|
-
**Environment variable name:** `PACT_BROKER_CREATE_DEPLOYED_VERSIONS_FOR_TAGS`<br/>
|
549
601
|
**Supported versions:** From v2.81.0<br/>
|
602
|
+
**Environment variable name:** `PACT_BROKER_CREATE_DEPLOYED_VERSIONS_FOR_TAGS`<br/>
|
603
|
+
**YAML configuration key name:** `create_deployed_versions_for_tags`<br/>
|
550
604
|
**Default:** `true`<br/>
|
551
605
|
**Allowed values:** `true`, `false`<br/>
|
552
606
|
**More information:** https://docs.pact.io/pact_broker/recording_deployments_and_releases/<br/>
|
@@ -558,9 +612,9 @@ will be used to populate the `branch` property of the version.
|
|
558
612
|
|
559
613
|
This is to assist in the migration from using tags to track branches to using the branches feature.
|
560
614
|
|
561
|
-
**YAML configuration key name:** `use_first_tag_as_branch`<br/>
|
562
|
-
**Environment variable name:** `PACT_BROKER_USE_FIRST_TAG_AS_BRANCH`<br/>
|
563
615
|
**Supported versions:** From v2.82.0<br/>
|
616
|
+
**Environment variable name:** `PACT_BROKER_USE_FIRST_TAG_AS_BRANCH`<br/>
|
617
|
+
**YAML configuration key name:** `use_first_tag_as_branch`<br/>
|
564
618
|
**Default:** `true`<br/>
|
565
619
|
**Allowed values:** `true`, `false`<br/>
|
566
620
|
|
@@ -571,9 +625,9 @@ the `mainBranch` property is set for that pacticipant if it is not already set.
|
|
571
625
|
|
572
626
|
This is to assist in the migration from using tags to track branches to using the branches feature.
|
573
627
|
|
574
|
-
**YAML configuration key name:** `auto_detect_main_branch`<br/>
|
575
|
-
**Environment variable name:** `PACT_BROKER_AUTO_DETECT_MAIN_BRANCH`<br/>
|
576
628
|
**Supported versions:** From v2.82.0<br/>
|
629
|
+
**Environment variable name:** `PACT_BROKER_AUTO_DETECT_MAIN_BRANCH`<br/>
|
630
|
+
**YAML configuration key name:** `auto_detect_main_branch`<br/>
|
577
631
|
**Default:** `true`<br/>
|
578
632
|
**Allowed values:** `true`, `false`<br/>
|
579
633
|
|
@@ -581,9 +635,9 @@ This is to assist in the migration from using tags to track branches to using th
|
|
581
635
|
|
582
636
|
An array of potential main branch names used when automatically detecting the main branch for a pacticipant.
|
583
637
|
|
584
|
-
**YAML configuration key name:** `main_branch_candidates`<br/>
|
585
|
-
**Environment variable name:** `PACT_BROKER_MAIN_BRANCH_CANDIDATES`<br/>
|
586
638
|
**Supported versions:** From v2.82.0<br/>
|
639
|
+
**Environment variable name:** `PACT_BROKER_MAIN_BRANCH_CANDIDATES`<br/>
|
640
|
+
**YAML configuration key name:** `main_branch_candidates`<br/>
|
587
641
|
**Format:** A space delimited list.<br/>
|
588
642
|
**Default:** `develop main master`<br/>
|
589
643
|
|
@@ -593,9 +647,9 @@ Whether or not to allow the pact content for an existing consumer version to be
|
|
593
647
|
as allowing modification makes the results of can-i-deploy unreliable. When this is set to false as recommended, each commit must publish pacts
|
594
648
|
with a unique version number.
|
595
649
|
|
596
|
-
**YAML configuration key name:** `allow_dangerous_contract_modification`<br/>
|
597
|
-
**Environment variable name:** `PACT_BROKER_ALLOW_DANGEROUS_CONTRACT_MODIFICATION`<br/>
|
598
650
|
**Supported versions:** From v2.82.0<br/>
|
651
|
+
**Environment variable name:** `PACT_BROKER_ALLOW_DANGEROUS_CONTRACT_MODIFICATION`<br/>
|
652
|
+
**YAML configuration key name:** `allow_dangerous_contract_modification`<br/>
|
599
653
|
**Default:** For new installations of v2.82.0 and later, this defaults to `false`.<br/>
|
600
654
|
**Allowed values:** `true`, `false`<br/>
|
601
655
|
**More information:** https://docs.pact.io/versioning<br/>
|
@@ -611,7 +665,7 @@ with a unique version number.
|
|
611
665
|
|
612
666
|
A list of features to enable in the Pact Broker for beta testing before public release.
|
613
667
|
|
614
|
-
**YAML configuration key name:** `features`<br/>
|
615
668
|
**Environment variable name:** `PACT_BROKER_FEATURES`<br/>
|
669
|
+
**YAML configuration key name:** `features`<br/>
|
616
670
|
**Format:** A space separated list.<br/>
|
617
671
|
|
data/lib/db.rb
CHANGED
@@ -38,14 +38,8 @@ module DB
|
|
38
38
|
con.extension(:connection_validator)
|
39
39
|
con.extension(:pagination)
|
40
40
|
con.extension(:statement_timeout)
|
41
|
+
con.extension(:any_not_empty)
|
41
42
|
#con.extension(:caller_logging)
|
42
|
-
con.extend_datasets do
|
43
|
-
# rubocop: disable Lint/NestedMethodDefinition
|
44
|
-
def any?
|
45
|
-
!empty?
|
46
|
-
end
|
47
|
-
# rubocop: enable Lint/NestedMethodDefinition
|
48
|
-
end
|
49
43
|
con.timezone = :utc
|
50
44
|
con.run("SET sql_mode='STRICT_TRANS_TABLES';") if db_credentials[:adapter].to_s =~ /mysql/
|
51
45
|
con
|