-
Notifications
You must be signed in to change notification settings - Fork 5.4k
SDK Breaking Changes
Short Link: | aka.ms/azsdk/sdk-suppression |
---|
- Overview
- How to Suppress the SDK Breaking Changes
- How Does the Suppression Work
- How to Get the Suppression Reviewed
When a specification pull request has breaking change for a specific SDK language, such as Go
, the pull request will be labelled with "BreakingChange-Go-Sdk". According to the design principles of Azure SDK, breaking changes are more harmful to a user’s experience than most new features and improvements are beneficial. Therefore, the pull request author will be strongly encouraged to update the API specification to remove the breaking changes for the SDK. If the breaking change cannot be mitigated by a specification change, the author will need to suppress the breaking changes and have the suppression reviewed. See the following section for details on how to suppress breaking changes.
Once the suppression is added to the pull request, SDK reviewers will evaluate the suppressions and either provide feedback or approve the suppressions. When the suppressions have been approved, the SDK breaking change review is complete and the pull request can proceed to the next stage.
Note: both the suppressions review and the SDK breaking change review will be conducted proactively by SDK reviewers, and the expected completion time is around 48 business hours.
To suppress SDK breaking changes, go to the SDK Validation *
CI check result for a specific SDK language, such as "SDK Validation - Go". Click on the link of View more details on Azure Pipelines to browse to the azure pipeline result page. Then download the artifact of spec-gen-sdk logs. There is a html report with the name ended by "-gen-result.html". Open the html report then look for the Absent SDK breaking changes suppressions
section, as shown in the following code block:
Absent SDK breaking changes suppressions
- Function `*LinkerClient.BeginCreateOrUpdate` has been removed
- Function `*LinkerClient.NewListPager` has been removed
Note: refer to https://aka.ms/azsdk/sdk-automation-faq to download the html report.
-
The pull request authors create a file called
sdk-suppressions.yaml
if it doesn't already exist in your service folder in theazure-rest-api-specs
repository.- For TypeSpec scenarios,
sdk-suppressions.yaml
should be placed in the root folder of the TypeSpec project, which also contains thetspconfig.yaml
file. For example, refers to the location for Contoso.Management. - For OpenAPI scenarios,
sdk-suppressions.yaml
should be placed in the{service}\resource-manager
folder. For example, see the location for the contosowidgetmanager resource provider.
- For TypeSpec scenarios,
-
The pull request authors copy every line under the
Absent SDK breaking changes suppressions
section to the suppression file in the following format:
suppressions:
azure-sdk-for-go:
- package: 'sdk/resourcemanager/servicelinker/armservicelinker'
breaking-changes:
- Function `*LinkerClient.BeginCreateOrUpdate` has been removed
- Function `*LinkerClient.NewListPager` has been removed
-
The pull request authors add this suppression file change to your spec pull request. Then the suppressions will be recognized by the bot, and the corresponding suppression label will be added to the spec pull request. For example, for the
azure-sdk-for-go
, the labelBreakingChange-Go-Sdk-Suppression
will be added to the pull request. -
The SDK reviewers will evaluate the suppressions and either approve them or provide feedback. If the suppressions are approved, the corresponding approval label will be added to the pull request. For example, for the
azure-sdk-for-go
, the labelBreakingChange-Go-Sdk-Suppression-Approved
will be added to the pull request.
The suppression file will remain with the specification move with it to other branches or repositories(such as from the private specification repository to the public specification repository). The suppressions can be deleted after the SDK has been released to the public.
SDK reviewers will monitor the specification pull requests with breaking change suppression lables. For example, for the azure-sdk-for-go
, the label is BreakingChange-Go-Sdk-Suppression
. They will evaluate the suppressions and either approve them or provide feedback. If the suppressions are approved, the corresponding approval label will be added to the pull request. For example, for the azure-sdk-for-go
, the label BreakingChange-Go-Sdk-Suppression-Approved
will be added to the pull request. Once the suppression review is complete, the pull request can proceed to the next stage.