-
Notifications
You must be signed in to change notification settings - Fork 3.1k
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
{Core} Extension Breaking Change Announcement Instruction #30975
Open
ReaNAiveD
wants to merge
3
commits into
Azure:dev
Choose a base branch
from
ReaNAiveD:bc_announce_update
base: dev
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -29,28 +29,57 @@ You could find the next Breaking Change Release plan in our [milestones](https:/ | |
> | ||
> Please note that providing the required info for assessment does not mean it will be assured to be green-lighted for breaking changes. Team will still make the decision based on the overall impact. | ||
|
||
### Pre-announce Breaking Changes | ||
### Ahead-of-1-Month Pre-announcement Policy | ||
|
||
All breaking changes **must** be pre-announced two sprints ahead Release. It give users the buffer time ahead to mitigate for better command experience. There are two approaches to inform both interactive users and automatic users about the breaking changes. | ||
All breaking changes **must** be pre-announced **30** days(usually **2** sprints for modules in Core CLI) ahead Release. It gives users the buffer time ahead to mitigate for better command experience. There are two approaches to inform both interactive users and automatic users about the breaking changes. | ||
|
||
1. (**Mandatory**) Breaking Changes must be pre-announced through Warning Log while executing. | ||
2. (*Automatic*) Breaking Changes would be collected automatically and listed in [Upcoming Breaking Change](https://learn.microsoft.com/en-us/cli/azure/upcoming-breaking-changes) Document. | ||
|
||
### Breaking Changes in Extensions | ||
|
||
All breaking changes in GA extensions **must** be pre-announced at least **30** days prior to their Release. | ||
|
||
Extensions don't need to follow the breaking change window. However, we still strongly recommend releasing breaking changes only in breaking change windows along with Core Azure CLI. | ||
|
||
```text | ||
[GA Release with Breaking Change Pre-Announcement] | ||
│ | ||
├─ Must include complete Breaking Change Information | ||
│ | ||
└─┬─ [Minimum 30-day Announcement Period] ────────────────┐ | ||
│ │ | ||
│ Allow releases during this period: │ | ||
│ - Other unrelated GA versions (vX.(Y+1), v(X+1).Y) │ | ||
│ - Multiple preview releases (Beta) │ | ||
│ │ | ||
▼ ▼ | ||
[GA Release Containing Breaking Changes] | ||
(Must fulfill 30-day announcement requirement) | ||
``` | ||
|
||
## Workflow | ||
|
||
### Overview | ||
### CLI Workflow Overview | ||
|
||
* CLI Owned Module | ||
* Service Team should create an Issue that requests CLI Team to create the pre-announcement several sprints ahead Breaking Change Window. The issue should include the label `Breaking Change`. The CLI team will look at the issue and evaluate if it will be accepted in the next breaking change release. | ||
* **CLI Owned Module** | ||
* Service Team should create an Issue that requests CLI Team to create the pre-announcement at least **2** sprints ahead of Breaking Change Window. The issue should include the label `Breaking Change`. The CLI team will look at the issue and evaluate if it will be accepted in the next breaking change release. | ||
* Please ensure sufficient time for CLI Team to finish the pre-announcement. | ||
* The pre-announcement should be released ahead of Breaking Change Window. | ||
* Service Owned Module | ||
* Service Team should create a Pull Request that create the pre-announcement several sprints ahead Breaking Change Window. | ||
* The pre-announcement should be released ahead of Breaking Change Window. | ||
* The pre-announcement should be released at least **2** sprints ahead of Breaking Change Window. | ||
* **Service Owned Module** | ||
* Service Team should create a Pull Request that adds the pre-announcement at least **2** sprints ahead of Breaking Change Window. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. same here |
||
* The pre-announcement should be released at least **2** sprints ahead of Breaking Change Window. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. and here |
||
* After releasing the pre-announcement, a pipeline would be triggered, and the Upcoming Breaking Change Documentation would be updated. | ||
* At the start of Breaking Change window, the CLI team would notify Service Teams to adopt Breaking Changes. | ||
* Breaking Changes should be adopted within Breaking Change Window. Any unfinished pre-announcements of breaking changes targeting this release will be deleted by the CLI team. | ||
|
||
### Extensions Workflow Overview | ||
|
||
* Service Team should create a Pull Request that includes the pre-announcement. | ||
* The pre-announcement should be released after merged. | ||
* After releasing the pre-announcement, a pipeline would be triggered, and the Upcoming Breaking Change Documentation would be updated. | ||
* After 30 days, the Pull Request that contains the actual breaking changes could be merged and released. | ||
|
||
### Pre-announce Breaking Changes | ||
|
||
The breaking change pre-announcement must be released at least two sprints before the breaking change itself. It is strongly recommended to follow the best practice of providing the new behavior along with the pre-announcement. This allows customers to take action as soon as they discover the pre-announcement. | ||
|
@@ -72,7 +101,7 @@ You can then pre-announce breaking changes for different command groups or comma | |
from azure.cli.core.breaking_change import register_required_flag_breaking_change, register_default_value_breaking_change, register_other_breaking_change | ||
|
||
register_required_flag_breaking_change('bar foo', '--name') | ||
register_default_value_breaking_change('bar foo baz', '--foobar', 'A', 'B') | ||
register_default_value_breaking_change('bar foo baz', '--foobar', 'A', 'B', target_version='May 2025') | ||
register_other_breaking_change('bar foo baz', 'During May 2024, another Breaking Change would happen in Build Event.') | ||
``` | ||
|
||
|
@@ -84,7 +113,7 @@ az bar foo baz | |
|
||
# =====Warning output===== | ||
# The argument '--name' will become required in next breaking change release(2.61.0). | ||
# The default value of '--foobar' will be changed to 'B' from 'A' in next breaking change release(2.61.0). | ||
# The default value of '--foobar' will be changed to 'B' from 'A' in May 2025. | ||
# During May 2024, another Breaking Change would happen in Build Event. | ||
``` | ||
|
||
|
@@ -132,6 +161,8 @@ from azure.cli.core.breaking_change import register_argument_deprecate | |
|
||
register_argument_deprecate('bar foo', '--name', target_version='2.70.0') | ||
# Warning Message: Option `--name` has been deprecated and will be removed in 2.70.0. | ||
register_argument_deprecate('bar foo', '--name', target_version='May 2025') | ||
# Warning Message: Option `--name` has been deprecated and will be removed in May 2025. | ||
``` | ||
|
||
**Rename** | ||
|
@@ -143,6 +174,8 @@ from azure.cli.core.breaking_change import register_argument_deprecate | |
|
||
register_argument_deprecate('bar foo', '--name', '--new-name') | ||
# Warning Message: Option `--name` has been deprecated and will be removed in next breaking change release(2.67.0). Use `--new-name` instead. | ||
register_argument_deprecate('bar foo', '--name', '--new-name', target_version='May 2025') | ||
# Warning Message: Option `--name` has been deprecated and will be removed in May 2025. Use `--new-name` instead. | ||
``` | ||
|
||
**Output Change** | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
usually I suppose sprint will vary across team, but monthly basis is often adopted.
If we put as 1-month policy above(Line 32), we might keep it aligned here, rather than 2 sprints, right?