Anton Yakutovich
06/23/2022, 12:14 PMNoMethodError - undefined method `request_uri' for #<URI::Generic ?>
Anton Yakutovich
06/23/2022, 12:16 PMPACT_BROKER_BASE_URL
and PACT_BROKER_TOKEN
are specified the same way as in the example repo. Don't understand what is failing exactly:
PACTICIPANT=ghapi \
""docker run --rm -v /home/runner/work/marketplace-api/marketplace-api:/app -w "/app" -e PACT_BROKER_BASE_URL -e PACT_BROKER_TOKEN pactfoundation/pact-cli"" pactflow publish-provider-contract \
/app/src/test/resources/openapi/swagger.json \
--provider ghapi \
--provider-app-version fefdb4369a5ef60abdfc19ac6edf82aa8d7d6794 \
--branch ci-publish_reports \
--content-type application/json \
--verification-exit-code=0 \
--verification-results /app/target/failsafe-reports/failsafe-summary.xml \
--verification-results-content-type text/xml \
--verifier junit5
Matt (pactflow.io / pact-js / pact-go)
--verbose
flag, that should print out detail about the arguments it received and what requests it’s firingBeth (pactflow.io/Pact Broker/pact-ruby)
Beth (pactflow.io/Pact Broker/pact-ruby)
$ irb
irb(main):001:0> URI("foo").request_uri
NoMethodError (undefined method `request_uri' for #<URI::Generic foo>)
irb(main):002:0> URI("<https://foo>").request_uri
=> "/"
Beth (pactflow.io/Pact Broker/pact-ruby)
<URI::Generic ?>
that suggest to me that the PACT_BROKER_BASE_URL env var is empty..Beth (pactflow.io/Pact Broker/pact-ruby)
<URI::Generic foo>
Matt (pactflow.io / pact-js / pact-go)
Anton Yakutovich
06/24/2022, 5:20 AM--verbose
flag:
NoMethodError - undefined method `request_uri' for #<URI::Generic ?>
/usr/lib/ruby/gems/2.7.0/gems/pact_broker-client-1.64.0/lib/pact_broker/client/hal/http_client.rb:49:in `create_request'
/usr/lib/ruby/gems/2.7.0/gems/pact_broker-client-1.64.0/lib/pact_broker/client/hal/http_client.rb:25:in `get'
/usr/lib/ruby/gems/2.7.0/gems/pact_broker-client-1.64.0/lib/pact_broker/client/hal/link.rb:41:in `get'
/usr/lib/ruby/gems/2.7.0/gems/pact_broker-client-1.64.0/lib/pact_broker/client/hal/link.rb:45:in `get!'
/usr/lib/ruby/gems/2.7.0/gems/pact_broker-client-1.64.0/lib/pact_broker/client/hal_client_methods.rb:24:in `index_resource'
/usr/lib/ruby/gems/2.7.0/gems/pact_broker-client-1.64.0/lib/pact_broker/client/versions/create.rb:48:in `branch_versions_supported?'
/usr/lib/ruby/gems/2.7.0/gems/pact_broker-client-1.64.0/lib/pact_broker/client/versions/create.rb:11:in `do_call'
/usr/lib/ruby/gems/2.7.0/gems/pact_broker-client-1.64.0/lib/pact_broker/client/base_command.rb:25:in `call'
/usr/lib/ruby/gems/2.7.0/gems/pact_broker-client-1.64.0/lib/pact_broker/client/base_command.rb:13:in `call'
/usr/lib/ruby/gems/2.7.0/gems/pact_broker-client-1.64.0/lib/pactflow/client/provider_contracts/publish.rb:37:in `create_branch_version_and_tags'
/usr/lib/ruby/gems/2.7.0/gems/pact_broker-client-1.64.0/lib/pactflow/client/provider_contracts/publish.rb:24:in `do_call'
/usr/lib/ruby/gems/2.7.0/gems/pact_broker-client-1.64.0/lib/pact_broker/client/base_command.rb:25:in `call'
/usr/lib/ruby/gems/2.7.0/gems/pact_broker-client-1.64.0/lib/pact_broker/client/base_command.rb:13:in `call'
/usr/lib/ruby/gems/2.7.0/gems/pact_broker-client-1.64.0/lib/pactflow/client/cli/provider_contract_commands.rb:36:in `publish_provider_contract'
/usr/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/usr/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/usr/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/usr/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/base.rb:485:in `start'
/usr/lib/ruby/gems/2.7.0/gems/pact_broker-client-1.64.0/lib/pact_broker/client/cli/custom_thor.rb:23:in `start'
/usr/lib/ruby/gems/2.7.0/gems/pact_broker-client-1.64.0/bin/pactflow:4:in `<top (required)>'
/usr/bin/pactflow:25:in `load'
/usr/bin/pactflow:25:in `<main>'
Anton Yakutovich
06/24/2022, 5:23 AMPACT_BROKER_BASE_URL: <https://mycompany.pactflow.io>
PACT_BROKER_TOKEN: ${{ secrets.PACT_BROKER_TOKEN }}
Beth (pactflow.io/Pact Broker/pact-ruby)
Beth (pactflow.io/Pact Broker/pact-ruby)
$ PACT_BROKER_BASE_URL="" be bin/pact-broker publish example/scripts/pact.json --consumer-app-version 1
PactBroker::Client::Error - Please specify the pact_broker_base_url
Beth (pactflow.io/Pact Broker/pact-ruby)
Beth (pactflow.io/Pact Broker/pact-ruby)
Beth (pactflow.io/Pact Broker/pact-ruby)
export PACT_BROKER_BASE_URL=""
bundle exec bin/pactflow publish-provider-contract \
script/oas.yml \
--provider Foo \
--provider-app-version 1013b5650d61214e19f10558f97fb5a3bb082d44 \
--branch main \
--tag dev \
--specification oas \
--content-type application/yml \
--verification-exit-code 0 \
--verification-results script/verification-results.txt \
--verification-results-content-type text/plain \
--verification-results-format text \
--verifier my-custom-tool \
--verifier-version "1.0" \
--verbose
Beth (pactflow.io/Pact Broker/pact-ruby)
NoMethodError - undefined method `request_uri' for #<URI::Generic ?>
/pact_broker/client/hal/http_client.rb:49:in `create_request'
/pact_broker/client/hal/http_client.rb:25:in `get'
/pact_broker/client/hal/link.rb:41:in `get'
/pact_broker/client/hal/link.rb:45:in `get!'
/pact_broker/client/hal_client_methods.rb:24:in `index_resource'
/pact_broker/client/versions/create.rb:48:in `branch_versions_supported?'
/pact_broker/client/versions/create.rb:11:in `do_call'
/pact_broker/client/base_command.rb:25:in `call'
/pact_broker/client/base_command.rb:13:in `call'
/pactflow/client/provider_contracts/publish.rb:37:in `create_branch_version_and_tags'
/pactflow/client/provider_contracts/publish.rb:24:in `do_call'
/pact_broker/client/base_command.rb:25:in `call'
Beth (pactflow.io/Pact Broker/pact-ruby)
unset PACT_BROKER_BASE_URL
then I get an error
No value provided for required options '--broker-base-url'
Beth (pactflow.io/Pact Broker/pact-ruby)
Matt (pactflow.io / pact-js / pact-go)
Matt (pactflow.io / pact-js / pact-go)
Beth (pactflow.io/Pact Broker/pact-ruby)
export PACT_BROKER_BASE_URL=""
bundle exec bin/pactflow publish-provider-contract \
script/oas.yml \
--provider Foo \
--provider-app-version 1013b5650d61214e19f10558f97fb5a3bb082d44 \
--branch main \
--tag dev \
--specification oas \
--content-type application/yml \
--verification-exit-code 0 \
--verification-results script/verification-results.txt \
--verification-results-content-type text/plain \
--verification-results-format text \
--verifier my-custom-tool \
--verifier-version "1.0" \
--verbose
No value provided for required option --broker-base-url or environment variable PACT_BROKER_BASE_URL
Anton Yakutovich
06/24/2022, 6:26 AMcp -n .env.example .env || true
So, on github runner it creates an .env
that looks like:
PACT_BROKER_BASE_URL=
PACT_BROKER_TOKEN=
Beth (pactflow.io/Pact Broker/pact-ruby)
Anton Yakutovich
06/24/2022, 6:28 AMMatt (pactflow.io / pact-js / pact-go)
Anton Yakutovich
06/24/2022, 6:38 AM.env
target in the pact related actions: https://github.com/pactflow/example-bi-directional-provider-dredd/blob/master/Makefile#L34
For me it doesn't expose variables from the existing .env
file on macos. So I ended up adding the snippet on the top of Makefile:
# Export all variable to sub-make if .env exists
ifneq (,$(wildcard ./.env))
include .env
export
endif
Am I doing it wrong way?