https://pact.io logo
#general
Title
# general
d

Daniel Flieger

05/06/2022, 6:30 AM
Hey there! I was wondering if it is possible to use the „pending pacts” feature & „can I deploy” at the same time when using „Platinum” or „Diamand” in pact nirvana? As it seems that „can I deploy” needs a successful verification on provider side first before it can be deployed. In my example I want to introduce a new „State” on consumer side which has not be implemented on provider side. So I was wondering if I can deploy without having the new state in the provider. Thanks!
b

Beth (pactflow.io/Pact Broker/pact-ruby)

05/06/2022, 6:31 AM
if you want to add a new provider state, but keep the consumer deployable, you generally make the change on the branch of the consumer, then implement it in the provider, then merge in the consumer branch
d

Daniel Flieger

05/06/2022, 6:40 AM
Thank you for the blazing fast feedback. I’ll gone a have look into the workshop. I may missed something in the concept then.
b

Beth (pactflow.io/Pact Broker/pact-ruby)

05/06/2022, 6:41 AM
using pending will stop the provider breaking, and the provider will still be able to deploy against the existing consumer in prod, but you won't be able to deploy the consumer version with the new provider state until the provider implements it and deploys that version.
d

Daniel Flieger

05/06/2022, 6:50 AM
Ok. But when the consumer with his new state is in a feature branch which has not been merged yet what’s the reason to have “pending pacts” anyway then? As I understood the provider tries to verify itself against main/master. Where the new state does not exist at this point in time.
b

Beth (pactflow.io/Pact Broker/pact-ruby)

05/06/2022, 6:51 AM
if you follow the process perfectly, then you don't need to enable pending pacts. but nobody every follows a process 100% of the time!
s

Stefano Lucka

05/06/2022, 6:51 AM
Hi Beth, we implemented Platinum by example of the awesome CI/CD workshop. While we are trying it out on a daily basis, we more and more see that Platinum is going to tightly couple a consumer and his provider. Given Convey's law and having a working model with high concurrent development process on big company initiatives, this in practice usually means that a consumer may be faster in developing a new feature than a provider can actually implement it (assuming consumer and provider have aligned on a new API spec first). This would put the consumer in a position to ask the provider to implement his new/changed PACT for him to unblock his PR pipeline. For this reason we have the necessity to still be able to work independently. We solve this usually by utilizing feature toggles, so that the consumer can deploy his work already even to production, regardless of whether the provider implemented the feature already or not. This comes with the drawback of loosing security from a test perspective though. We too think, that the platinum step is actually worth having, but when we roll out or POC solution on company level I think this is going to be a problem, hence we are now starting with a first POC approach to not use Platinum but rely on pending-pacts first to unblock the consumer from merging his PR.
👍🏼 1
b

Beth (pactflow.io/Pact Broker/pact-ruby)

05/06/2022, 6:53 AM
4 Views