pact_broker 2.68.0 → 2.72.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/.github/workflows/release_gem.yml +7 -1
- data/.github/workflows/test.yml +54 -0
- data/CHANGELOG.md +58 -0
- data/DEVELOPER_SETUP.md +6 -0
- data/Dockerfile +8 -3
- data/Gemfile +6 -1
- data/ISSUES.md +23 -0
- data/config/database.yml +14 -0
- data/db/ddl_statements/latest_verification_ids_for_consumer_and_provider.rb +25 -0
- data/db/migrations/20180524_create_latest_verifications_for_consumer_and_provider.rb +4 -11
- data/db/migrations/20180614_update_latest_verification_ids_for_consumer_and_provider.rb +6 -18
- data/db/migrations/20201026_update_latest_verification_ids_for_consumer_and_provider.rb +14 -0
- data/docker-compose-ci-mysql.yml +37 -0
- data/docker-compose-issue-repro.yml +22 -0
- data/issue-reproduction/Dockerfile-pact-broker +42 -0
- data/lib/pact/doc/interaction_view_model.rb +12 -0
- data/lib/pact/doc/markdown/interaction.erb +3 -3
- data/lib/pact/doc/markdown/interaction_renderer.rb +2 -1
- data/lib/pact_broker/api/decorators/pact_decorator.rb +8 -0
- data/lib/pact_broker/api/pact_broker_urls.rb +5 -1
- data/lib/pact_broker/api/resources/clean.rb +36 -0
- data/lib/pact_broker/api/resources/group.rb +5 -1
- data/lib/pact_broker/api/resources/metadata_resource_methods.rb +23 -0
- data/lib/pact_broker/api/resources/pact.rb +2 -13
- data/lib/pact_broker/api/resources/pact_content_diff.rb +1 -1
- data/lib/pact_broker/api/resources/pact_resource_methods.rb +23 -0
- data/lib/pact_broker/api/resources/pact_version.rb +3 -0
- data/lib/pact_broker/api/resources/tagged_pact_versions.rb +4 -0
- data/lib/pact_broker/api/resources/verifications.rb +2 -4
- data/lib/pact_broker/api/resources/webhooks.rb +1 -1
- data/lib/pact_broker/configuration.rb +3 -0
- data/lib/pact_broker/db/clean.rb +34 -11
- data/lib/pact_broker/db/clean_incremental.rb +217 -0
- data/lib/pact_broker/db/delete_overwritten_data.rb +55 -27
- data/lib/pact_broker/domain/tag.rb +111 -8
- data/lib/pact_broker/domain/verification.rb +93 -0
- data/lib/pact_broker/domain/version.rb +35 -1
- data/lib/pact_broker/domain/webhook_request.rb +2 -1
- data/lib/pact_broker/logging.rb +7 -0
- data/lib/pact_broker/matrix/unresolved_selector.rb +12 -0
- data/lib/pact_broker/metrics/service.rb +5 -3
- data/lib/pact_broker/pacts/all_pact_publications.rb +9 -3
- data/lib/pact_broker/pacts/latest_pact_publications.rb +15 -0
- data/lib/pact_broker/pacts/metadata.rb +5 -1
- data/lib/pact_broker/pacts/pact_publication.rb +7 -1
- data/lib/pact_broker/pacts/repository.rb +39 -13
- data/lib/pact_broker/pacts/verifiable_pact_messages.rb +1 -1
- data/lib/pact_broker/tasks/clean_task.rb +48 -4
- data/lib/pact_broker/tasks/delete_overwritten_data_task.rb +23 -7
- data/lib/pact_broker/test/http_test_data_builder.rb +168 -0
- data/lib/pact_broker/test/test_data_builder.rb +24 -0
- data/lib/pact_broker/version.rb +1 -1
- data/lib/pact_broker/webhooks/triggered_webhook.rb +6 -0
- data/pact_broker.gemspec +1 -1
- data/script/docker-container/test.sh +3 -0
- data/script/docker/db-psql.sh +3 -0
- data/script/docker/db-reload.sh +11 -0
- data/script/docker/db-start.sh +1 -1
- data/script/pry.rb +25 -0
- data/script/reproduce-issue.rb +43 -0
- data/script/seed.rb +1 -0
- data/script/test/run-rake-on-docker-compose-mysql.sh +8 -0
- data/spec/features/delete_tagged_pact_versions_spec.rb +2 -2
- data/spec/features/get_pact_spec.rb +2 -2
- data/spec/features/get_pact_version.rb +26 -3
- data/spec/fixtures/approvals/clean_incremental_dry_run.approved.json +100 -0
- data/spec/fixtures/approvals/modifiable_resources.approved.json +3 -0
- data/spec/lib/pact/doc/interaction_view_model_spec.rb +46 -0
- data/spec/lib/pact/doc/markdown/consumer_contract_renderer_spec.rb +11 -0
- data/spec/lib/pact_broker/api/pact_broker_urls_spec.rb +7 -1
- data/spec/lib/pact_broker/api/resources/group_spec.rb +9 -7
- data/spec/lib/pact_broker/api/resources/pact_spec.rb +20 -9
- data/spec/lib/pact_broker/api/resources/tagged_pact_versions_spec.rb +10 -2
- data/spec/lib/pact_broker/api/resources/verifications_spec.rb +7 -3
- data/spec/lib/pact_broker/db/clean_incremental_spec.rb +119 -0
- data/spec/lib/pact_broker/db/clean_spec.rb +4 -8
- data/spec/lib/pact_broker/db/delete_overwritten_data_spec.rb +71 -11
- data/spec/lib/pact_broker/domain/tag_spec.rb +60 -0
- data/spec/lib/pact_broker/domain/verification_spec.rb +62 -0
- data/spec/lib/pact_broker/domain/version_spec.rb +23 -0
- data/spec/lib/pact_broker/domain/webhook_request_spec.rb +1 -1
- data/spec/lib/pact_broker/metrics/service_spec.rb +4 -1
- data/spec/lib/pact_broker/pacts/pact_publication_spec.rb +3 -1
- data/spec/lib/pact_broker/pacts/repository_find_wip_pact_versions_for_provider_spec.rb +14 -1
- data/spec/lib/pact_broker/pacts/repository_spec.rb +54 -7
- data/spec/migrations/change_migration_strategy_spec.rb +1 -1
- data/spec/support/markdown_pact_v3.json +44 -0
- metadata +32 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f848cc7a613de4d084d69d97bf1b835c1d1bb130eec3c4c968800e348daf95bf
|
|
4
|
+
data.tar.gz: 1cbbbd2832eb98cd3904bba8aff8d909a95663c70abe7ad710473e46b3fb3e7c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2200189e21700c21b67e1f8abc85574c3ed9367287568ce7dab4f808cd81ae01a80acd60fe3309cb134cd4466d2c243244429073d4e3af53b6b009bc58848782
|
|
7
|
+
data.tar.gz: c304534b3125112f4bd2bead0509e7e711face5f0e84ec88594cae1eb6e14a1618a4e61884ffbb0f66dbd813c4e5d4ebd61867ce276120a471a6a77f4c1e6e61
|
|
@@ -19,11 +19,17 @@ jobs:
|
|
|
19
19
|
# checkInterval: 15
|
|
20
20
|
# env:
|
|
21
21
|
# GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
|
22
|
-
-
|
|
22
|
+
- id: release-gem
|
|
23
|
+
uses: pact-foundation/release-gem@v0.0.11
|
|
23
24
|
env:
|
|
24
25
|
GEM_HOST_API_KEY: '${{ secrets.RUBYGEMS_API_KEY }}'
|
|
25
26
|
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
|
|
26
27
|
INCREMENT: '${{ github.event.client_payload.increment }}'
|
|
28
|
+
outputs:
|
|
29
|
+
gem_name: "${{ steps.release-gem.outputs.gem_name }}"
|
|
30
|
+
version: "${{ steps.release-gem.outputs.version }}"
|
|
31
|
+
increment: "${{ steps.release-gem.outputs.increment }}"
|
|
32
|
+
|
|
27
33
|
notify-gem-released:
|
|
28
34
|
needs: release
|
|
29
35
|
strategy:
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
name: Test
|
|
2
|
+
|
|
3
|
+
on: push
|
|
4
|
+
|
|
5
|
+
jobs:
|
|
6
|
+
sqlite:
|
|
7
|
+
runs-on: "ubuntu-latest"
|
|
8
|
+
strategy:
|
|
9
|
+
matrix:
|
|
10
|
+
ruby_version: ["2.7"]
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v2
|
|
13
|
+
- uses: actions/setup-ruby@v1
|
|
14
|
+
with:
|
|
15
|
+
ruby-version: ${{ matrix.ruby_version }}
|
|
16
|
+
- run: "bundle install"
|
|
17
|
+
- run: "bundle exec rake"
|
|
18
|
+
postgres:
|
|
19
|
+
runs-on: "ubuntu-latest"
|
|
20
|
+
strategy:
|
|
21
|
+
matrix:
|
|
22
|
+
ruby_version: ["2.5", "2.7"]
|
|
23
|
+
services:
|
|
24
|
+
postgres:
|
|
25
|
+
image: postgres
|
|
26
|
+
env:
|
|
27
|
+
POSTGRES_PASSWORD: postgres
|
|
28
|
+
options: >-
|
|
29
|
+
--health-cmd pg_isready
|
|
30
|
+
--health-interval 10s
|
|
31
|
+
--health-timeout 5s
|
|
32
|
+
--health-retries 5
|
|
33
|
+
ports:
|
|
34
|
+
- 5432:5432
|
|
35
|
+
steps:
|
|
36
|
+
- uses: actions/checkout@v2
|
|
37
|
+
- uses: actions/setup-ruby@v1
|
|
38
|
+
with:
|
|
39
|
+
ruby-version: ${{ matrix.ruby_version }}
|
|
40
|
+
- run: "bundle install"
|
|
41
|
+
env:
|
|
42
|
+
INSTALL_PG: "true"
|
|
43
|
+
- run: "bundle exec rake"
|
|
44
|
+
env:
|
|
45
|
+
DATABASE_ADAPTER: github_actions_postgres
|
|
46
|
+
INSTALL_PG: "true"
|
|
47
|
+
mysql:
|
|
48
|
+
runs-on: "ubuntu-latest"
|
|
49
|
+
strategy:
|
|
50
|
+
matrix:
|
|
51
|
+
ruby_version: ["2.7"]
|
|
52
|
+
steps:
|
|
53
|
+
- uses: actions/checkout@v2
|
|
54
|
+
- run: script/test/run-rake-on-docker-compose-mysql.sh
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,61 @@
|
|
|
1
|
+
<a name="v2.72.0"></a>
|
|
2
|
+
### v2.72.0 (2020-12-02)
|
|
3
|
+
|
|
4
|
+
#### Features
|
|
5
|
+
|
|
6
|
+
* allow overwritten data deletion to be configured with extra options ([fd809737](/../../commit/fd809737))
|
|
7
|
+
* use the consumer version number in the metadata to select the correct consumer version for a pact version resource ([422c87fc](/../../commit/422c87fc))
|
|
8
|
+
* return link to latest pact if more pacts exist when deleting pacts by tag ([b87ea704](/../../commit/b87ea704))
|
|
9
|
+
* update output for clean dry run ([681a5ddd](/../../commit/681a5ddd))
|
|
10
|
+
* update metrics output ([0617e9df](/../../commit/0617e9df))
|
|
11
|
+
|
|
12
|
+
<a name="v2.71.0"></a>
|
|
13
|
+
### v2.71.0 (2020-11-28)
|
|
14
|
+
|
|
15
|
+
#### Features
|
|
16
|
+
|
|
17
|
+
* allow clean to be performed in dry run mode ([a7a18fde](/../../commit/a7a18fde))
|
|
18
|
+
|
|
19
|
+
<a name="v2.70.0"></a>
|
|
20
|
+
### v2.70.0 (2020-11-28)
|
|
21
|
+
|
|
22
|
+
#### Features
|
|
23
|
+
|
|
24
|
+
* allow limit to be applied to clean task ([d29e5c62](/../../commit/d29e5c62))
|
|
25
|
+
* optimise the query to load the tags with latest flags ([bc47613f](/../../commit/bc47613f))
|
|
26
|
+
* optimise query to find head tags for a pact ([67309e37](/../../commit/67309e37))
|
|
27
|
+
|
|
28
|
+
* **wip pacts**
|
|
29
|
+
* experimental feature - if no provider versions exist, consider all head pacts wip ([a635cc53](/../../commit/a635cc53))
|
|
30
|
+
|
|
31
|
+
#### Bug Fixes
|
|
32
|
+
|
|
33
|
+
* return empty body when group csv is requested for a pacticipant that does not have any integrations ([fb4e28ce](/../../commit/fb4e28ce))
|
|
34
|
+
|
|
35
|
+
<a name="v2.69.0"></a>
|
|
36
|
+
### v2.69.0 (2020-11-24)
|
|
37
|
+
|
|
38
|
+
#### Features
|
|
39
|
+
|
|
40
|
+
* **wip**
|
|
41
|
+
* keep pacts as WIP when verified via the pactUrl passed though the webhook template parameters - experimental. ([a9b3fef0](/../../commit/a9b3fef0))
|
|
42
|
+
|
|
43
|
+
* add link to the pact content version ([8eefba5f](/../../commit/8eefba5f))
|
|
44
|
+
* display V3 provider states in HTML (#357) ([8e06a7f2](/../../commit/8e06a7f2))
|
|
45
|
+
* optimise query for determining latest verification for consumer and provider ([7889b051](/../../commit/7889b051))
|
|
46
|
+
|
|
47
|
+
#### Bug Fixes
|
|
48
|
+
|
|
49
|
+
* return a 404 when the base pact for a pact diff doesn't exist ([74d3644d](/../../commit/74d3644d))
|
|
50
|
+
* Add consumer name to inclusion reason log (#358) ([82901891](/../../commit/82901891))
|
|
51
|
+
|
|
52
|
+
<a name="v2.68.1"></a>
|
|
53
|
+
### v2.68.1 (2020-10-24)
|
|
54
|
+
|
|
55
|
+
#### Bug Fixes
|
|
56
|
+
|
|
57
|
+
* set default User-Agent header in webhook requests ([caa71f9b](/../../commit/caa71f9b))
|
|
58
|
+
|
|
1
59
|
<a name="v2.68.0"></a>
|
|
2
60
|
### v2.68.0 (2020-10-23)
|
|
3
61
|
|
data/DEVELOPER_SETUP.md
CHANGED
|
@@ -28,6 +28,12 @@ This allows you to open a shell to a development environment where you can run t
|
|
|
28
28
|
|
|
29
29
|
Remember to rebuild the image if you change any of the gems or gem versions.
|
|
30
30
|
|
|
31
|
+
* Run the server on the docker image
|
|
32
|
+
|
|
33
|
+
```sh
|
|
34
|
+
docker run --rm -v $(PWD):/home -w /home --entrypoint /bin/sh -p 9292:9292 -it pact_broker:dev /usr/local/bin/start
|
|
35
|
+
```
|
|
36
|
+
|
|
31
37
|
### With native install
|
|
32
38
|
|
|
33
39
|
* You will need to install Ruby 2.5, and preferably a ruby version manager. I recommend using [chruby][chruby] and [ruby-install][ruby-install].
|
data/Dockerfile
CHANGED
|
@@ -26,6 +26,7 @@ RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSI
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
COPY Gemfile /home/Gemfile
|
|
29
|
+
# COPY Gemfile.lock /home/Gemfile.lock # lock file does not exist on CI
|
|
29
30
|
COPY pact_broker.gemspec /home/pact_broker.gemspec
|
|
30
31
|
COPY lib/pact_broker/version.rb /home/lib/pact_broker/version.rb
|
|
31
32
|
COPY .gitignore /home/.gitignore
|
|
@@ -33,9 +34,13 @@ COPY .gitignore /home/.gitignore
|
|
|
33
34
|
RUN gem install bundler -v '~>2.0.0' \
|
|
34
35
|
&& bundle install --jobs 3 --retry 3
|
|
35
36
|
|
|
36
|
-
RUN echo '#!/bin/sh' >> /
|
|
37
|
-
RUN echo 'bundle exec rackup -o 0.0.0.0 -p 9292' >> /
|
|
38
|
-
RUN chmod +x /
|
|
37
|
+
RUN echo '#!/bin/sh' >> /usr/local/bin/start
|
|
38
|
+
RUN echo 'bundle exec rackup -o 0.0.0.0 -p 9292' >> /usr/local/bin/start
|
|
39
|
+
RUN chmod +x /usr/local/bin/start
|
|
40
|
+
|
|
41
|
+
RUN echo '#!/bin/sh' >> /usr/local/bin/test
|
|
42
|
+
RUN echo 'bundle exec rake' >> /usr/local/bin/test
|
|
43
|
+
RUN chmod +x /usr/local/bin/test
|
|
39
44
|
|
|
40
45
|
RUN echo '#!/bin/sh' >> /home/init-db.sh
|
|
41
46
|
RUN echo 'bundle exec rake db:prepare:test' >> /home/init-db.sh
|
data/Gemfile
CHANGED
|
@@ -18,12 +18,13 @@ group :test do
|
|
|
18
18
|
gem 'rspec-pact-matchers', '~>0.1'
|
|
19
19
|
gem 'bundler-audit', '~>0.4'
|
|
20
20
|
gem 'fakefs', '~>0.4'
|
|
21
|
-
gem 'webmock', '~>
|
|
21
|
+
gem 'webmock', '~>3.9'
|
|
22
22
|
gem 'rspec', '~>3.0'
|
|
23
23
|
gem 'rspec-its', '~>1.2'
|
|
24
24
|
gem 'database_cleaner', '~>1.8', '>= 1.8.1'
|
|
25
25
|
gem 'timecop', '~> 0.9'
|
|
26
26
|
gem 'faraday', '~>0.15'
|
|
27
|
+
gem 'faraday_middleware', '~> 0.14'
|
|
27
28
|
gem 'docker-api', '~>1.34'
|
|
28
29
|
gem 'approvals', '>=0.0.1', '<1.0.0'
|
|
29
30
|
end
|
|
@@ -35,3 +36,7 @@ end
|
|
|
35
36
|
if ENV['INSTALL_PG'] == 'true'
|
|
36
37
|
gem 'pg', '~>1.2'
|
|
37
38
|
end
|
|
39
|
+
|
|
40
|
+
if ENV['X_PACT_DEVELOPMENT'] == 'true'
|
|
41
|
+
gem 'pact-support', path: '../pact-support'
|
|
42
|
+
end
|
data/ISSUES.md
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Issues
|
|
2
|
+
|
|
3
|
+
## Reproducing an issue
|
|
4
|
+
|
|
5
|
+
In [script/reproduce-issue.rb](script/reproduce-issue.rb) you will find a fluent API that allows you to simulate client libraries interacting with the Pact Broker.
|
|
6
|
+
|
|
7
|
+
You can use it to easily reproduce issues.
|
|
8
|
+
|
|
9
|
+
To use it:
|
|
10
|
+
|
|
11
|
+
* Run the Pact Broker using the latest development code:
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
docker-compose -f docker-compose-issue-repro.yml up --build pact-broker
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
* Run the reproduction script.
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
docker-compose -f docker-compose-issue-repro.yml up repro-issue
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
You can modify `script/reproduce-issue.rb` and then re-run it with the change applied.
|
data/config/database.yml
CHANGED
|
@@ -36,6 +36,20 @@ test:
|
|
|
36
36
|
<<: *default
|
|
37
37
|
adapter: mysql2
|
|
38
38
|
host: "192.168.0.9"
|
|
39
|
+
github_actions_postgres:
|
|
40
|
+
adapter: postgres
|
|
41
|
+
database: postgres
|
|
42
|
+
username: postgres
|
|
43
|
+
password: postgres
|
|
44
|
+
host: localhost
|
|
45
|
+
port: "5432"
|
|
46
|
+
github_actions_mysql:
|
|
47
|
+
adapter: mysql2
|
|
48
|
+
database: pact_broker
|
|
49
|
+
username: pact_broker
|
|
50
|
+
password: pact_broker
|
|
51
|
+
host: localhost
|
|
52
|
+
port: 3306
|
|
39
53
|
|
|
40
54
|
development:
|
|
41
55
|
default:
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
LATEST_VERIFICATION_IDS_FOR_CONSUMER_AND_PROVIDER_V1 = "select
|
|
2
|
+
pv.pacticipant_id as provider_id,
|
|
3
|
+
lpp.consumer_id,
|
|
4
|
+
max(v.id) as latest_verification_id
|
|
5
|
+
from verifications v
|
|
6
|
+
join latest_pact_publications_by_consumer_versions lpp
|
|
7
|
+
on v.pact_version_id = lpp.pact_version_id
|
|
8
|
+
join versions pv
|
|
9
|
+
on v.provider_version_id = pv.id
|
|
10
|
+
group by pv.pacticipant_id, lpp.consumer_id"
|
|
11
|
+
|
|
12
|
+
LATEST_VERIFICATION_IDS_FOR_CONSUMER_AND_PROVIDER_V2 = "select
|
|
13
|
+
provider_id,
|
|
14
|
+
consumer_id,
|
|
15
|
+
max(id) as latest_verification_id
|
|
16
|
+
from verifications v
|
|
17
|
+
group by provider_id, consumer_id"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
LATEST_VERIFICATION_IDS_FOR_CONSUMER_AND_PROVIDER_V3 = "select
|
|
21
|
+
provider_id,
|
|
22
|
+
consumer_id,
|
|
23
|
+
max(verification_id) as latest_verification_id
|
|
24
|
+
from latest_verification_id_for_pact_version_and_provider_version v
|
|
25
|
+
group by provider_id, consumer_id"
|
|
@@ -1,17 +1,10 @@
|
|
|
1
|
+
require_relative '../ddl_statements/latest_verification_ids_for_consumer_and_provider'
|
|
2
|
+
|
|
1
3
|
Sequel.migration do
|
|
2
4
|
up do
|
|
3
|
-
# The latest verification id for each consumer
|
|
5
|
+
# The latest verification id for each consumer/provider
|
|
4
6
|
create_view(:latest_verification_ids_for_consumer_and_provider,
|
|
5
|
-
|
|
6
|
-
pv.pacticipant_id as provider_id,
|
|
7
|
-
lpp.consumer_id,
|
|
8
|
-
max(v.id) as latest_verification_id
|
|
9
|
-
from verifications v
|
|
10
|
-
join latest_pact_publications_by_consumer_versions lpp
|
|
11
|
-
on v.pact_version_id = lpp.pact_version_id
|
|
12
|
-
join versions pv
|
|
13
|
-
on v.provider_version_id = pv.id
|
|
14
|
-
group by pv.pacticipant_id, lpp.consumer_id")
|
|
7
|
+
LATEST_VERIFICATION_IDS_FOR_CONSUMER_AND_PROVIDER_V1)
|
|
15
8
|
|
|
16
9
|
# The most recent verification for each consumer/consumer version tag/provider
|
|
17
10
|
latest_verifications = from(:verifications)
|
|
@@ -1,27 +1,15 @@
|
|
|
1
|
+
require_relative '../ddl_statements/latest_verification_ids_for_consumer_and_provider'
|
|
2
|
+
|
|
1
3
|
Sequel.migration do
|
|
2
4
|
up do
|
|
3
|
-
# The latest verification id for each consumer
|
|
5
|
+
# The latest verification id for each consumer/provider
|
|
4
6
|
create_or_replace_view(:latest_verification_ids_for_consumer_and_provider,
|
|
5
|
-
|
|
6
|
-
provider_id,
|
|
7
|
-
consumer_id,
|
|
8
|
-
max(id) as latest_verification_id
|
|
9
|
-
from verifications v
|
|
10
|
-
group by provider_id, consumer_id")
|
|
7
|
+
LATEST_VERIFICATION_IDS_FOR_CONSUMER_AND_PROVIDER_V2)
|
|
11
8
|
end
|
|
12
9
|
|
|
13
10
|
down do
|
|
14
|
-
# The latest verification id for each consumer
|
|
11
|
+
# The latest verification id for each consumer/provider
|
|
15
12
|
create_or_replace_view(:latest_verification_ids_for_consumer_and_provider,
|
|
16
|
-
|
|
17
|
-
pv.pacticipant_id as provider_id,
|
|
18
|
-
lpp.consumer_id,
|
|
19
|
-
max(v.id) as latest_verification_id
|
|
20
|
-
from verifications v
|
|
21
|
-
join latest_pact_publications_by_consumer_versions lpp
|
|
22
|
-
on v.pact_version_id = lpp.pact_version_id
|
|
23
|
-
join versions pv
|
|
24
|
-
on v.provider_version_id = pv.id
|
|
25
|
-
group by pv.pacticipant_id, lpp.consumer_id")
|
|
13
|
+
LATEST_VERIFICATION_IDS_FOR_CONSUMER_AND_PROVIDER_V1)
|
|
26
14
|
end
|
|
27
15
|
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require_relative 'migration_helper'
|
|
2
|
+
require_relative '../ddl_statements/latest_verification_ids_for_consumer_and_provider'
|
|
3
|
+
|
|
4
|
+
Sequel.migration do
|
|
5
|
+
up do
|
|
6
|
+
create_or_replace_view(:latest_verification_ids_for_consumer_and_provider,
|
|
7
|
+
LATEST_VERIFICATION_IDS_FOR_CONSUMER_AND_PROVIDER_V3)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
down do
|
|
11
|
+
create_or_replace_view(:latest_verification_ids_for_consumer_and_provider,
|
|
12
|
+
LATEST_VERIFICATION_IDS_FOR_CONSUMER_AND_PROVIDER_V2)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
version: "3"
|
|
2
|
+
|
|
3
|
+
services:
|
|
4
|
+
mysql:
|
|
5
|
+
image: mysql:5.7.28
|
|
6
|
+
command: --default-authentication-plugin=mysql_native_password
|
|
7
|
+
environment:
|
|
8
|
+
MYSQL_ROOT_PASSWORD: pact_broker
|
|
9
|
+
MYSQL_DATABASE: pact_broker
|
|
10
|
+
MYSQL_USER: pact_broker
|
|
11
|
+
MYSQL_PASSWORD: pact_broker
|
|
12
|
+
ports:
|
|
13
|
+
- "3306:3306"
|
|
14
|
+
|
|
15
|
+
tests:
|
|
16
|
+
build: .
|
|
17
|
+
depends_on:
|
|
18
|
+
- mysql
|
|
19
|
+
environment:
|
|
20
|
+
DATABASE_ADAPTER: docker_compose_mysql
|
|
21
|
+
PACT_BROKER_HIDE_PACTFLOW_MESSAGES: 'true'
|
|
22
|
+
INSTALL_MYSQL: 'true'
|
|
23
|
+
volumes:
|
|
24
|
+
- ./lib:/home/lib
|
|
25
|
+
- ./spec:/home/spec
|
|
26
|
+
- ./db:/home/db
|
|
27
|
+
- ./config.ru:/home/config.ru
|
|
28
|
+
- ./tasks:/home/tasks
|
|
29
|
+
- ./Rakefile:/home/Rakefile
|
|
30
|
+
- ./config:/home/config
|
|
31
|
+
- ./.rspec:/home/.rspec
|
|
32
|
+
- ./.rubocop:/home/.rubocop
|
|
33
|
+
- ./.gitignore:/home/.gitignore
|
|
34
|
+
- ./public:/home/public
|
|
35
|
+
- ./script/docker-container/test.sh:/usr/local/bin/test
|
|
36
|
+
entrypoint: dockerize
|
|
37
|
+
command: --wait tcp://mysql:3306 -timeout 60s test
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
version: "3"
|
|
2
|
+
|
|
3
|
+
services:
|
|
4
|
+
pact-broker:
|
|
5
|
+
build: .
|
|
6
|
+
ports:
|
|
7
|
+
- "9292:9292"
|
|
8
|
+
entrypoint: /usr/local/bin/start
|
|
9
|
+
environment:
|
|
10
|
+
- RACK_ENV=production
|
|
11
|
+
volumes:
|
|
12
|
+
- $PWD:/home
|
|
13
|
+
|
|
14
|
+
repro-issue:
|
|
15
|
+
build: .
|
|
16
|
+
depends_on:
|
|
17
|
+
- pact-broker
|
|
18
|
+
command: dockerize -wait http://pact-broker:9292 -timeout 30s /home/script/reproduce-issue.rb
|
|
19
|
+
environment:
|
|
20
|
+
- PACT_BROKER_BASE_URL=http://pact-broker:9292
|
|
21
|
+
volumes:
|
|
22
|
+
- $PWD:/home
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
FROM ruby:2.5.3-alpine
|
|
2
|
+
|
|
3
|
+
RUN apk update \
|
|
4
|
+
&& apk --no-cache add \
|
|
5
|
+
"build-base>=0.5" \
|
|
6
|
+
"bash>=4.4" \
|
|
7
|
+
"ca-certificates>=20190108" \
|
|
8
|
+
"git>=2.20" \
|
|
9
|
+
"postgresql-dev>=11.3" \
|
|
10
|
+
"sqlite-dev>=3.28" \
|
|
11
|
+
"sqlite>=3.28" \
|
|
12
|
+
"tzdata>=2019" \
|
|
13
|
+
"mariadb-dev>=10.3" \
|
|
14
|
+
&& rm -rf /var/cache/apk/*
|
|
15
|
+
|
|
16
|
+
RUN apk add --no-cache openssl less
|
|
17
|
+
|
|
18
|
+
ENV DOCKERIZE_VERSION v0.6.1
|
|
19
|
+
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
|
|
20
|
+
&& tar -C /usr/local/bin -xzvf dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
|
|
21
|
+
&& rm dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
WORKDIR /home
|
|
25
|
+
|
|
26
|
+
COPY Gemfile /home/Gemfile
|
|
27
|
+
COPY pact_broker.gemspec /home/pact_broker.gemspec
|
|
28
|
+
COPY lib/pact_broker/version.rb /home/lib/pact_broker/version.rb
|
|
29
|
+
COPY .gitignore /home/.gitignore
|
|
30
|
+
|
|
31
|
+
RUN gem install bundler -v '~>2.0.0' \
|
|
32
|
+
&& bundle install --jobs 3 --retry 3
|
|
33
|
+
|
|
34
|
+
COPY lib /home/lib
|
|
35
|
+
COPY db /home/db
|
|
36
|
+
COPY public /home/public
|
|
37
|
+
COPY tasks /home/tasks
|
|
38
|
+
COPY config.ru /home/config.ru
|
|
39
|
+
COPY Rakefile /home/Rakefile
|
|
40
|
+
COPY script /home/script
|
|
41
|
+
|
|
42
|
+
RUN ls /home
|