GitHub
05/11/2023, 9:32 AMtraveling-ruby
due to errors in 3.2.2
seen in pact_mock-service
• Identify all consumers of pact-ruby-standalone
• Document "Rube Goldberg" machine for
• Pact Ruby Reference Core as referenced here in the dependency graph of doom
• Update all affected repos
• Test all affected repos
Note:- For full background, multi-repo tracking, see pact-foundation/devrel#10
Why?
• Users of our pact-ruby-standalone project, have been stuck on a packaged Ruby 2.4 run-time due to the build system traveling-ruby, being out-of-maintainence. It has been revived by your very own Devo Avo, into the 21st century with
• Update to Ruby 3.1.2 & 3.2.2
• Support for Arm64 Darwin
• Support for Aarch64 Linux
• Support for x86 and x64 windows
What happened?
• pact-ruby-standlaone 2.0.0 was released
• Issues identified by users / maintainers
• Requirement to install libyaml-dev
for debian based users
• Error when writing pact files for pact-go-v1
where users are asked to pin the version of the standalone, but provided a script which returns the latest.
Root cause?
• An error in pact_mock-service
was reproducible in CI, when using Ruby 3.2.2
• Downgrading to Ruby 3.1.2
resolved the issue.
Related issues
• rapid7/metasploit-framework#17593
What is this PR doing?
• Releasing pact-ruby-standalone with ruby 3.1.2
• Updated the release note process so we
• Provide install support via our script for windows users
• Provide a more complete autogenerated README, which is committed back to the repo at release time
Ruby Goldberg Machine
graph TD;
pact-support;
pact-support-->pact-mock_service;
pact-support-->pact-message;
pact-mock_service-->pact-message;
pact-message-->pact-provider-verifier;
pact-->pact-provider-verifier;
pact_broker-client;
pact-->pact-ruby-standalone;
pact-mock_service-->pact-ruby-standalone;
pact-support-->pact-ruby-standalone;
pact-provider-verifier-->pact-ruby-standalone;
pact_broker-client-->pact-ruby-standalone;
pact-message-->pact-ruby-standalone;
pact-->pact-ruby-cli;
pact-ruby-standalone-->homebrew-pact-ruby-standalone;
pact-ruby-standalone-->pact-python;
pact-ruby-standalone-->pact-php;
pact-ruby-standalone-->pact-node-->pact-js-v9;
pact-js-v9-->jest-pact;
pact-js-v9-->mocha-pact;
pact-js-v9-->nestjs-pact;
pact-ruby-standalone-->pact-go-v1;
pact-ruby-standalone-->pact-net;
pact-ruby-standalone-->pact-consumer-swift;
Ruby Standalone Consumers Goldberg Machine
graph TD;
pact-->pact-ruby-standalone;
pact-mock_service-->pact-ruby-standalone;
pact-support-->pact-ruby-standalone;
pact-provider-verifier-->pact-ruby-standalone;
pact_broker-client-->pact-ruby-standalone;
pact-message-->pact-ruby-standalone;
pact-ruby-standalone-->homebrew-pact-ruby-standalone;
pact-ruby-standalone-->pact-python;
pact-ruby-standalone-->pact-php;
pact-ruby-standalone-->pact-node-->pact-js-v9;
pact-js-v9-->jest-pact;
pact-js-v9-->mocha-pact;
pact-js-v9-->nestjs-pact;
pact-ruby-standalone-->pact-go-v1;
pact-ruby-standalone-->pact-net;
pact-ruby-standalone-->pact-consumer-swift;
Pact Ruby Standalone components
• Pact Broker Client
• pact-foundation/pact_broker-client#134
• Pact Provider Verifier
• pact-foundation/pact-provider-verifier#103
• Pact Support
• pact-foundation/pact-support#98
• Pact Message Ruby
• pact-foundation/pact-message-ruby#22
• Pact Mock Service
• pact-foundation/pact-mock_service#141
• Pact Ruby
• pact-foundation/pact-ruby#292
• pact-foundation/pact-ruby#293
Pact Ruby Standalone Consumers
Versions
Tested using
• traveling ruby release https://github.com/YOU54F/traveling-ruby/releases/tag/rel-20230504
• with Ruby 3.1.2
• pact-ruby-standalone release https://github.com/YOU54F/pact-ruby-standalone/releases/tag/v2.2.1
• with Ruby 3.1.4
Test runs
• homebrew-pact-ruby-standalone
• x86_64
• arm64
• pact-python
• x86_64 https://github.com/YOU54F/pact-python/actions/runs/4941346866
• arm64 https://cirrus-ci.com/build/6108629787475968
• pact-node
• x86_64 https://github.com/YOU54F/pact-js-core/actions/runs/4941248126
• arm64 https://cirrus-ci.com/build/5418915182936064
• pact-js-core
• x86_64 https://github.com/YOU54F/pact-js-core/actions/runs/4941170981
• arm64 https://cirrus-ci.com/build/5969803895111680
• pact-php
• x86_64 https://github.com/YOU54F/pact-php/actions/runs/4941467873
• arm64 https://cirrus-ci.com/build/5862300863692800
• pact-go-v1
• x86_64 https://github.com/YOU54F/pact-go/actions/runs/4941862361
• arm64 https://cirrus-ci.com/build/6622000215490560
• pact-net
• x86_64
• arm64
• pact-consumer-swift
• x86_64
• arm64
• example-consumer-golang
• https://github.com/pactflow/example-consumer-golang/actions/runs/4941971784
Pull requests to consume new 3.1.2 package
note - Some PR's are merged to consumer the• Homebrew Pact Ruby Standalone • pact-foundation/homebrew-pact-ruby-standalone#92 • Pact-Js-Core • 9.x • https://github.com/pact-foundation/pact-js-core/tree/pact-node • 13.x • pact-foundation/pact-js-core#445 • Pact-Python • pact-foundation/pact-python#342 • Pact-PHP • pact-foundation/pact-php#309 pact-foundation/pact-ruby-standalone ✅ All checks have passed 16/16 successful checksruntime and will be updated, and raised as new PR's to consume this3.2.2
runtime3.1.2
GitHub
05/18/2023, 11:01 PM