-
Notifications
You must be signed in to change notification settings - Fork 183
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Breaking Change][PR Workflow] Use more granular labels for Breaking Changes approvals #6374
Comments
@mikekistler to go and propose the labels. Plus mention that "new api version required" approves a change, not a breaking change. |
Here's my proposal for revised/expanded labels for breaking change approvals: BreakingChange-Benign
BreakingChange-Correction
SameApiVersion-Approved
BreakingChange-Approved
|
I am thinking that the automation, once it detects that the breaking changes have been approved (due to any of the scenarios you listed above) should have another mechanism to determine the PR author can proceed to the next stage, which, in case of ARM PRs, is ARM review. I am thinking a PR that requires ARM review but has unaddressed breaking changes should have a (new) label Re implementation, the work I see to get this done includes:
and support for the new approval labels in:
Related doc: |
TODO: I need to compile the final guidance from all the various conversations I had. Specifically see email thread with |
We will also add another label for issue with the tool, as explained in: |
We may also need a label like |
There is a related idea of having |
To elaborate on "self-served" based on my chat with Jeff R.: appropriate message should be added to the PR, so that PR author knows they can add appropriate comment, resulting in appropriate approval, like e.g. label or suppression file, thus unblocking the PR. The implementation of such flow must play well with: |
@mikekistler @JeffreyRichter after my chat with @weshaggard we have few questions. First off, here is the more recent proposal from the email thread with subject === Proposal start === A PR showing NewApiVersionRequired means a non-breaking change to an existing api-version:
A PR showing BreakingChangeReviewRequired means a breaking change introduced to an existing or new api-version:
In PR, have a comment with 2 (or 3) links:
=== Proposal end === Question 1: handling auto-approval (self-service)I see some scenarios can be auto-approved, but some can not. From the implementation point of view, we cannot clearly delineate these cases. For example, if the breaking change is a bugfix then the automation cannot know "ah, this is a bugfix, so the PR author can auto-approve". All the automation knows it is a breaking change, and all we can do is to either allow to auto-approve all the breaking changes [1] or none of the breaking changes. Similar with non-breaking changes to given API version (like a optional property addition). Either we allow to auto-approve all the non-breaking same-API-version changes or none of them. Knowing that, do you still want for us to implement the auto-approval / self-service capability? Question 2: abusing auto-approval by always snapping API spec to service implementationIf we allow people to auto-approve changes to given API version to match service behavior, they can abuse it in the following way:
This scenario kind of completely circumvents the system, and yet is not obviously wrong in any way. Given this, do you still want for us to allow people to auto-approve same-API version changes under this pretense? Question 3: clarification of breaking change and same-API version changeIs the following correct?
Footnotes[1]: For example, if there would be [2]: Except the same API version changes that are allowed by the special cases as listed in the proposal. [3]: Except the breaking changes that are allowed by the special cases as listed in the proposal. |
This is a good summary but I have a few minor tweaks:
As for your questions: I think we still want the self-service approval. Yes, it should be offered on every PR with a "NewApiVersionRequired" or "BreakingChangeReviewRequired" label. And yes, it could easily be abused, but
Regarding your second question, we should clarify what qualifies as a "BugFix". A "BugFix" means that the behavior of the service at the time of the original GA of the feature was not correctly described in the API definition. Another way to say this is that the API definition does not correctly describe the service behavior at any point in time. |
Per our chat today:
|
There have been few more updates. Newest proposals: Note the documents above are parts of the suppressions logic discussion. All relevant docs: |
|
|
Pull Request 9668189: Updated guidance around breaking changes process and relevant labels | Updated file(s) from Engineering Hub for content: Service Lifecycle & Actions Team |
Related work:
|
Doc capturing info from this thread, and more:
|
I reached out over email to APEX team and Sharif Abassi about deduping these two docs:
Update: over email Shashank said he will deduplicate the docs. |
|
@mikekistler @JeffreyRichter @weshaggard overall this was tons of work, mostly in writing, updating and clarifying the relevant docs. I am waiting for Shashank to update relevant APEX wiki about breaking changes intake process (see here). But my part of the work is finally done! Migration to new labels is done, code is done and deployed, etc. Closing. |
Implementation plan
By @konrad-jamrozik
Implementation plan for the design in this gist with extra details in this Word design doc (see also this comment):
Approved-BreakingChange
labelNewApiVersion
labelrequiredLabelsRules.ts
file to use the new labels abstractions (base it on the relevant open PR by Tianen)VersioningReviewRequried
andBreakingChangeReviewRequired
are present.Prerequisite implementation tasks
openapi-alps
code, likeLabel
orPrKey
, intoswagger-validation-common
package.No-op docs work
Update the "Automated Merging Requirements Met" GitHub check pane.(no work was necessary here)Update the Breaking Changes / Same Version GitHub check pane.(no work was necessary here)Update the Breaking Changes / Same Version ADO build logs.(no work was necessary here)Update the Breaking Changes / Cross-Version GitHub check pane.(no work was necessary here)Update the Breaking Changes / Cross-Version ADO build logs.(no work was necessary here)Most recent proposal
For most recent proposal, see the most recent comment on this issue.
Original description 6/20/2023
By @mikekistler:
The current breaking change process uses the "BreakingChangeReviewRequired" or "NewApiVersionRequired" labels to signal that a breaking change review is required, but only one label "Approved-BreakingChange" for approval by the Breaking Change review board. But there are several different reasons that the board may approve, and we'd like to use the label to designate the reason for approval.
Related work:
NoApiVersionChange
label #6344The text was updated successfully, but these errors were encountered: