https://pact.io logo
Join Slack
Powered by
# pact-broker
  • p

    Paolo Laurenti

    08/18/2025, 10:01 AM
    @Paolo Laurenti has left the channel
  • t

    Tim Vahlbrock

    09/02/2025, 10:53 AM
    Hello, we're currently having with the OSS Pact Broker. Several pipelines report, that there are no pacts to verify, even if there are. The UI of the broker gives conflicting information. When I configure the matrix to show all contract versions on the 'main' branch of the consumer, it shows a several entries. However, when I configure it to only show the latest contracts of the main branch there are no entries at all. Does anyone know how this can be? We do have a script running each night that removes branches from the broker that are no longer existent in the repository, but calling the branch deletion endpoint shouldn't delete any contracts that are still on other branches, right? (I already tried this out with a local broker instance and that doesn't seem to be the case).
    blobwave 1
    y
    • 2
    • 10
  • a

    Ashish Garg

    10/07/2025, 5:35 PM
    Hi Team, I am using this pact broker image : https://github.com/pact-foundation/pact-broker-docker Recently I started getting intermittently 504 error when trying to connect to the broker. [ERROR] ExternalInstanceProviderPactTest.pactVerificationTestTemplate(PactVerificationContext) » RequestFailed Request to path 'pact-broker-url' failed with HTTP response 504. Is there anything I can do to fix this? I have the cleanup cron job already configured. Thanks in advance.
    blobwave 1
    y
    m
    • 3
    • 13
  • g

    GitHub

    10/30/2025, 2:28 PM
    Release - Version 2.117.0 New release published by github-actions[bot] #### Features • add provider pacts by branch endpoints (</pact-foundation/pact_broker/commit/0ccff2ec|0ccff2ec>) • PACT-4511/updated matrix decorator to return app instance for an env if present (#838) (</pact-foundation/pact_broker/commit/8bc24e72|8bc24e72>) • support provider states by branch/env (</pact-foundation/pact_broker/commit/f4db396f|f4db396f>) #### Bug Fixes • update hal relations for provider pacts (</pact-foundation/pact_broker/commit/b6e8e8e3|b6e8e8e3>) • drop pact-support pin (</pact-foundation/pact_broker/commit/3c7eb4c5|3c7eb4c5>) • fixed the text fixtures (#826) (</pact-foundation/pact_broker/commit/28035c27|28035c27>) • test • update expectation of webhook_certificates source format dependant on rb version (</pact-foundation/pact_broker/commit/5364c1b1|5364c1b1>) • deps • add mutex_m/csv/ostruct/pstore (</pact-foundation/pact_broker/commit/075d2522|075d2522>) pact-foundation/pact_broker
  • g

    GitHub

    11/02/2025, 6:00 PM
    Release - Version 2.117.1 New release published by github-actions[bot] #### Bug Fixes • dashboard loading after zeitwerk rename prep (</pact-foundation/pact_broker/commit/13112e2f|13112e2f>) pact-foundation/pact_broker
  • j

    Jan Měkota

    11/06/2025, 9:57 AM
    Hi guys, I would like to ask for some recommendation. We are running Pactbroker in Kubernetes. Currently we are using AWS RDS with these parameters
    Copy code
    Instance class: db.t3.medium
    vCPU: 2
    RAM: 4 GB
    Engine version: 13.18
    but lately we have been having problems with SQL queries timeouts
    Copy code
    Exception: Sequel::DatabaseError: PG::QueryCanceled: ERROR:  canceling statement due to statement timeout
    We are preparing to set up DB cleanup, but at the same time we are considering whether we should increase RDS resources. Do you have any experience with what Instance class would be suitable?
    m
    m
    y
    • 4
    • 10
  • t

    Tim Vahlbrock

    11/13/2025, 6:08 AM
    Hey there everyone! I have a question on the flow of working with pending pacts. We just ran into a problem, where the pact was verified on a feature branch and the results were published to the broker as part of the pipeline. This causes the provider tests on most other feature branches to fail. The documentation (and from I can tell the code as well), a pact is verified if either a) The contract has been verified on this branch before. b) The contract has been verified on any branch, that existed before this branch. Does this mean, the other feature branches would need to wait for the branch that originally verified the contract to be merged? Or shouldn't a feature branch upload verification results in the first place? For context: • the consumer team hasn't fully finished up setting their pact configuration and so far has only published pacts for their tagged versions (where the providerBranch is also set to the Tag). Their main branch in the Pact Broker is not yet set. • we are using WIP pacts What are we doing wrong?
    m
    y
    • 3
    • 15
  • f

    Fábio Rodrigues

    11/20/2025, 11:32 AM
    I have a question about pact-broker interface. Why the pact-broker cli in windows has the command like this:
    Copy code
    pact-broker can-i-merge --pacticipant <pacticipant> --version <version>....
    while in linux it is like this:
    Copy code
    pact-broker can-i-merge --pacticipant=<pacticipant> --version=<version>....
    if one is using the same script to call in linux or windows, it has to take into account what base OS it is running. Why not have one unified interface?
    y
    m
    • 3
    • 4
  • w

    Wojciech Wroblewski

    12/03/2025, 12:00 PM
    Hi team, it looks like the pact-broker was upgraded recently. We had some environments defined and visible in ui Settings section. Now it's empty - was it intended change? When listing envs via CLI I see all of those, but why those disappeared from ui?
    m
    • 2
    • 7
  • s

    Stanislav Vodetskyi

    12/10/2025, 8:05 PM
    Hi folks, can you please take a look? https://github.com/pact-foundation/pact-broker-docker/pull/306 I would like to suggest bumping the base image for the broker from ruby:3.3.10-alpine3.21 to apline3.23, because 3.21 has several vulnerabilities. There's so many versions of ruby images, that idk which to pick, so I picked the one that seemed the closest to the existing one. Is there some testing you'd like to run other than the github actions workflow on the PR?
    ❤️ 1
    y
    • 2
    • 5
  • j

    Jan Měkota

    12/15/2025, 12:20 PM
    Hi guys, in past we had to set the default branch for given pacticipant. We used
    Copy code
    pact-broker create-or-update-pacticipant --name=pacticipnat --main-branch=main
    Now I would like to remove the setting and leave empty to use default according to auto_detect_main_branch and main_branch_candidates But I did not find a way how to remove previously set
    Main branch
    by cli. Do you know any way please?
    m
    • 2
    • 2
  • t

    Tim Vahlbrock

    02/16/2026, 2:00 PM
    Hey there, I want to address the issue again that I addressed here already. The broker currently treats all pacts verified, when they have been verified on any branch, that has been created before the current branch. This may lead to unstable pipelines, because contracts may have been verified on a feature branch, but not yet merged into the default branch. This causes all newly created branches to have failing pipelines and be blocked from merging until the verifying branch is merged. Disabling verification publication on feature branches is not an option, because then can-i-merge fails for the provider. I want to propose again to only consider contracts as verified, if they have been verified on the default branch. This would also fit the usage of 'can-i-merge': > Checks if the specified pacticipant version is compatible with the configured main branch of each of the pacticipants with which it is integrated. In the original thread @Matt (pactflow.io / pact-js / pact-go) wrote that the current behavior might be by design, because the broker can't know wether a branch contains the contract implementations. This proposed would not eradicate the problem but rather make it occur slightly less often, because the base premise is more plausible. Like Matt already wrote, there is no way to calculate wether to include the contracts either way. The only way we can determine if the default branch still supports all contracts is, if we run the provider tests on the default branch, which we do with each commit anyway. I might be able to provide a PR for this, but I haven't had a lot to do with Ruby yet, so I can't guarantee anything.
    👋 1
    m
    • 2
    • 2
  • p

    Paul Williams

    02/27/2026, 6:34 AM
    Hi all. I'm currently investigating Pact to see how it might help my team identify and fix compatibility with rolling / blue - green deployments. Yesterday, I ran a scenario where I deliberately broke compatibility initially in the provider, and then the consumer. The Matrix and
    can-i-deploy
    tool agreed (correctly) with the initial provided based break, but seem to disagree on the consumer break. I attach images of the Matrix and
    can-i-deploy
    tool output. I will post further diagnostic info in a thread. Is this expected? I'm, perhaps incorrectly, expecting
    can-i-deploy
    to say "computer saids no...."
    blobwave 1
    m
    r
    y
    • 4
    • 41
  • p

    Paul Williams

    03/03/2026, 6:52 AM
    Having spent some playing, reading, and thinking, I'm still struggling to understand a couple of things that I hope someone can provide advice on. Firstly, I wonder whether this guidance about modelling long running deployments holds true with Releases? https://docs.pact.io/implementation_guides/jvm/provider/junit5spring Certainly in our circumstance, and probably most others, I'd argue that there is "an advantage to recording Provider v2 as being in production during the time period of the deployment". Being able to model the versions being rolled off and rolled on provides a convenient way to reference the interesting versions that the
    can-i-deploy
    tool could work against to answer whether a deployment is safe. Is the key concern here premature assignment of 'deployed' or 'released' before the actual deployment? Perhaps this is a nomenclature issue or your trying to maintain strict definitions of the vocabulary being used? The scenario modelling I've conducted over the past few days suggests that using
    record-release
    and
    record-support-end
    alongside a
    production
    environment does provide the general and backwards compatibility requirements we have during blue / green deployments. Well, issue 903 withstanding. However, even though it works, I'm not keen to follow an "anti-pattern" as the document suggests. Are there specific technical or roadmap reasons why this approach really shouldn't be used? If we do use Pact going forwards, can anyone advise what consumer selectors would be suitable for our "Can I deploy" goal? We use trunk based development and won't necessarily deploy the latest versions at any specific time, and certainly don't deploy every version to production. Perhaps an illustrative matrix could provide an example:
    Copy code
    +--------------------------+--------------------------+
    | Consumer version         | Provider version         |
    +--------------------------+--------------------------+
    | 1                        | 1                        |
    | 2                        | 2 deployed to prod       |
    | 3 deployed to prod       | 3                        |
    | 4                        | 4 want to deploy to prod |
    | 5 want to deploy to prod | 5                        |
    | 6                        |                          |                     |
    +--------------------------+--------------------------+
    Trunk based means branching selectors won't work. tags are deprecated(?), latest wouldn't work due to consumer@6 and provider@5. From https://docs.pact.io/pact_broker/advanced_topics/consumer_version_selectors, it does appear that
    { "deployedOrReleased": true }
    would be most suitable if not for requiring 'premature release of customer@5 and provider@4. However, in my project's existing nomenclature, these versions would have already been released by Maven... Want I want to obtain is assurance of compatibility between consumer@3, consumer@5, provider@2 and provider@4 to ensure blue/green would work?
    m
    • 2
    • 4
  • m

    Maria Eichman

    03/12/2026, 5:59 PM
    Hello there! Pact-Cli docs/help for
    describe-version
    mention
    --environment
    , but when I run it the command errors. From what I can tell, this may be a version mismatch or unsupported option in the CLI build I’m using Version is 1.77.0 and I pull lates from docker.
    ➜  ~ pact-broker describe-version --pacticipant test --broker-base-url=$PACT_BROKER_URL --environment production --deployed
    Unknown switches "--environment", "--deployed"
    This is a warning rather than an error so as not to break backwards compatibility. To raise an error for unknown options set PACT_BROKER_ERROR_ON_UNKNOWN_OPTION=true
    ERROR: "pact-broker describe_version" was called with arguments ["--environment", "production", "--deployed"]
    Usage: "pact-broker describe-version -a, --pacticipant=PACTICIPANT -b, --broker-base-url=BROKER_BASE_URL"
    Is
    describe-version --environment
    expected to work in current Pact CLI version?
    y
    • 2
    • 3
  • n

    Norbert Gulácsi

    03/25/2026, 12:17 PM
    @Norbert Gulácsi has left the channel
  • g

    GitHub

    04/17/2026, 8:32 AM
    Release - Version 2.119.0 New release published by github-actions[bot] Features • support customising webhook requests (</pact-foundation/pact_broker/commit/d20a8274|d20a8274>) • Optimize WIP Query Performance to Prevent Timeouts on Large Datasets (#902) (</pact-foundation/pact_broker/commit/711ac3c6|711ac3c6>) Bug Fixes • add missing import and small improvement to batch delete (#899) (</pact-foundation/pact_broker/commit/2e83d012|2e83d012>) • new unit test failure (</pact-foundation/pact_broker/commit/6c39e927|6c39e927>) • avoid N+1 cascade (</pact-foundation/pact_broker/commit/681d98d9|681d98d9>) • dont create index for mysql (</pact-foundation/pact_broker/commit/1ec72cc8|1ec72cc8>) • Pacticipant API returning undeployed versions in pacticipant deployed-environments endpoint (#889) (</pact-foundation/pact_broker/commit/e217d3ba|e217d3ba>) • PACT-5504 • use batch delete to speed up deletion (</pact-foundation/pact_broker/commit/e908035a|e908035a>) pact-foundation/pact_broker
    🎉 1
  • b

    Ben Minter

    05/01/2026, 11:12 AM
    Hi, I am trying to integrate datadog APM with the pact broker, as we're dealing with slowness and I'd like some runtime metrics to understand where the slowness is coming from. The issue I am running into is that the pact-broker image is built with alpine which is unsupported for datadog apm. I was wondering if there were plans to support a debian based image. I am trying to avoid forking and rebuilding myself. I was also wondering if you would consider supporting a prometheus scrape with runtime metrics from the puma runtime?
    r
    m
    • 3
    • 7
  • e

    Eric Muller

    06/16/2026, 5:41 PM
    Hi all, any chance a new pact-broker-docker release could be cut to pickup the bumped dependencies ~ https://github.com/pact-foundation/pact-broker-docker/issues/334 ?
    y
    • 2
    • 2
  • g

    GitHub

    07/16/2026, 11:01 AM
    Release - Version 2.120.0 New release published by github-actions[bot] Features • expose released environments on branch/tag version list endpoints (#969) (</pact-foundation/pact_broker/commit/bea68a7d|bea68a7d>) • expose released environments on version API (#963) (</pact-foundation/pact_broker/commit/d6f7f17b|d6f7f17b>) • return more webhooks attributes in logs decorator (#961) (</pact-foundation/pact_broker/commit/4e2d1b13|4e2d1b13>) • paginate pacticipants_for_label (</pact-foundation/pact_broker/commit/088ff444|088ff444>) • add limit to stale branch delete (#933) (</pact-foundation/pact_broker/commit/406c20f3|406c20f3>) • change branch sort order, most recently updated first (#929) (</pact-foundation/pact_broker/commit/b5215a39|b5215a39>) • clean • expose branch_deletion_limit on CleanTask (#938) (</pact-foundation/pact_broker/commit/540afa3d|540afa3d>) • add stale branch lifecycle and automated cleanup (#912) (</pact-foundation/pact_broker/commit/1ba6354f|1ba6354f>) • PACT-6253 • add json_schemer as explicit gem dependency (#916) (</pact-foundation/pact_broker/commit/dc8910ce|dc8910ce>) Bug Fixes • spec • rebuild success-after-latestby fixture with distinct provider versions (</pact-foundation/pact_broker/commit/778d25d2|778d25d2>) • rebuild latestby filtering fixtures to genuinely pin the ordering contract (</pact-foundation/pact_broker/commit/9276aa79|9276aa79>) • broken SQL in pacticipants_for_label resource (#944) (</pact-foundation/pact_broker/commit/bf37cdfc|bf37cdfc>) • use cvpv when checking can-i-deploy against an environment (#903) (#934) (</pact-foundation/pact_broker/commit/7163652d|7163652d>) • remove deadcode, improve testing with UTC (#924) (</pact-foundation/pact_broker/commit/76c2407a|76c2407a>) • join with pacticipant when query main branch (#921) (</pact-foundation/pact_broker/commit/3dae89be|3dae89be>) pact-foundation/pact_broker
    🙏 2
  • p

    Paul Williams

    07/27/2026, 1:17 PM
    Hi. So, I'm finally able to try and test the fix for github.com/pact-foundation/pact_broker/issues/903 . It is hopefully fixed in github.com/pact-foundation/pact_broker/…/v2.120.0 . However, the latest docker version available looks to be 2.119 hub.docker.com/r/pactfoundation/pact-broker/tags Is this right, or should there be a 2.120 release available in docker hub?
    y
    m
    • 3
    • 30
  • p

    Paul Williams

    07/27/2026, 1:18 PM
    When I downloaded and re-ran
    latest
    , the hal browser still reported
    x-pact-broker-version: 2.119.0
    ...
  • g

    GitHub

    09/04/2026, 3:12 AM
    Deployment to rubygems by pact-foundation[bot] pact-foundation/pact_broker
  • g

    GitHub

    09/04/2026, 3:12 AM
    Release - v2.121.0 New release published by github-actions[bot] 🚀 Features • Add EnvironmentVersions resource • Raise a clear error when a MySQL adapter is configured • Add tri-state log_otel_enabled configuration • Add OpenTelemetry log appender setup • Add trace-aware JSON log formatter • Wire OTel appender and trace-aware JSON formatter into config • Add endpoint to get versions released or deployed 🐛 Bug Fixes • Require stringio in the configuration docs generator • Use semantic_logger JSON helper for trace-enriched log output • Defer debug log string interpolation in pact publish • (matrix) Honour use_case_sensitive_resource_names when resolving selectors • Escaping for the XSS findings, regex safety for the ReDoS findings • SQL injection vulnerability 🚜 Refactor • Remove MySQL strict-mode handling from DB connection setup • Remove MySQL-specific query and upsert branches ⚡ Performance • (matrix) Flatten selector union to prevent quadratic query nesting • (matrix) Filter matrix rows by the already-resolved version ids 🎨 Styling • (matrix) Build the baseline name lists the idiomatic way 📚 Documentation • Remove MySQL references • Document log_otel_enabled configuration • Describe the pull request release process 🧪 Testing • Unskip MySQL-only pending tests and drop MySQL comments • Fix idempotency spec to avoid loading absent OTel gem • (matrix) Add query-profiling baseline tooling • (matrix) Make the query baseline reproducible enough to diff • (matrix) Add a baseline shape for can-i-deploy at integration scale • (matrix) Pin the resolved and SQL-derived version ids as equivalent • Cover the tag name as a literal string when deleting a tag 📦 Other • Remove unused triage board workflow 🛠️ Miscellaneous Tasks • Remove mysql2 gem • (ci) Remove MySQL job, tooling, and config • Remove remaining MySQL references from Dockerfile, comment, and backwards-compat Gemfile • Reject blank pacticipant names in pact publish validation • Require Ruby 3.2+ for semantic_logger v5 • Delete stale branches first • Select the local Postgres version with a single variable • Align changelog heading levels with git-cliff's • Add git-cliff config and the release script • (ci) Release the gem by merging a pull request • (ci) Reduce CI on draft PRs • (ci) Rebase when conflicted only pact-foundation/pact_broker
    🎉 2
    thank you 1
  • g

    GitHub

    09/07/2026, 7:27 AM
    Release - v2.143.0 New release published by github-actions[bot] 🐛 Bug Fixes • (shell) Clear the shellcheck warnings • (docker) Clear the hadolint findings • (release) Write VERSION with a trailing newline 📦 Dependencies • (deps) Update the pact_broker gem to 2.121.0 🎨 Styling • Format the shell scripts with shfmt • End every file with a single newline • Format the yaml with yamlfix 📚 Documentation • Describe the pull request release process • (releasing) Explain the tag scheme rather than the bootstrap step • Clear the markdown lint findings • Correct the spelling in the prose and comments • Have important deps trigger minor bump 📦 Other • Remove unused triage board workflow 🛠️ Miscellaneous Tasks • Align changelog heading levels with git-cliff's • Add git-cliff config and the release script • Move the git half of the release out of the shell scripts • (ci) Release images by merging a pull request • (ci) Open a pull request for the pact_broker gem bump • (ci) Let Renovate open the pact_broker gem update • Keep image-shipped dependency bumps in the changelog • (ci) Use best-practices renovate config • (ci) Cleanup unused github workflows • (ci) Notify docs.pact.io on release rather than on every push • (ci) Run the full test suite only on ready pull requests • Declare the indentation style in an editorconfig • (script) Match the shebangs to how the scripts are run • Lint the repository with prek • (ci) Keep pg 17 in one docker compose • Use main as default branch • (debian) Apply security updates during image build • (ci) Audit the image on the release pull request pact-foundation/pact-broker-docker
    cool doge flip 1
  • g

    GitHub

    09/16/2026, 10:56 AM
    Deployment to rubygems by pact-foundation[bot] pact-foundation/pact_broker
    🎉 1
  • g

    GitHub

    09/16/2026, 10:56 AM
    Release - v2.121.1 New release published by github-actions[bot] 🐛 Bug Fixes • Pin rack-proxy to 0.7.7 due to failures • (test) Remove pact rack-proxy and webrick fixes, fixed in pact-ruby src • (test) Drop Term::ANSIColor from vendored match_pact matcher • Pass JSON.parse options as keywords for json 3 🧪 Testing • Add updated provider states for pact-broker-cli 📦 Other • Publish pact verification results from the v2 job • Align checkout pin comment with the other jobs 🛠️ Miscellaneous Tasks • (ci) Remove notification to pact-broker-docker • (test) Workaround for empty body request • (test) Pact-ruby v2 use broker • (test) Migrate to pact-ruby v2 • (test) Vendor rspec-pact-matcher code • Rubocop • Rubocop • (test) Preserve branch/version logic • (test) Alias pact:verify to pactv2verify, drop stub tasks • (test) Remove provider-state files pact-ruby v2 never loads • (test) Remove the unloaded Pact Ruby provider states pact-foundation/pact_broker
  • g

    GitHub

    09/17/2026, 4:48 AM
    Deployment to rubygems by pact-foundation[bot] pact-foundation/pact_broker
    🎉 1
  • g

    GitHub

    09/17/2026, 4:48 AM
    Release - v2.121.2 New release published by github-actions[bot] 🐛 Bug Fixes • Require pact/support/matchers for pact-support 2.0 📦 Other • Boot the app with runtime dependencies only pact-foundation/pact_broker
  • g

    GitHub

    09/17/2026, 7:38 AM
    Release - v3.0.0 New release published by github-actions[bot] 🚀 Features • (docker) [breaking] Schedule the database clean in ruby instead of supercronic
    PACT_BROKER_DATABASE_CLEAN_CRON_SCHEDULE
    is parsed by fugit. It does not support
    ?
    ,
    W
    and
    L
    cron syntax. The
    supercronic
    binary and
    /pact_broker/crontab
    have been removed. • (ci) Open a release PR when the published image goes stale • [breaking] Drop the linux/arm/v7 image
    linux/arm/v7
    images are no longer published. The
    pactfoundation/pact-broker
    manifest lists cover
    linux/amd64
    and
    linux/arm64
    only. 🐛 Bug Fixes • Reset compose state before the clean suite runs • Assert clean survivor identity and isolate compose projects • (security) Scan in tiers from one pinned implementation • (security) Replace the ignore list with dated, justified entries • (ci) Audit every published platform and report to code scanning • (ci) Scan the artefact that ships, and build it natively • (docker) Stop the clean scheduler inside the grace period • (test) Probe the heartbeat with ruby so the shutdown test runs on debian 📦 Dependencies • (deps) [breaking] Drop the mysql2 gem
    PACT_BROKER_DATABASE_ADAPTER=mysql2
    no longer works. Migrate to postgres. • (deps) Update nginx:1.31.6-alpine docker digest to d0a6faa • (deps) Update the pact_broker gem to 2.121.1 (#388) 🚜 Refactor • (docker) Split the alpine build into build and runtime stages • (docker) Build both distributions from one Dockerfile • (compose) Move the stacks into per-example directories • (ci) Name the distribution once as DISTRO 📚 Documentation • Describe the rebuilt image and drop stale references 🧪 Testing • Stop the integration suite rewriting tracked compose files • Cover the scheduled database clean end to end • Cover the sqlite quick-start adapter • Assert
    docker stop
    ends inside its grace period • (docker) Pin the documented cron rejections in the contract stage 🛠️ Miscellaneous Tasks • (docker) Delete the dev-only base image helpers • Tighten the runtime contract and refresh the stale compose example • (ci) Run the scan-tier check and keep the clean-tree guard in the workflow • (ci) Check commit messages on pull requests • Render breaking-change footers in the changelog • (ci) Run prek through its own action pact-foundation/pact-broker-docker
    cool doge flip 1