pact_broker 2.82.0 → 2.85.1
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/.gitignore +1 -0
- data/CHANGELOG.md +53 -0
- data/Dockerfile +1 -1
- data/db/migrations/20210815_add_provider_version_id_index_to_verifications.rb +7 -0
- data/db/migrations/20210816_create_branches_tables.rb +40 -0
- data/db/migrations/20210818_add_consumer_version_selectors_to_verification.rb +8 -0
- data/db/migrations/20210831_add_index_to_pact_publications.rb +7 -0
- data/db/migrations/20210908_add_auto_created.rb +24 -0
- data/db/migrations/20210913_add_pending_to_verifications.rb +7 -0
- data/issue-reproduction/Dockerfile-pact-broker +1 -1
- data/lib/pact/doc/markdown/consumer_contract_renderer.rb +3 -3
- data/lib/pact_broker/api/contracts/{verifiable_pacts_json_query_schema.rb → pacts_for_verification_json_query_schema.rb} +1 -1
- data/lib/pact_broker/api/contracts/{verifiable_pacts_query_schema.rb → pacts_for_verification_query_string_schema.rb} +1 -1
- data/lib/pact_broker/api/decorators/branch_version_decorator.rb +20 -0
- data/lib/pact_broker/api/decorators/dashboard_decorator.rb +4 -2
- data/lib/pact_broker/api/decorators/embedded_branch_version_decorator.rb +21 -0
- data/lib/pact_broker/api/decorators/embedded_tag_decorator.rb +0 -5
- data/lib/pact_broker/api/decorators/matrix_decorator.rb +11 -2
- data/lib/pact_broker/api/decorators/pacticipant_decorator.rb +8 -0
- data/lib/pact_broker/api/decorators/{verifiable_pacts_query_decorator.rb → pacts_for_verification_query_decorator.rb} +2 -2
- data/lib/pact_broker/api/decorators/reason_decorator.rb +2 -2
- data/lib/pact_broker/api/decorators/verification_summary_decorator.rb +1 -2
- data/lib/pact_broker/api/decorators/version_decorator.rb +1 -1
- data/lib/pact_broker/api/middleware/configuration.rb +33 -0
- data/lib/pact_broker/api/pact_broker_urls.rb +13 -1
- data/lib/pact_broker/api/renderers/html_pact_renderer.rb +15 -11
- data/lib/pact_broker/api/resources/branch_version.rb +48 -0
- data/lib/pact_broker/api/resources/index.rb +6 -0
- data/lib/pact_broker/api/resources/pact_versions_for_branch.rb +40 -0
- data/lib/pact_broker/api/resources/provider_pacts_for_verification.rb +6 -6
- data/lib/pact_broker/api/resources/verifications.rb +7 -2
- data/lib/pact_broker/api/resources/version.rb +0 -8
- data/lib/pact_broker/api.rb +2 -0
- data/lib/pact_broker/app.rb +2 -0
- data/lib/pact_broker/badges/service.rb +3 -1
- data/lib/pact_broker/config/runtime_configuration.rb +12 -0
- data/lib/pact_broker/configuration.rb +33 -29
- data/lib/pact_broker/contracts/service.rb +1 -1
- data/lib/pact_broker/db/clean/selector.rb +54 -0
- data/lib/pact_broker/db/clean.rb +7 -1
- data/lib/pact_broker/db/clean_incremental.rb +13 -5
- data/lib/pact_broker/db/data_migrations/create_branches.rb +97 -0
- data/lib/pact_broker/db/data_migrations/set_pacticipant_main_branch.rb +2 -0
- data/lib/pact_broker/db/migrate_data.rb +1 -1
- data/lib/pact_broker/db/models.rb +6 -0
- data/lib/pact_broker/deployments/deployed_version.rb +4 -0
- data/lib/pact_broker/deployments/deployed_version_service.rb +4 -3
- data/lib/pact_broker/deployments/environment.rb +4 -0
- data/lib/pact_broker/deployments/environment_service.rb +13 -8
- data/lib/pact_broker/diagnostic/resources/base_resource.rb +4 -0
- data/lib/pact_broker/diagnostic/resources/dependencies.rb +1 -1
- data/lib/pact_broker/diagnostic/resources/heartbeat.rb +2 -3
- data/lib/pact_broker/doc/views/index/pacticipant-branch-version.markdown +14 -0
- data/lib/pact_broker/doc/views/webhooks.markdown +1 -0
- data/lib/pact_broker/domain/index_item.rb +15 -17
- data/lib/pact_broker/domain/pacticipant.rb +11 -0
- data/lib/pact_broker/domain/tag.rb +1 -2
- data/lib/pact_broker/domain/verification.rb +29 -14
- data/lib/pact_broker/domain/version.rb +112 -29
- data/lib/pact_broker/domain/webhook.rb +22 -10
- data/lib/pact_broker/domain/webhook_request.rb +2 -2
- data/lib/pact_broker/index/service.rb +83 -28
- data/lib/pact_broker/locale/en.yml +4 -0
- data/lib/pact_broker/matrix/quick_row.rb +6 -6
- data/lib/pact_broker/matrix/service.rb +4 -0
- data/lib/pact_broker/matrix/unresolved_selector.rb +3 -2
- data/lib/pact_broker/metrics/service.rb +7 -1
- data/lib/pact_broker/pacts/metadata.rb +7 -2
- data/lib/pact_broker/pacts/pact_publication.rb +59 -25
- data/lib/pact_broker/pacts/pact_publication_dataset_module.rb +113 -33
- data/lib/pact_broker/pacts/pact_publication_selector_dataset_module.rb +18 -13
- data/lib/pact_broker/pacts/pact_publication_wip_dataset_module.rb +16 -4
- data/lib/pact_broker/pacts/pact_version.rb +13 -1
- data/lib/pact_broker/pacts/pacts_for_verification_repository.rb +4 -10
- data/lib/pact_broker/pacts/repository.rb +6 -1
- data/lib/pact_broker/pacts/selected_pact.rb +20 -0
- data/lib/pact_broker/pacts/selector.rb +98 -33
- data/lib/pact_broker/pacts/service.rb +21 -0
- data/lib/pact_broker/repositories.rb +5 -0
- data/lib/pact_broker/services.rb +9 -0
- data/lib/pact_broker/test/http_test_data_builder.rb +35 -9
- data/lib/pact_broker/test/test_data_builder.rb +32 -26
- data/lib/pact_broker/ui/app.rb +7 -1
- data/lib/pact_broker/ui/controllers/dashboard.rb +80 -0
- data/lib/pact_broker/ui/controllers/groups.rb +23 -8
- data/lib/pact_broker/ui/helpers/url_helper.rb +5 -1
- data/lib/pact_broker/ui/view_models/index_item.rb +56 -3
- data/lib/pact_broker/ui/view_models/matrix_branch.rb +39 -0
- data/lib/pact_broker/ui/view_models/matrix_line.rb +11 -16
- data/lib/pact_broker/ui/view_models/matrix_tag.rb +0 -1
- data/lib/pact_broker/ui/views/dashboard/show.haml +195 -0
- data/lib/pact_broker/ui/views/groups/show.html.erb +60 -14
- data/lib/pact_broker/ui/views/index/_dashboard_navbar.haml +7 -0
- data/lib/pact_broker/ui/views/index/_navbar.haml +0 -7
- data/lib/pact_broker/ui/views/index/show-with-tags.haml +14 -11
- data/lib/pact_broker/ui/views/index/show.haml +35 -13
- data/lib/pact_broker/ui/views/matrix/show.haml +15 -11
- data/lib/pact_broker/verifications/pseudo_branch_status.rb +2 -0
- data/lib/pact_broker/verifications/repository.rb +6 -11
- data/lib/pact_broker/verifications/service.rb +11 -5
- data/lib/pact_broker/version.rb +1 -1
- data/lib/pact_broker/versions/branch.rb +29 -0
- data/lib/pact_broker/versions/branch_head.rb +45 -0
- data/lib/pact_broker/versions/branch_service.rb +24 -0
- data/lib/pact_broker/versions/branch_version.rb +64 -0
- data/lib/pact_broker/versions/branch_version_repository.rb +34 -0
- data/lib/pact_broker/versions/eager_loaders.rb +0 -42
- data/lib/pact_broker/versions/repository.rb +25 -12
- data/lib/pact_broker/versions/service.rb +3 -22
- data/lib/pact_broker/webhooks/event_listener.rb +3 -3
- data/lib/pact_broker/webhooks/execution_configuration.rb +16 -0
- data/lib/pact_broker/webhooks/execution_configuration_creator.rb +3 -0
- data/lib/pact_broker/webhooks/job.rb +1 -1
- data/lib/pact_broker/webhooks/pact_and_verification_parameters.rb +20 -3
- data/lib/pact_broker/webhooks/trigger_service.rb +2 -2
- data/lib/pact_broker/webhooks/webhook_execution_result.rb +3 -7
- data/lib/pact_broker/webhooks/webhook_request_logger.rb +4 -12
- data/lib/pact_broker/webhooks/webhook_request_template.rb +6 -8
- data/lib/sequel/plugins/insert_ignore.rb +4 -0
- data/lib/sequel/plugins/upsert.rb +4 -0
- data/pact_broker.gemspec +4 -0
- data/public/javascripts/index.js +152 -50
- data/public/javascripts/pact.js +14 -14
- data/public/stylesheets/index.css +1 -2
- data/public/stylesheets/pact.css +11 -0
- data/scaffolding/templates/decorator.rb.erb +3 -1
- data/scaffolding/templates/migration.erb +1 -1
- data/scaffolding/templates/model.erb +2 -2
- data/scaffolding/templates/repository.rb.erb +2 -2
- data/scaffolding/templates/repository_spec.rb.erb +1 -1
- data/scaffolding/templates/resource.erb +2 -2
- data/scaffolding/templates/resource_spec.rb.erb +1 -1
- data/scaffolding/templates/service.rb.erb +3 -3
- data/scaffolding/templates/service_spec.rb.erb +1 -1
- data/script/data/auto-create-things-for-tags.rb +2 -0
- data/script/data/branches.rb +35 -0
- data/script/data/contract-published-requiring-verification.rb +1 -1
- data/script/data/environments.rb +0 -0
- data/script/data/issue-494.rb +25 -0
- data/script/data/pending.rb +26 -0
- data/script/data/tags.rb +35 -0
- data/script/data/webhook.rb +22 -0
- data/script/seed.rb +50 -89
- data/spec/features/create_branch_version_spec.rb +29 -0
- data/spec/features/create_tag_spec.rb +1 -1
- data/spec/features/create_version_spec.rb +2 -4
- data/spec/features/delete_pact_versions_for_branch_spec.rb +34 -0
- data/spec/features/get_branch_version_spec.rb +12 -0
- data/spec/features/publish_pact_all_in_one_spec.rb +0 -1
- data/spec/features/update_version_spec.rb +0 -55
- data/spec/fixtures/approvals/modifiable_resources.approved.json +7 -0
- data/spec/fixtures/approvals/publish_contract_nothing_exists.approved.json +1 -2
- data/spec/fixtures/approvals/publish_contract_nothing_exists_with_webhook.approved.json +1 -2
- data/spec/fixtures/approvals/publish_contract_verification_already_exists.approved.json +1 -2
- data/spec/fixtures/dashboard.json +4 -2
- data/spec/integration/app_spec.rb +6 -6
- data/spec/integration/ui/index_spec.rb +0 -2
- data/spec/integration/ui/matrix_spec.rb +0 -1
- data/spec/lib/pact/doc/markdown/consumer_contract_renderer_spec.rb +2 -2
- data/spec/lib/pact_broker/api/contracts/{verifiable_pacts_json_query_schema_combinations_spec.rb → pacts_for_verification_json_query_schema_combinations_spec.rb} +6 -6
- data/spec/lib/pact_broker/api/contracts/{verifiable_pacts_json_query_schema_spec.rb → pacts_for_verification_json_query_schema_spec.rb} +3 -3
- data/spec/lib/pact_broker/api/contracts/{verifiable_pacts_query_schema_spec.rb → pacts_for_verification_query_string_schema_spec.rb} +3 -3
- data/spec/lib/pact_broker/api/decorators/dashboard_decorator_spec.rb +7 -7
- data/spec/lib/pact_broker/api/decorators/matrix_decorator_spec.rb +19 -4
- data/spec/lib/pact_broker/api/decorators/{verifiable_pacts_query_decorator_spec.rb → pacts_for_verification_query_decorator_spec.rb} +3 -3
- data/spec/lib/pact_broker/api/decorators/reason_decorator_spec.rb +2 -2
- data/spec/lib/pact_broker/api/decorators/verification_summary_decorator_spec.rb +2 -0
- data/spec/lib/pact_broker/api/decorators/version_decorator_spec.rb +7 -3
- data/spec/lib/pact_broker/api/decorators/webhook_execution_result_decorator_spec.rb +1 -1
- data/spec/lib/pact_broker/api/middleware/configuration_spec.rb +43 -0
- data/spec/lib/pact_broker/api/resources/verifications_spec.rb +6 -4
- data/spec/lib/pact_broker/api/resources/webhook_execution_spec.rb +1 -1
- data/spec/lib/pact_broker/badges/service_spec.rb +22 -0
- data/spec/lib/pact_broker/contracts/service_spec.rb +24 -3
- data/spec/lib/pact_broker/db/clean_spec.rb +2 -2
- data/spec/lib/pact_broker/db/data_migrations/create_branches_spec.rb +57 -0
- data/spec/lib/pact_broker/diagnostic/resources/dependencies_spec.rb +4 -4
- data/spec/lib/pact_broker/diagnostic/resources/heartbeat_spec.rb +3 -4
- data/spec/lib/pact_broker/domain/index_item_spec.rb +1 -1
- data/spec/lib/pact_broker/domain/version_spec.rb +127 -36
- data/spec/lib/pact_broker/domain/webhook_request_spec.rb +2 -1
- data/spec/lib/pact_broker/domain/webhook_spec.rb +15 -5
- data/spec/lib/pact_broker/index/service_spec.rb +1 -5
- data/spec/lib/pact_broker/index/service_view_spec.rb +144 -0
- data/spec/lib/pact_broker/matrix/service_spec.rb +10 -1
- data/spec/lib/pact_broker/metrics/service_spec.rb +4 -1
- data/spec/lib/pact_broker/pacts/metadata_spec.rb +11 -3
- data/spec/lib/pact_broker/pacts/pact_publication_dataset_module_spec.rb +109 -10
- data/spec/lib/pact_broker/pacts/pact_publication_latest_verification_spec.rb +29 -0
- data/spec/lib/pact_broker/pacts/pact_publication_selector_dataset_module_spec.rb +3 -2
- data/spec/lib/pact_broker/pacts/pact_publication_spec.rb +5 -5
- data/spec/lib/pact_broker/pacts/repository_find_for_currently_deployed_spec.rb +2 -2
- data/spec/lib/pact_broker/pacts/repository_find_for_currently_supported_releases_spec.rb +2 -2
- data/spec/lib/pact_broker/pacts/repository_spec.rb +15 -2
- data/spec/lib/pact_broker/pacts/selector_spec.rb +45 -3
- data/spec/lib/pact_broker/pacts/service_spec.rb +61 -0
- data/spec/lib/pact_broker/pacts/verifiable_pact_messages_spec.rb +5 -5
- data/spec/lib/pact_broker/relationships/groupify_spec.rb +0 -5
- data/spec/lib/pact_broker/ui/view_models/index_item_spec.rb +21 -6
- data/spec/lib/pact_broker/verifications/pseudo_branch_status_spec.rb +9 -1
- data/spec/lib/pact_broker/verifications/repository_spec.rb +39 -30
- data/spec/lib/pact_broker/verifications/service_spec.rb +9 -5
- data/spec/lib/pact_broker/versions/branch_service_spec.rb +71 -0
- data/spec/lib/pact_broker/versions/branch_version_repository_spec.rb +81 -0
- data/spec/lib/pact_broker/versions/branch_version_spec.rb +27 -0
- data/spec/lib/pact_broker/versions/repository_spec.rb +91 -6
- data/spec/lib/pact_broker/versions/service_spec.rb +4 -3
- data/spec/lib/pact_broker/webhooks/job_spec.rb +4 -4
- data/spec/lib/pact_broker/webhooks/render_spec.rb +6 -0
- data/spec/lib/pact_broker/webhooks/trigger_service_spec.rb +9 -5
- data/spec/lib/pact_broker/webhooks/webhook_request_logger_spec.rb +6 -12
- data/spec/lib/pact_broker/webhooks/webhook_request_template_spec.rb +3 -2
- data/spec/lib/sequel/plugins/upsert_spec.rb +11 -5
- data/spec/migrations/44_add_provider_version_to_verification_spec.rb +6 -9
- data/spec/service_consumers/pact_helper.rb +2 -0
- data/spec/spec_helper.rb +1 -1
- data/spec/support/generated_markdown.md +3 -3
- metadata +90 -17
- data/lib/pact_broker/versions/lazy_loaders.rb +0 -13
- data/spec/lib/pact_broker/api/resources/webhook_execution_result_spec.rb +0 -56
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 274321ebbf970f7e282a64933d9d89522323c82d48b40b29b7c3921dec918e81
|
|
4
|
+
data.tar.gz: 89e6686d83aa69c88292675c4530adfbd48eff00b2c0f59ed901a13cbd14db2c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1cb98e0a974f7c440d803a47cd947579351573eeaa232e7768d012dc3b74ed9255e1520e585c56cf25eb856c43ba593cb9bceb890afb21bc61431c15ca193224
|
|
7
|
+
data.tar.gz: 893d6548ae9080919eeee2fbaee934c422da2a070b1f1ce32bb494a311a5d6f72db5b89652a683af23a1ddc14af09e1859bec47ebe3492644d612a656c171586
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,56 @@
|
|
|
1
|
+
<a name="v2.85.1"></a>
|
|
2
|
+
### v2.85.1 (2021-09-14)
|
|
3
|
+
|
|
4
|
+
#### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* fix bug identifying latest verification for tagged pact ([43ac4b03](/../../commit/43ac4b03))
|
|
7
|
+
|
|
8
|
+
<a name="v2.85.0"></a>
|
|
9
|
+
### v2.85.0 (2021-09-13)
|
|
10
|
+
|
|
11
|
+
#### Features
|
|
12
|
+
|
|
13
|
+
* show in the UI whether or not a pact was pending when verification failed ([326c068e](/../../commit/326c068e))
|
|
14
|
+
* thread safe configuration overrides (#500) ([50900231](/../../commit/50900231))
|
|
15
|
+
* allow dashboard pacts to be viewed by branch, tag, environment or all ([1ec8fc82](/../../commit/1ec8fc82))
|
|
16
|
+
* support deleting pacts by branch in the UI ([bc8fef1d](/../../commit/bc8fef1d))
|
|
17
|
+
* update UI ([0ba5eda3](/../../commit/0ba5eda3))
|
|
18
|
+
|
|
19
|
+
<a name="v2.84.0"></a>
|
|
20
|
+
### v2.84.0 (2021-09-10)
|
|
21
|
+
|
|
22
|
+
#### Features
|
|
23
|
+
|
|
24
|
+
* use the first tag as the branch when publishing pacts using the contracts/publish endpoint ([7b903c1d](/../../commit/7b903c1d))
|
|
25
|
+
* support multiple branches per version (#495) ([acff2fcc](/../../commit/acff2fcc))
|
|
26
|
+
* Support deleting all pacts for a specific tag in the UI (#480) ([10dda8ae](/../../commit/10dda8ae))
|
|
27
|
+
* add webhook template parameter for GItlab verification statuses (#493) ([390ae0d8](/../../commit/390ae0d8))
|
|
28
|
+
|
|
29
|
+
* **pacts for verification**
|
|
30
|
+
* include pending status for responses by default when includePendingStatus is not specified ([748d3b87](/../../commit/748d3b87))
|
|
31
|
+
|
|
32
|
+
#### Bug Fixes
|
|
33
|
+
|
|
34
|
+
* when the latest version for a tag does not have a pact, do not return a pact for the 'latest tag' selector ([374c77ce](/../../commit/374c77ce))
|
|
35
|
+
* issue-reproduction/Dockerfile-pact-broker to reduce vulnerabilities (#491) ([9692b465](/../../commit/9692b465))
|
|
36
|
+
* Dockerfile to reduce vulnerabilities (#496) ([57c190ef](/../../commit/57c190ef))
|
|
37
|
+
|
|
38
|
+
<a name="v2.83.0"></a>
|
|
39
|
+
### v2.83.0 (2021-08-19)
|
|
40
|
+
|
|
41
|
+
#### Features
|
|
42
|
+
|
|
43
|
+
* **clean**
|
|
44
|
+
* update default selectors for clean task to include deployed, released and branch head versions ([aaffe71f](/../../commit/aaffe71f))
|
|
45
|
+
* support keeping currently deployed and released versions, and the latest version for each branch ([e4fbd766](/../../commit/e4fbd766))
|
|
46
|
+
|
|
47
|
+
* add index to verifications table to improve performance of 'latest verification' query ([02eeb424](/../../commit/02eeb424))
|
|
48
|
+
|
|
49
|
+
#### Bug Fixes
|
|
50
|
+
|
|
51
|
+
* use provider_version_number from webhook context ([3cf421ac](/../../commit/3cf421ac))
|
|
52
|
+
* validate matrix query limit ([ac5e0890](/../../commit/ac5e0890))
|
|
53
|
+
|
|
1
54
|
<a name="v2.82.0"></a>
|
|
2
55
|
### v2.82.0 (2021-08-14)
|
|
3
56
|
|
data/Dockerfile
CHANGED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
Sequel.migration do
|
|
2
|
+
change do
|
|
3
|
+
create_table(:branches, charset: "utf8") do
|
|
4
|
+
primary_key :id
|
|
5
|
+
String :name
|
|
6
|
+
foreign_key :pacticipant_id, :pacticipants, null: false, on_delete: :cascade
|
|
7
|
+
DateTime :created_at, null: false
|
|
8
|
+
DateTime :updated_at, null: false
|
|
9
|
+
index [:pacticipant_id, :name], unique: true, name: :branches_pacticipant_id_name_index
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
create_table(:branch_versions, charset: "utf8") do
|
|
13
|
+
primary_key :id
|
|
14
|
+
foreign_key :branch_id, :branches, null: false, foreign_key_constraint_name: :branch_versions_branches_fk, on_delete: :cascade
|
|
15
|
+
foreign_key :version_id, :versions, null: false, foreign_key_constraint_name: :branch_versions_versions_fk, on_delete: :cascade
|
|
16
|
+
Integer :version_order, null: false
|
|
17
|
+
Integer :pacticipant_id, null: false
|
|
18
|
+
String :branch_name, null: false
|
|
19
|
+
DateTime :created_at, null: false
|
|
20
|
+
DateTime :updated_at, null: false
|
|
21
|
+
index [:branch_id, :version_id], unique: true, name: :branch_versions_branch_id_version_id_index
|
|
22
|
+
index [:version_id], name: :branch_versions_version_id_index
|
|
23
|
+
index [:branch_name], name: :branch_versions_branch_name_index
|
|
24
|
+
# Can probably drop this index when the "latest pact" logic changes
|
|
25
|
+
index [:pacticipant_id, :branch_id, :version_order], name: :branch_versions_pacticipant_id_branch_id_version_order_index
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
create_table(:branch_heads) do
|
|
29
|
+
foreign_key :branch_id, :branches, null: false, on_delete: :cascade
|
|
30
|
+
foreign_key :branch_version_id, :branch_versions, null: false, on_delete: :cascade
|
|
31
|
+
Integer :version_id, null: false
|
|
32
|
+
Integer :pacticipant_id, null: false
|
|
33
|
+
String :branch_name, null: false
|
|
34
|
+
index [:branch_id], unique: true, name: :branch_heads_branch_id_index
|
|
35
|
+
index [:branch_name], name: :branch_heads_branch_name_index
|
|
36
|
+
index [:pacticipant_id], name: :branch_heads_pacticipant_id_index
|
|
37
|
+
index [:version_id], name: :branch_heads_version_id_index
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
Sequel.migration do
|
|
2
|
+
up do
|
|
3
|
+
alter_table(:branch_versions) do
|
|
4
|
+
add_column(:auto_created, TrueClass, default: false)
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
alter_table(:deployed_versions) do
|
|
8
|
+
add_column(:auto_created, TrueClass, default: false)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
from(:branch_versions).update(auto_created: true)
|
|
12
|
+
from(:deployed_versions).update(auto_created: true)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
down do
|
|
16
|
+
alter_table(:branch_versions) do
|
|
17
|
+
drop_column(:auto_created)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
alter_table(:deployed_versions) do
|
|
21
|
+
drop_column(:auto_created)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -24,7 +24,7 @@ module Pact
|
|
|
24
24
|
attr_reader :consumer_contract
|
|
25
25
|
|
|
26
26
|
def title
|
|
27
|
-
"
|
|
27
|
+
"# A pact between #{consumer_name} and #{provider_name}\n\n"
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
def interaction_renderers
|
|
@@ -32,11 +32,11 @@ module Pact
|
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
def summaries_title
|
|
35
|
-
"
|
|
35
|
+
"### Requests from #{consumer_name} to #{provider_name}\n\n"
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
def interactions_title
|
|
39
|
-
"
|
|
39
|
+
"### Interactions\n\n"
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
def summaries
|
|
@@ -5,7 +5,7 @@ require "pact_broker/api/contracts/dry_validation_predicates"
|
|
|
5
5
|
module PactBroker
|
|
6
6
|
module Api
|
|
7
7
|
module Contracts
|
|
8
|
-
class
|
|
8
|
+
class PactsForVerificationQueryStringSchema
|
|
9
9
|
extend DryValidationWorkarounds
|
|
10
10
|
using PactBroker::HashRefinements
|
|
11
11
|
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require "pact_broker/api/decorators/base_decorator"
|
|
2
|
+
require "pact_broker/api/decorators/timestamps"
|
|
3
|
+
|
|
4
|
+
module PactBroker
|
|
5
|
+
module Api
|
|
6
|
+
module Decorators
|
|
7
|
+
class BranchVersionDecorator < BaseDecorator
|
|
8
|
+
|
|
9
|
+
link :self do | user_options |
|
|
10
|
+
{
|
|
11
|
+
title: "Branch version",
|
|
12
|
+
href: branch_version_url(represented, user_options.fetch(:base_url))
|
|
13
|
+
}
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
include Timestamps
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -58,7 +58,8 @@ module PactBroker
|
|
|
58
58
|
name: index_item.consumer_name,
|
|
59
59
|
version: {
|
|
60
60
|
number: index_item.consumer_version_number,
|
|
61
|
-
branch: index_item.
|
|
61
|
+
branch: index_item.consumer_version_branches.last,
|
|
62
|
+
headBranchNames: index_item.consumer_version_branches,
|
|
62
63
|
_links: {
|
|
63
64
|
self: {
|
|
64
65
|
href: version_url(base_url, index_item.consumer_version)
|
|
@@ -87,7 +88,8 @@ module PactBroker
|
|
|
87
88
|
if index_item.latest_verification
|
|
88
89
|
hash[:version] = {
|
|
89
90
|
number: index_item.provider_version_number,
|
|
90
|
-
branch: index_item.
|
|
91
|
+
branch: index_item.provider_version_branches.last,
|
|
92
|
+
headBranchNames: index_item.provider_version_branches
|
|
91
93
|
}
|
|
92
94
|
end
|
|
93
95
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require_relative "base_decorator"
|
|
2
|
+
require_relative "timestamps"
|
|
3
|
+
|
|
4
|
+
module PactBroker
|
|
5
|
+
module Api
|
|
6
|
+
module Decorators
|
|
7
|
+
class EmbeddedBranchVersionDecorator < BaseDecorator
|
|
8
|
+
property :branch_name, as: :name
|
|
9
|
+
property :latest?, as: :latest
|
|
10
|
+
|
|
11
|
+
link :self do | options |
|
|
12
|
+
{
|
|
13
|
+
title: "Version branch",
|
|
14
|
+
name: represented.branch_name,
|
|
15
|
+
href: branch_version_url(represented, options[:base_url])
|
|
16
|
+
}
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
require_relative "base_decorator"
|
|
2
|
-
require_relative "pact_pacticipant_decorator"
|
|
3
2
|
require_relative "timestamps"
|
|
4
3
|
|
|
5
4
|
module PactBroker
|
|
6
|
-
|
|
7
5
|
module Api
|
|
8
|
-
|
|
9
6
|
module Decorators
|
|
10
|
-
|
|
11
7
|
class EmbeddedTagDecorator < BaseDecorator
|
|
12
|
-
|
|
13
8
|
property :name
|
|
14
9
|
|
|
15
10
|
link :self do | options |
|
|
@@ -2,6 +2,7 @@ require "ostruct"
|
|
|
2
2
|
require "pact_broker/api/pact_broker_urls"
|
|
3
3
|
require "pact_broker/api/decorators/reason_decorator"
|
|
4
4
|
require "pact_broker/api/decorators/format_date_time"
|
|
5
|
+
require "pact_broker/api/decorators/embedded_branch_version_decorator"
|
|
5
6
|
|
|
6
7
|
module PactBroker
|
|
7
8
|
module Api
|
|
@@ -83,7 +84,8 @@ module PactBroker
|
|
|
83
84
|
name: line.consumer_name,
|
|
84
85
|
version: {
|
|
85
86
|
number: line.consumer_version_number,
|
|
86
|
-
branch: line.
|
|
87
|
+
branch: line.consumer_version_branch_versions.last&.branch_name,
|
|
88
|
+
branches: branches(line.consumer_version_branch_versions, base_url),
|
|
87
89
|
_links: {
|
|
88
90
|
self: {
|
|
89
91
|
href: version_url(base_url, consumer_version)
|
|
@@ -99,6 +101,12 @@ module PactBroker
|
|
|
99
101
|
}
|
|
100
102
|
end
|
|
101
103
|
|
|
104
|
+
def branches(branch_versions, base_url)
|
|
105
|
+
branch_versions.collect do | branch_version |
|
|
106
|
+
PactBroker::Api::Decorators::EmbeddedBranchVersionDecorator.new(branch_version).to_hash(user_options: { base_url: base_url })
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
102
110
|
def tags(tags, base_url)
|
|
103
111
|
tags.sort_by(&:created_at).collect do | tag |
|
|
104
112
|
{
|
|
@@ -127,7 +135,8 @@ module PactBroker
|
|
|
127
135
|
if !line.provider_version_number.nil?
|
|
128
136
|
hash[:version] = {
|
|
129
137
|
number: line.provider_version_number,
|
|
130
|
-
branch: line.
|
|
138
|
+
branch: line.provider_version_branch_versions.last&.branch_name,
|
|
139
|
+
branches: branches(line.provider_version_branch_versions, base_url),
|
|
131
140
|
_links: {
|
|
132
141
|
self: {
|
|
133
142
|
href: version_url(base_url, provider_version)
|
|
@@ -49,6 +49,14 @@ module PactBroker
|
|
|
49
49
|
}
|
|
50
50
|
end
|
|
51
51
|
|
|
52
|
+
link :'pb:branch-version' do | options |
|
|
53
|
+
{
|
|
54
|
+
title: "Get or add/create a version for a branch of #{represented.name}",
|
|
55
|
+
href: templated_branch_version_url_for_pacticipant(represented.name, options[:base_url]),
|
|
56
|
+
templated: true
|
|
57
|
+
}
|
|
58
|
+
end
|
|
59
|
+
|
|
52
60
|
link :'pb:label' do | options |
|
|
53
61
|
{
|
|
54
62
|
title: "Get, create or delete a label for #{represented.name}",
|
|
@@ -8,7 +8,7 @@ require "pact_broker/pacts/selectors"
|
|
|
8
8
|
module PactBroker
|
|
9
9
|
module Api
|
|
10
10
|
module Decorators
|
|
11
|
-
class
|
|
11
|
+
class PactsForVerificationQueryDecorator < BaseDecorator
|
|
12
12
|
using PactBroker::HashRefinements
|
|
13
13
|
|
|
14
14
|
collection :provider_version_tags, default: []
|
|
@@ -38,7 +38,7 @@ module PactBroker
|
|
|
38
38
|
}
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
-
property :include_pending_status, default:
|
|
41
|
+
property :include_pending_status, default: true,
|
|
42
42
|
setter: ->(fragment:, represented:, **) {
|
|
43
43
|
represented.include_pending_status = (fragment == "true" || fragment == true)
|
|
44
44
|
}
|
|
@@ -45,9 +45,9 @@ module PactBroker
|
|
|
45
45
|
when PactBroker::Matrix::IgnoreSelectorDoesNotExist
|
|
46
46
|
"WARN: Cannot ignore #{reason.selector.description}"
|
|
47
47
|
when PactBroker::Matrix::SelectorWithoutPacticipantVersionNumberSpecified
|
|
48
|
-
"WARN:
|
|
48
|
+
"WARN: It is recommended to specify the version number (rather than the tag or branch) of the pacticipant you wish to deploy to avoid race conditions. Without a version number, this result will not be reliable."
|
|
49
49
|
when PactBroker::Matrix::NoEnvironmentSpecified
|
|
50
|
-
"WARN:
|
|
50
|
+
"WARN: It is recommended to specify the environment into which you are deploying. Without the environment, this result will not be reliable."
|
|
51
51
|
else
|
|
52
52
|
reason
|
|
53
53
|
end
|
|
@@ -6,9 +6,9 @@ require "ostruct"
|
|
|
6
6
|
module PactBroker
|
|
7
7
|
module Api
|
|
8
8
|
module Decorators
|
|
9
|
-
|
|
10
9
|
class VerificationSummaryDecorator < BaseDecorator
|
|
11
10
|
|
|
11
|
+
# TODO count pending failures?
|
|
12
12
|
property :success
|
|
13
13
|
property :provider_summary, as: :providerSummary do
|
|
14
14
|
property :successful
|
|
@@ -30,7 +30,6 @@ module PactBroker
|
|
|
30
30
|
successful: represented.select(&:success).collect(&:provider_name),
|
|
31
31
|
failed: represented.select{|verification| !verification.success }.collect(&:provider_name))
|
|
32
32
|
end
|
|
33
|
-
|
|
34
33
|
end
|
|
35
34
|
end
|
|
36
35
|
end
|
|
@@ -7,7 +7,7 @@ module PactBroker
|
|
|
7
7
|
class VersionDecorator < BaseDecorator
|
|
8
8
|
|
|
9
9
|
property :number, writeable: false
|
|
10
|
-
|
|
10
|
+
collection :branch_versions, as: :branches, embedded: true, writeable: false, extend: PactBroker::Api::Decorators::EmbeddedBranchVersionDecorator
|
|
11
11
|
property :build_url, as: :buildUrl
|
|
12
12
|
|
|
13
13
|
collection :tags, embedded: true, :extend => PactBroker::Api::Decorators::EmbeddedTagDecorator, class: OpenStruct
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require "pact_broker/logging"
|
|
2
|
+
|
|
3
|
+
module PactBroker
|
|
4
|
+
module Api
|
|
5
|
+
module Middleware
|
|
6
|
+
class Configuration
|
|
7
|
+
include PactBroker::Logging
|
|
8
|
+
|
|
9
|
+
def initialize(app, configuration)
|
|
10
|
+
@app = app
|
|
11
|
+
@configuration = configuration
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def call(env)
|
|
15
|
+
if (overrides = env["pactbroker.configuration_overrides"])&.any?
|
|
16
|
+
dupped_configuration = configuration.dup
|
|
17
|
+
dupped_configuration.override_runtime_configuration!(overrides)
|
|
18
|
+
dupped_configuration.freeze
|
|
19
|
+
PactBroker.set_configuration(dupped_configuration)
|
|
20
|
+
app.call(env)
|
|
21
|
+
else
|
|
22
|
+
PactBroker.set_configuration(configuration)
|
|
23
|
+
app.call(env)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
attr_reader :app, :configuration
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|