Today we’re introducing the ability to configure breaking change policy enforcement in the BSR UI for customers on our Enterprise plan, which provides a guarantee that breaking schema changes cannot be mistakenly deployed through the BSR and cause downstream outages or data loss.
buf.yaml
files to each repository.In addition to these new features, we’re excited to share some details on other work we’re doing to provide administrators with new governance and data policy controls for Protobuf schemas.
BSR admins now have a set of controls to enable breaking change prevention across their entire Enterprise instance, and to customize which set of rules should be enforced. When enabled, prevention levels can be set to FILE
(the default) to protect from breaking source code and wire compatibility or WIRE_JSON
to protect from breaking only wire compatibility.
Once configured, every BSR module will automatically adhere to these rules, and any attempt to push non-compliant schemas will be rejected by the BSR. These settings take precedence over any breaking change options specified in buf.yaml
files and ensure server-wide compliance with breaking change rules:
Engineers are also able to see the rules that are being applied to their module's schemas within the BSR UI:
To enable these settings, head over to your BSR admin settings page or check out the documentation. Note that this feature is only available to customers on our Enterprise plan.
Packages that require frequent iteration and are subject to regular breaking changes, such as those still in alpha, can be opted out of breaking change enforcement by BSR admins. For example, enabling the “Allow breaking changes to unstable packages” option will allow breaking changes to be pushed to the following packages the BSR:
foo.bar.v1alpha1
foo.bar.v1beta1
foo.bar.v1test
buf.yaml
configsLocal setups and CI configurations that currently leverage buf.yaml
files to assign breaking change rules will continue to work when running buf breaking
locally. However, the following behavior changes should be noted:
buf push
.buf push
if the breaking change configuration in the local buf.yaml
is less strict than what is being enforced by the BSR (for example, if you have WIRE_JSON
locally and FILE
in the BSR). A warning will also be shown if excluded files are present in the local buf.yaml
, as exclusions cannot be specified in the BSR UI.Instance-wide breaking change prevention is our first step toward a more comprehensive policy governance solution that we plan to offer to enterprise BSR customers. Here are a few areas we are currently investing in:
If you’re interested in beta testing any of this functionality, please let us know!
To enable breaking change policy enforcement in the BSR, head over to your admin settings or take a look at the documentation. If you aren’t on our Enterprise plan today, you can check out our pricing plans. As always, feedback and questions are welcome in the Buf Slack!