This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 263ea111d5f Simolify and modernize provider documentation preparation
instructions (#58306)
263ea111d5f is described below
commit 263ea111d5ff4c1a8f03ece9cfcbdd4c7e8c72f7
Author: Jarek Potiuk <[email protected]>
AuthorDate: Sat Nov 15 16:08:18 2025 +0100
Simolify and modernize provider documentation preparation instructions
(#58306)
The instructions were partially outdated and quite a bit too chatty, they
did not focus on actual tasks to do but also contained some digressions
and more detailed description of some provider principles.
This change makes it simpler to follow the process by the release manager,
moves the docuentation of details to PROVIDERS.rst and removes largely
duplicated PROVIDER_DISTRIBUTION_DETAILS.md
The "--incremental-update" flag is specifically added and mentioned
in the doc on what should be done when new commits are added after
initial release notes have been prepared, guiding the release
manager more explicitly what to do and providing instructions.
---
PROVIDERS.rst | 44 +++-
dev/PROVIDER_DISTRIBUTIONS_DETAILS.md | 182 ----------------
dev/README_RELEASE_PROVIDERS.md | 232 ++++++++-------------
...e-management_prepare-provider-documentation.svg | 90 +++++---
...e-management_prepare-provider-documentation.txt | 2 +-
.../commands/release_management_commands.py | 26 ++-
.../commands/release_management_commands_config.py | 30 ++-
7 files changed, 232 insertions(+), 374 deletions(-)
diff --git a/PROVIDERS.rst b/PROVIDERS.rst
index a1661810383..c31ed1e0514 100644
--- a/PROVIDERS.rst
+++ b/PROVIDERS.rst
@@ -340,13 +340,39 @@ There are the following consequences (or lack of them) of
removing the provider:
* Removed provider might be re-instated as maintained provider, but it needs
to go through the regular process
of accepting new provider described above.
-Provider Dependencies
-=====================
-
-The dependencies for Airflow providers are managed in the ``provider.yaml``
file.
-
-All provider dependencies, including versions and constraints, are listed in
this file.
-When adding or updating a provider or its dependencies, changes should be made
to this file accordingly.
+Provider distributions versioning
+---------------------------------
-To ensure consistency and manage dependencies, ``prek`` is configured to
automatically update all dependencies.
-Once you have ``prek`` installed, it will automatically handle the dependency
updates.
+We are using the `SEMVER <https://semver.org/>`_ versioning scheme for the
Provider distributions. This is in order
+to give the users confidence about maintaining backwards compatibility in the
new releases of those
+packages.
+
+Details about maintaining the SEMVER version are going to be discussed and
implemented in
+`the related issue <https://github.com/apache/airflow/issues/11425>`_
+
+Possible states of Provider distributions
+-----------------------------------------
+
+The Provider distributions can be in one of several states.
+
+* The ``not-ready`` state is used when the provider has some in-progress
changes (usually API changes) that
+ we do not want to release yet as part of the regular release cycle.
Providers in this state are excluded
+ from being released as part of the regular release cycle (including
documentation building).
+ The ``not-ready`` providers are treated as regular providers when it comes
to running tests and preparing
+ and releasing packages in ``CI`` - as we want to make sure they are properly
releasable any time and we
+ want them to contribute to dependencies and we want to test them. Also in
case of preinstalled providers,
+ the ``not-ready`` providers are contributing their dependencies rather than
the provider package to
+ requirements of Airflow.
+* The ``ready`` state is the usual state of the provider that is released in
the regular release cycle
+ (including the documentation, package building and publishing). This is the
state most providers are in.
+* The ``suspended``` state is used when we have a good reason to suspend such
provider, following the devlist
+ discussion and vote or "lazy consensus". The process of suspension is
described above.
+ The ``suspended`` providers are excluded from being released as part of the
regular release cycle (including
+ documentation building) but also they do not contribute dependencies to the
CI image and their tests are
+ not run in CI process. The ``suspended`` providers are not released as part
of the regular release cycle.
+* The ``removed`` state is a temporary state after the provider has been voted
(or agreed in "lazy consensus")
+ to be removed and it is only used for exactly one release cycle - in order
to produce the final version of
+ the package - identical to the previous version with the exception of the
removal notice. The process
+ of removal is described in [Provider's docs](../PROVIDERS.rst). The
difference between ``suspended``
+ and ``removed`` providers is that additional information is added to their
documentation about the provider
+ not being maintained any more by the community.
diff --git a/dev/PROVIDER_DISTRIBUTIONS_DETAILS.md
b/dev/PROVIDER_DISTRIBUTIONS_DETAILS.md
deleted file mode 100644
index db8801b2ae6..00000000000
--- a/dev/PROVIDER_DISTRIBUTIONS_DETAILS.md
+++ /dev/null
@@ -1,182 +0,0 @@
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
--->
-
-<!-- START doctoc generated TOC please keep comment here to allow auto update
-->
-<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
-- [Overview](#overview)
-
-- [Overview](#overview)
-- [Deciding when to release](#deciding-when-to-release)
-- [Verifying providers](#verifying-providers)
-- [Generating provider documentation](#generating-provider-documentation)
-- [Content of the release notes](#content-of-the-release-notes)
-- [Preparing packages](#preparing-packages)
-
-<!-- END doctoc generated TOC please keep comment here to allow auto update -->
-
-
-# Overview
-
-This document describes the process of preparing provider distributions for
release and releasing them.
-The provider distributions are distributions (one per `provider`) that are not
part of the core Airflow.
-
-Once you release the packages, you can simply install them with:
-
-```bash
-pip install apache-airflow-providers-<PROVIDER>[<EXTRAS>]
-```
-
-Where `<PROVIDER>` is the provider id and `<EXTRAS>` are optional extra
packages to install.
-You can find the provider distributions dependencies and extras in the
README.md files in each provider
-distribution (in `airflow/providers/<PROVIDER>` folder) as well as in the PyPI
installation page.
-
-Backport providers are a great way to migrate your DAGs to Airflow-2.0
compatible DAGs. You can
-switch to the new Airflow-2.0 packages in your DAGs, long before you attempt
to migrate
-airflow to 2.0 line.
-
-Note: the provider ID in the package uses a dash ('-') as the separator but
the breeze package ID
-use a dot ('.') as the separator. So the package for microsoft azure is
-'apache-airflow-providers-microsoft-azure' but the build package ID is
'microsoft.azure'.
-
-# Deciding when to release
-
-Each provider distribution has its own version maintained separately when
contributors implement changes,
-marking those as patches/features/backwards incompatible changes.
-
-Details to be hashed out in [the related
issue](https://github.com/apache/airflow/issues/11425)
-
-
-# Verifying providers
-
-You can verify if all providers are properly named and importable.
-
-```bash
-breeze release-management verify-provider-distributions
-```
-
-You can also run the verification with an earlier airflow version to check for
compatibility.
-
-```bash
-breeze release-management verify-provider-distributions --use-airflow-version
2.1.0
-```
-
-
-# Generating provider documentation
-
-When you want to prepare release notes for a package, you need to run:
-
-```bash
-breeze release-management prepare-provider-documentation <PACKAGE_ID> ...
-```
-
-The version for each package is going to be updated separately for each
package when we agree to the
-process.
-
-Details to be hashed out in [the related
issue](https://github.com/apache/airflow/issues/11425)
-
-* <PACKAGE_ID> is usually directory in the `airflow/providers` folder (for
example `google` but in several
- cases, it might be one level deeper separated with `.` for example
`apache.hive`
-
-You can run the script with multiple package names if you want to prepare
several packages at the same time.
-
-If you do not change version number, you can iterate with merges and release
candidates you update the
-release date without providing
-the date (to update the existing release notes)
-
-```bash
-breeze release-management prepare-provider-documentation google
-```
-
-
-When you are satisfied with the release notes generated you can commit
generated changes/new files
-to the repository.
-
-
-# Content of the release notes
-
-The script generates all the necessary information:
-
-* summary of requirements for each provider package
-* list of dependencies (including extras to install them) when package
- depends on other providers packages
-* link to the changelog of all the changes to the provider package
-
-The information is placed in README.rst which is regenerated every time you
run the script.
-
-Note that our CI system builds the release notes for provider distributions
automatically with every build and
-current date - this way you might be sure the automated generation of the
release notes continues to
-work. You can also preview the generated readme files (by downloading
artifacts from GitHub Actions).
-The script does not modify the README files if there is no change in the repo
for that provider.
-
-# Preparing packages
-
-Airflow 2.0 is released as separate core package and separate set of provider
distributions.
-
-You can build those packages in the breeze environment, so you do not have to
worry about common environment.
-
-Note that readme release notes have to be generated first, so that the package
preparation script reads
-the latest version from the latest version of release notes prepared.
-
-* The provider package ids PACKAGE_ID are subdirectories in the ``providers``
directory. Sometimes they
-are one level deeper (`apache/hive` folder for example, in which case
PACKAGE_ID uses "." to separate
-the folders (for example Apache Hive's PACKAGE_ID is `apache.hive` ). You can
see the list of all available
-providers by running:
-
-```bash
-breeze release-management prepare-provider-distributions --help
-```
-
-The examples below show how you can build selected packages, but you can also
build all packages by
-omitting the package ids altogether.
-
-* To build the release candidate packages for PyPI upload run the following
command:
-
-```bash
-breeze release-management prepare-provider-distributions --distribution-format
both --version-suffix=rc1 [PACKAGE_ID] ...
-```
-
-for example:
-
-```bash
-breeze release-management prepare-provider-distributions --distribution-format
both --version-suffix=rc1 http ...
-```
-
-* To build the final release packages run the following command:
-
-```bash
-breeze release-management prepare-provider-distributions --distribution-format
both [PACKAGE_ID] ...
-```
-
-for example:
-
-```bash
-breeze release-management prepare-provider-distributions --distribution-format
both http ...
-```
-
-* For each package, this creates a wheel package and source distribution
package in your `dist` folder with
- names following the patterns:
-
- *
`apache_airflow_providers_<PROVIDER>_MAJOR.MINOR.PATCHLEVEL[suffix]-py3-none-any.whl`
- * `apache-airflow-providers-<PROVIDER>-MAJOR.MINOR.PATCHLEVEL[suffix].tar.gz`
-
-Where ``MAJOR.MINOR.PATCHLEVEL`` is the semver version of the packages.
-
-* You can install the .whl packages with `pip install <PACKAGE_FILE>`
-
-Releasing the packages is described in
[README_RELEASE_PROVIDERS.md](README_RELEASE_PROVIDERS.md)
diff --git a/dev/README_RELEASE_PROVIDERS.md b/dev/README_RELEASE_PROVIDERS.md
index 3e385d6cc13..d01f968b1c3 100644
--- a/dev/README_RELEASE_PROVIDERS.md
+++ b/dev/README_RELEASE_PROVIDERS.md
@@ -20,19 +20,17 @@
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
**Table of contents**
-- [What the provider distributions are](#what-the-provider-distributions-are)
-- [Provider distributions](#provider-distributions)
-- [Perform review of security issues that are marked for the
release](#perform-review-of-security-issues-that-are-marked-for-the-release)
-- [Bump min Airflow version for
providers](#bump-min-airflow-version-for-providers)
-- [Decide when to release](#decide-when-to-release)
-- [Provider distributions versioning](#provider-distributions-versioning)
-- [Possible states of Provider
distributions](#possible-states-of-provider-distributions)
-- [Prepare Regular Provider distributions
(RC)](#prepare-regular-provider-distributions-rc)
+- [Intro](#intro)
+ - [What the provider distributions are](#what-the-provider-distributions-are)
+ - [Decide when to release](#decide-when-to-release)
+- [Special procedures (done very
infrequently)](#special-procedures-done-very-infrequently)
+ - [Bump min Airflow version for
providers](#bump-min-airflow-version-for-providers)
- [Move provider into remove state](#move-provider-into-remove-state)
- - [Increasing version number](#increasing-version-number)
- - [Generate release notes](#generate-release-notes)
+- [Prepare Regular Provider distributions
(RC)](#prepare-regular-provider-distributions-rc)
+ - [Perform review of security issues that are marked for the
release](#perform-review-of-security-issues-that-are-marked-for-the-release)
+ - [Convert commits to changelog entries and bump provider
versions](#convert-commits-to-changelog-entries-and-bump-provider-versions)
+ - [Apply incremental changes and merge the
PR](#apply-incremental-changes-and-merge-the-pr)
- [(Optional) Apply template updates](#optional-apply-template-updates)
- - [Open PR with suggested version
releases](#open-pr-with-suggested-version-releases)
- [Build Provider distributions for SVN apache
upload](#build-provider-distributions-for-svn-apache-upload)
- [Build and sign the source and convenience
packages](#build-and-sign-the-source-and-convenience-packages)
- [Commit the source packages to Apache SVN
repo](#commit-the-source-packages-to-apache-svn-repo)
@@ -65,7 +63,9 @@
------------------------------------------------------------------------------------------------------------
-# What the provider distributions are
+# Intro
+
+## What the provider distributions are
The Provider distributions are separate packages (one package per provider)
that implement
integrations with external services for Airflow in the form of installable
Python packages.
@@ -78,45 +78,40 @@ NOTE!! When you have problems with any of those commands
that run inside `breeze
can run the command with `--debug` flag that will drop you in the shell inside
the image and will
print the command that you should run.
-# Provider distributions
-
-The prerequisites to release Apache Airflow are described in
[README.md](README.md).
-
-You can read more about the command line tools used to generate the packages
in the
-[Provider details](PROVIDER_DISTRIBUTIONS_DETAILS.md).
-
-# Perform review of security issues that are marked for the release
+## Decide when to release
-We are keeping track of security issues in the [Security
Issues](https://github.com/airflow-s/airflow-s/issues)
-repository currently. As a release manager, you should have access to the
repository.
-Please review and ensure that all security issues marked for the release have
been
-addressed and resolved. Ping security team (comment in the issues) if anything
missing or
-the issue does not seem to be addressed.
+You can release Provider distributions separately from the main Airflow on an
ad-hoc basis, whenever we find that
+a given provider needs to be released due to new features or due to bug fixes.
You can release each provider
+package separately, but due to voting and release overhead we try to group
releases of Provider
+distributions together.
-Additionally, the [dependabot
alerts](https://github.com/apache/airflow/security/dependabot) and
-code [scanning
alerts](https://github.com/apache/airflow/security/code-scanning) should be
reviewed
-and security team should be pinged to review and resolve them.
+# Special procedures (done very infrequently)
+> [!NOTE]
+> Those processes are done very infrequently, when there is time to bump
minimum versions of providers
+> or when you remove a provider. Usually you should just skip this section and
go straight to
+> Prepare Regular providers RC.
-# Bump min Airflow version for providers
+## Bump min Airflow version for providers
-This should only happen when it is time to bump the minimum version of
providers as agreed in
-[related provider
policy](PROVIDERS.rst#upgrading-minimum-supported-version-of-airflow)
+> [!NOTE]
+> This should only happen when it is time to bump the minimum version of
providers as agreed in
+> [related provider
policy](../PROVIDERS.rst#upgrading-minimum-supported-version-of-airflow)
1. Update `PROVIDERS_COMPATIBILITY_TESTS_MATRIX` in
`src/airflow_breeze/global_constants.py` to remove
the versions of Airflow that are not applicable anymore.
2. Check if Breeze unit tests in `dev/breeze/tests/test_packages.py` need
adjustments. This is done by simply
-searching and replacing old version occurrences with newer one. For example
2.8.0 to 2.9.0
+searching and replacing old version occurrences with newer one. For example
2.10.0 to 3.0.0
3. Update minimum airflow version for all packages, you should modify
`MIN_AIRFLOW_VERSION`
in `src/airflow_breeze/utils/packages.py` and run the `breeze
release-management prepare-provider-documentation --only-min-version-update`
This will only update the min version in the `__init__.py` files and package
documentation without bumping the provider versions.
-4. Remove `AIRFLOW_V_2_X_PLUS` in all tests (review and update skipif and
other conditional
+4. Remove `AIRFLOW_V_X_Y_PLUS` in all tests (review and update skipif and
other conditional
behaviour and test_compat.py, where X is the TARGET version we change to.
For example
- when we update min Airflow version to 2.10.0, we should remove all
references to AIRFLOW_V_2_10_PLUS
- simply because "everything" in our tests is already 2.10.0+ and there is no
need to exclude or
+ when we update min Airflow version to 3.0.0, we should remove all
references to AIRFLOW_V_3_0_PLUS
+ simply because "everything" in our tests is already 3.0.0+ and there is no
need to exclude or
modify tests for earlier versions of Airflow.
Note: Sometimes we are releasing a subset of providers and would not want to
add the
@@ -135,7 +130,7 @@ branch="update-min-airflow-version"
git checkout -b "${branch}"
breeze release-management prepare-provider-documentation
--only-min-version-update
git add .
-git commit -m "Bump minimum Airflow version in providers to Airflow 2.9.0"
+git commit -m "Bump minimum Airflow version in providers to Airflow 3.0.0"
git push --set-upstream origin "${branch}"
```
@@ -146,77 +141,13 @@ handle everything automatically.
Note: this step is **not** part of the release cycle. It should be done
independently
when the time to update min airflow version has come.
-# Decide when to release
-
-You can release Provider distributions separately from the main Airflow on an
ad-hoc basis, whenever we find that
-a given provider needs to be released - due to new features or due to bug
fixes.
-You can release each provider package separately, but due to voting and
release overhead we try to group
-releases of Provider distributions together.
-
-# Provider distributions versioning
-
-We are using the [SEMVER](https://semver.org/) versioning scheme for the
Provider distributions. This is in order
-to give the users confidence about maintaining backwards compatibility in the
new releases of those
-packages.
-
-Details about maintaining the SEMVER version are going to be discussed and
implemented in
-[the related issue](https://github.com/apache/airflow/issues/11425)
-
-# Possible states of Provider distributions
-
-The Provider distributions can be in one of several states.
-
-* The `not-ready` state is used when the provider has some in-progress changes
(usually API changes) that
- we do not want to release yet as part of the regular release cycle.
Providers in this state are excluded
- from being released as part of the regular release cycle (including
documentation building). You can build
- and prepare such provider when you explicitly specify it as argument of a
release command or by passing
- `--include-not-ready-providers` flag in corresponding command. The
`not-ready` providers are treated as
- regular providers when it comes to running tests and preparing and releasing
packages in `CI` - as we want
- to make sure they are properly releasable any time and we want them to
contribute to dependencies and we
- want to test them. Also in case of preinstalled providers, the `not-ready`
providers are contributing
- their dependencies rather than the provider package to requirements of
Airflow.
-* The `ready` state is the usual state of the provider that is released in the
regular release cycle
- (including the documentation, package building and publishing). This is the
state most providers are in.
-* The `suspended` state is used when we have a good reason to suspend such
provider, following the devlist
- discussion and vote or "lazy consensus". The process of suspension is
described in [Provider's docs](../PROVIDERS.rst).
- The `suspended` providers are excluded from being released as part of the
regular release cycle (including
- documentation building) but also they do not contribute dependencies to the
CI image and their tests are
- not run in CI process. You can build and prepare such provider when you
explicitly specify it as argument
- of a release command or by passing `--include-suspended-providers` flag in
corresponding command (but it
- might or might not work at any time as the provider release commands are not
regularly run on CI for the
- suspended providers). The `suspended` providers are not released as part of
the regular release cycle.
-* The `removed` state is a temporary state after the provider has been voted
(or agreed in "lazy consensus")
- to be removed and it is only used for exactly one release cycle - in order
to produce the final version of
- the package - identical to the previous version with the exception of the
removal notice. The process
- of removal is described in [Provider's docs](../PROVIDERS.rst). The
`removed` providers are included in
- the regular release cycle (including documentation building) because the
`--include-removed-providers`
- flag is passed to commands that release manager runs (see below). The
difference between `suspended`
- and `removed` providers is that additional information is added to their
documentation about the provider
- not being maintained any more by the community.
-
-This graph shows the possible transitions between the states:
-
-```mermaid
-graph TD;
- new[/new/]
- new -- Add to the code -->ready;
- ready
- ready-- Mark as not ready -->not-ready;
- not-ready-- Mark as ready -->ready;
- ready-- Suspend -->suspended;
- suspended-- Resume -->ready;
- ready-- Mark as removed -->removed;
- suspended-- Mark as removed -->removed;
- gone[\gone\]
- removed -- Remove from the code --> gone;
-```
-
-# Prepare Regular Provider distributions (RC)
-
## Move provider into remove state
+> [!NOTE]
+> This is oonly needed in case some providers have been removed since last
release wave.
+
The removed state needs to be in a release wave before you actually plan to
remove the source code for the provider.
-Set provider with removed state -> release provider -> remove source code of
the provider.
+Set provider with ``removed state`` -> ``release provider`` -> ``remove source
code of the provider``.
When setting the provider in removed state you need also to clarify in the
change log that there will be
no more releases for this provider.
@@ -226,24 +157,34 @@ To set provider as removed do the following:
2. Place entry in changelog.txt that notify users about provider being removed.
3. Update test_get_removed_providers in `/dev/breeze/tests/test_packages.py`
by adding the provider to the list
-## Increasing version number
+# Prepare Regular Provider distributions (RC)
+
+This is the process that happens regularly (every 2 weeks).
-First thing that release manager has to do is to change version of the
provider to a target
-version. This is happening by running `breeze prepare-provider-documentation`
after the changes for provider
-are assessed by the Release Manager.
+## Perform review of security issues that are marked for the release
+
+We are keeping track of security issues in the [Security
Issues](https://github.com/airflow-s/airflow-s/issues)
+repository currently. As a release manager, you should have access to the
repository.
+Please review and ensure that all security issues marked for the release have
been
+addressed and resolved. Ping security team (comment in the issues) if anything
missing or
+the issue does not seem to be addressed.
-## Generate release notes
+Additionally, the [dependabot
alerts](https://github.com/apache/airflow/security/dependabot) and
+code [scanning
alerts](https://github.com/apache/airflow/security/code-scanning) should be
reviewed
+and security team should be pinged to review and resolve them.
-Each of the Provider distributions contains Release notes in the form of the
`changelog.rst` file in docs
-that is automatically generated from history of the changes and code of the
provider.
+## Convert commits to changelog entries and bump provider versions
-When the provider package version has not been updated since the latest
version, the release notes
-are not generated. Release notes are only generated, when the latest version
of the package does not
-yet have a corresponding TAG.
+First thing that release manager has to do is to convert commits for each
provider into changelog entries
+and update version of the provider to a target version - depending on type of
changes implemented in the
+providers. This is happening by running `breeze
prepare-provider-documentation`. The tool aids the release
+manager to classify each of the changes and will automatically increase
version of the provider.
-The tags for providers is of the form ``providers-<PROVIDER_ID>/<VERSION>``
for example
-``providers-amazon/1.0.0``. During releasing, the `rc*` tags are created (for
example
-``providers-amazon/1.0.0rc1``).
+Note that version of the provider should be updated in two places (the tool
does it automatically):
+
+* **provider.yaml** - where there is a list of all versions of providers (the
first one is the latest)
+* **changelog.rst** - where changelogs are sorted according to provider
version and group changes in
+ the right sections
```shell script
breeze release-management prepare-provider-documentation
@@ -255,46 +196,56 @@ In case you prepare provider documentation for just a few
selected providers, yo
breeze release-management prepare-provider-documentation [packages]
```
+This happens automatically if you set ``DISTRIBUTIONS_LIST`` variable.
+
In case you want to also release a pre-installed provider that is in
``not-ready`` state (i.e. when
you want to release it before you switch their state to ``ready``), you need
to pass
``--include-not-ready-providers`` flag to the command above.
-This command will not only prepare documentation but will also help the
release manager to review
-changes implemented in all providers, and determine which of the providers
should be released. For each
-provider details will be printed on what changes were implemented since the
last release including
-links to particular commits.
-
-This should help to determine which version of provider should be released:
+The tool determines the new version of provider as follows:
-* increased patch-level for bugfix-only change
+* increased patch-level for bugfix-only and doc-only changes
* increased minor version if new features are added
* increased major version if breaking changes are added
-It also helps the release manager to update CHANGELOG.rst where high-level
overview of the changes should be documented for the providers released.
-You should iterate and re-generate the same content after any change as many
times as you want.
-The generated files should be added and committed to the repository.
+## Apply incremental changes and merge the PR
-When you want to regenerate the changes before the release and make sure all
changelogs
-are updated, run it in non-interactive mode:
+When those changes are generated, you should commit the changes, create a PR
and get it reviewed.
+This usually takes some time, so before merging you need to rebase it to
latest main and see if there
+are no new, incremental updates (one or two merged commit in the meantime). If
there are - you still
+have a chance to incorporate the changes via ``incremental-update`` process
for provider documentation:
```shell script
- breeze release-management prepare-provider-documentation
--include-removed-providers --answer yes
+ breeze release-management prepare-provider-documentation --incremental-update
```
In case you prepare provider documentation for just a few selected providers,
you can run:
```shell script
-breeze release-management prepare-provider-documentation --answer yes
[packages]
+breeze release-management prepare-provider-documentation --incremental-update
[packages]
```
+Once you do it, the diff will be generated so you will see if there are any
new changes added to
+changelogs. If there are. uou need to add them to PR and classify the changes
manually:
+
+* move the changes to the right sections in changelog
+* remove the "Please review" comments generated by the incremental update
process
+* if needed adjust version of provider - in changelog and provider.yaml, in
case the new
+ change changes classification of the upgrade (patchlevel/minor/major)
+
+Commit the changes and merge the PR, be careful to do it quickly so that no
new PRs are merged for
+providers in the meantime - if they are, you will miss them in the changelog.
+
In case you want to also release a pre-installed provider that is in
``not-ready`` state (i.e. when
you want to release it before you switch their state to ``ready``), you need
to pass
``--include-not-ready-providers`` flag to the command above.
-NOTE!! In case you prepare provider's documentation in a branch different than
main, you need to manually
-specify the base branch via `--base-branch` parameter.
-For example if you try to build a `cncf.kubernetes` provider that is build
from `provider-cncf-kubernetes/v4-4`
-branch should be prepared like this:
+> [!NOTE]
+> In case you prepare provider's documentation in a branch different than
main, you need to manually
+> specify the base branch via `--base-branch` parameter.
+> For example if you try to build a `cncf.kubernetes` provider that is build
from `provider-cncf-kubernetes/v4-4`
+> branch should be prepared like this:
+
```shell script
breeze release-management prepare-provider-documentation
--include-removed-providers \
@@ -303,7 +254,7 @@ breeze release-management prepare-provider-documentation
--include-removed-provi
## (Optional) Apply template updates
-This step should only be executed if we want to change template files for the
providers - i.e. change
+This step should only be executed if we want to change template files for the
providers, i.e. change
security information, commit/index/README content that is automatically
generated.
Regenerate the documentation templates by running the command with
@@ -318,15 +269,6 @@ Regenerate the documentation templates by running the
command with
breeze release-management prepare-provider-documentation
--include-removed-providers --reapply-templates-only
```
-## Open PR with suggested version releases
-
-At this point you should have providers yaml files and changelog updated.
-You should go over the change log and place changes in their relevant section
(breaking change, feature, bugs, etc...)
-Once finished you should raise a PR : Prepare docs for MM YYYY wave of
Providers
-In the PR we will verify if we want to release a specific package or if the
versions chosen are right.
-Only after PR is merged you should proceed to next steps.
-
-
## Build Provider distributions for SVN apache upload
Those packages might get promoted to "final" packages by just renaming the
files, so internally they
diff --git
a/dev/breeze/doc/images/output_release-management_prepare-provider-documentation.svg
b/dev/breeze/doc/images/output_release-management_prepare-provider-documentation.svg
index b615329317a..468823684d8 100644
---
a/dev/breeze/doc/images/output_release-management_prepare-provider-documentation.svg
+++
b/dev/breeze/doc/images/output_release-management_prepare-provider-documentation.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1074.8"
xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1270.0"
xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath
id="breeze-release-management-prepare-provider-documentation-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="1023.8" />
+ <rect x="0" y="0" width="1463.0" height="1219.0" />
</clipPath>
<clipPath
id="breeze-release-management-prepare-provider-documentation-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -168,9 +168,33 @@
<clipPath
id="breeze-release-management-prepare-provider-documentation-line-40">
<rect x="0" y="977.5" width="1464" height="24.65"/>
</clipPath>
+<clipPath
id="breeze-release-management-prepare-provider-documentation-line-41">
+ <rect x="0" y="1001.9" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath
id="breeze-release-management-prepare-provider-documentation-line-42">
+ <rect x="0" y="1026.3" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath
id="breeze-release-management-prepare-provider-documentation-line-43">
+ <rect x="0" y="1050.7" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath
id="breeze-release-management-prepare-provider-documentation-line-44">
+ <rect x="0" y="1075.1" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath
id="breeze-release-management-prepare-provider-documentation-line-45">
+ <rect x="0" y="1099.5" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath
id="breeze-release-management-prepare-provider-documentation-line-46">
+ <rect x="0" y="1123.9" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath
id="breeze-release-management-prepare-provider-documentation-line-47">
+ <rect x="0" y="1148.3" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath
id="breeze-release-management-prepare-provider-documentation-line-48">
+ <rect x="0" y="1172.7" width="1464" height="24.65"/>
+ </clipPath>
</defs>
- <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="1072.8" rx="8"/><text
class="breeze-release-management-prepare-provider-documentation-title"
fill="#c5c8c6" text-anchor="middle" x="740"
y="27">Command: release-management prepare-provider-documentation</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="1268" rx="8"/><text
class="breeze-release-management-prepare-provider-documentation-title"
fill="#c5c8c6" text-anchor="middle" x="740"
y="27">Command: release-management prepare-provider-documentation</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -196,32 +220,40 @@
</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="1464"
y="337.2" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-13)">
</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="12.2"
y="361.6" textLength="780.8"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-14)">Prepare CHANGELOG, README and COMMITS information for providers.</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="1464"
y="361.6" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation- [...]
</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="1464"
y="386" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-15)">
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="410.4" textLength="24.4"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-16)">╭─</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="24.4"
y="410.4" textLength="512.4"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-16)"> Provider documentation preparation flags </text><text
class="bre [...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="434.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-17)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="434.8" textLength="158.6"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-17)">--base-branch</text><text
class="breeze-release-management-prepare-provider-documentation-r [...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="459.2" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-18)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="451.4"
y="459.2" textLength="988.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-18)">old branch)            &#
[...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="483.6" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-19)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r6" x="451.4"
y="483.6" textLength="988.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-19)">(TEXT)              
[...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="508" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-20)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="508" textLength="231.8"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-20)">--github-repository</text><text
class="breeze-release-management-prepare-provider-documentation [...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="532.4" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-21)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="532.4" textLength="353.8"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-21)">--include-not-ready-providers</text><text
class="breeze-release-management-prepare-provider [...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="556.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-22)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="556.8" textLength="329.4"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-22)">--include-removed-providers</text><text
class="breeze-release-management-prepare-provider-d [...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="581.2" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-23)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="581.2" textLength="207.4"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-23)">--non-interactive</text><text
class="breeze-release-management-prepare-provider-documentati [...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="605.6" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-24)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="451.4"
y="605.6" textLength="988.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-24)">confirms releasefor providers prepared for release - us
[...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="630" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-25)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="451.4"
y="630" textLength="988.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-25)">non-interactive mode in CI.        
[...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="654.4" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-26)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="654.4" textLength="305"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-26)">--only-min-version-update</text><text
class="breeze-release-management-prepare-provider-docum [...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="678.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-27)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="451.4"
y="678.8" textLength="988.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-27)">documentation             
[...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="703.2" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-28)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="703.2" textLength="292.8"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-28)">--reapply-templates-only</text><text
class="breeze-release-management-prepare-provider-docu [...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="727.6" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-29)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="451.4"
y="727.6" textLength="988.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-29)">you need to regenerate documentation.     
[...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="752" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-30)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="752" textLength="195.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-30)">--skip-git-fetch</text><text
class="breeze-release-management-prepare-provider-documentation-r1 [...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="776.4" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-31)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="451.4"
y="776.4" textLength="988.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-31)">default, the remote is recreated and fetched to ma
[...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="800.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-32)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="451.4"
y="800.8" textLength="988.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-32)">and that recent commits are not missing   
[...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="825.2" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-33)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="825.2" textLength="195.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-33)">--skip-changelog</text><text
class="breeze-release-management-prepare-provider-documentatio [...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="849.6" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-34)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="849.6" textLength="158.6"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-34)">--skip-readme</text><text
class="breeze-release-management-prepare-provider-documentation-r [...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="874" textLength="1464"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-35)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="1464"
y="874" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-d [...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="898.4" textLength="24.4"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-36)">╭─</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="24.4"
y="898.4" textLength="195.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-36)"> Common options </text><text
class="breeze-release-management-prepare-provi [...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="922.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-37)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="922.8" textLength="109.8"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-37)">--verbose</text><text
class="breeze-release-management-prepare-provider-documentation-r7" x [...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="947.2" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-38)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="947.2" textLength="97.6"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-38)">--answer</text><text
class="breeze-release-management-prepare-provider-documentation-r7" x=" [...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="971.6" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-39)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="971.6" textLength="109.8"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-39)">--dry-run</text><text
class="breeze-release-management-prepare-provider-documentation-r7" x [...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="996" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-40)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="996" textLength="73.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-40)">--help</text><text
class="breeze-release-management-prepare-provider-documentation-r7" x="158.6"
[...]
-</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="1020.4" textLength="1464"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-41)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="1464"
y="1020.4" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-prov [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="410.4" textLength="24.4"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-16)">╭─</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="24.4"
y="410.4" textLength="378.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-16)"> Documentation generation mode </text><text
class="breeze-release-mana [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="434.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-17)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="434.8" textLength="244"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-17)">--incremental-update</text><text
class="breeze-release-management-prepare-provider-documentat [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="459.2" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-18)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="378.2"
y="459.2" textLength="1061.4"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-18)">changes.             
[...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="483.6" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-19)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="483.6" textLength="305"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-19)">--only-min-version-update</text><text
class="breeze-release-management-prepare-provider-docum [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="508" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-20)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="378.2"
y="508" textLength="1061.4"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-20)">documentation             &#
[...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="532.4" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-21)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="532.4" textLength="292.8"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-21)">--reapply-templates-only</text><text
class="breeze-release-management-prepare-provider-docu [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="556.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-22)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="378.2"
y="556.8" textLength="1061.4"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-22)">need to regenerate documentation.       
[...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="581.2" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-23)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="581.2" textLength="207.4"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-23)">--non-interactive</text><text
class="breeze-release-management-prepare-provider-documentati [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="605.6" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-24)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="378.2"
y="605.6" textLength="1061.4"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-24)">confirms releasefor providers prepared for release - u
[...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="630" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-25)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="378.2"
y="630" textLength="1061.4"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-25)">non-interactive mode in CI.        
[...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="654.4" textLength="1464"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="1464"
y="654.4" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provid [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="678.8" textLength="24.4"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-27)">╭─</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="24.4"
y="678.8" textLength="366"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-27)"> Select non-regular providers </text><text
class="breeze-release-managem [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="703.2" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-28)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="703.2" textLength="353.8"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-28)">--include-not-ready-providers</text><text
class="breeze-release-management-prepare-provider [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="727.6" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-29)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="727.6" textLength="329.4"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-29)">--include-removed-providers</text><text
class="breeze-release-management-prepare-provider-d [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="752" textLength="1464"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-30)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="1464"
y="752" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-d [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="776.4" textLength="24.4"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-31)">╭─</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="24.4"
y="776.4" textLength="146.4"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-31)"> Skip steps </text><text
class="breeze-release-management-prepare-provider- [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="800.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-32)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="800.8" textLength="195.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-32)">--skip-git-fetch</text><text
class="breeze-release-management-prepare-provider-documentatio [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="825.2" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-33)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="268.4"
y="825.2" textLength="1171.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-33)">remote is recreated and fetched to make sure that
[...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="849.6" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-34)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="268.4"
y="849.6" textLength="1171.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-34)">not missing            &
[...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="874" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-35)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="874" textLength="195.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-35)">--skip-changelog</text><text
class="breeze-release-management-prepare-provider-documentation-r1 [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="898.4" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-36)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="898.4" textLength="158.6"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-36)">--skip-readme</text><text
class="breeze-release-management-prepare-provider-documentation-r [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="922.8" textLength="1464"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-37)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="1464"
y="922.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provid [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="947.2" textLength="24.4"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-38)">╭─</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="24.4"
y="947.2" textLength="219.6"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-38)"> Advanced options </text><text
class="breeze-release-management-prepare-pro [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="971.6" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-39)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="971.6" textLength="158.6"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-39)">--base-branch</text><text
class="breeze-release-management-prepare-provider-documentation-r [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="996" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-40)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="329.4"
y="996" textLength="1110.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-40)">branch)              &#
[...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="1020.4" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-41)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r6" x="329.4"
y="1020.4" textLength="1110.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-41)">(TEXT)             
[...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="1044.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-42)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="1044.8" textLength="231.8"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-42)">--github-repository</text><text
class="breeze-release-management-prepare-provider-documen [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="1069.2" textLength="1464"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-43)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="1464"
y="1069.2" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-prov [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="1093.6" textLength="24.4"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-44)">╭─</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="24.4"
y="1093.6" textLength="195.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-44)"> Common options </text><text
class="breeze-release-management-prepare-pro [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="1118" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-45)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="1118" textLength="109.8"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-45)">--verbose</text><text
class="breeze-release-management-prepare-provider-documentation-r7" x=" [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="1142.4" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-46)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="1142.4" textLength="97.6"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-46)">--answer</text><text
class="breeze-release-management-prepare-provider-documentation-r7" x [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="1166.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-47)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="1166.8" textLength="109.8"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-47)">--dry-run</text><text
class="breeze-release-management-prepare-provider-documentation-r7" [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="1191.2" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-48)">│</text><text
class="breeze-release-management-prepare-provider-documentation-r4" x="24.4"
y="1191.2" textLength="73.2"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-48)">--help</text><text
class="breeze-release-management-prepare-provider-documentation-r7" x=" [...]
+</text><text
class="breeze-release-management-prepare-provider-documentation-r5" x="0"
y="1215.6" textLength="1464"
clip-path="url(#breeze-release-management-prepare-provider-documentation-line-49)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-prepare-provider-documentation-r1" x="1464"
y="1215.6" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-prov [...]
</text>
</g>
</g>
diff --git
a/dev/breeze/doc/images/output_release-management_prepare-provider-documentation.txt
b/dev/breeze/doc/images/output_release-management_prepare-provider-documentation.txt
index 638ef96ff40..3904575304f 100644
---
a/dev/breeze/doc/images/output_release-management_prepare-provider-documentation.txt
+++
b/dev/breeze/doc/images/output_release-management_prepare-provider-documentation.txt
@@ -1 +1 @@
-b3476f20044a01072d03971ddea1b6c4
+cbba73b306a92a9b63e9087d5574b29b
diff --git
a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
index 49bb55a820f..0406a2e6dcc 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -176,7 +176,7 @@ from airflow_breeze.utils.reproducible import
get_source_date_epoch, repack_dete
from airflow_breeze.utils.run_utils import (
run_command,
)
-from airflow_breeze.utils.shared_options import get_dry_run, get_verbose
+from airflow_breeze.utils.shared_options import get_dry_run, get_verbose,
set_forced_answer
from airflow_breeze.utils.version_utils import (
is_local_package_version,
)
@@ -806,6 +806,11 @@ def provider_action_summary(description: str,
message_type: MessageType, package
is_flag=True,
help="Skip changelog generation. This is used in prek that updates
build-files only.",
)
[email protected](
+ "--incremental-update",
+ is_flag=True,
+ help="Runs incremental update only after rebase of earlier branch to check
if there are no changes.",
+)
@click.option(
"--skip-readme",
is_flag=True,
@@ -826,6 +831,7 @@ def prepare_provider_documentation(
skip_git_fetch: bool,
skip_changelog: bool,
skip_readme: bool,
+ incremental_update: bool,
):
from airflow_breeze.prepare_providers.provider_documentation import (
PrepareReleaseDocsChangesOnlyException,
@@ -841,6 +847,8 @@ def prepare_provider_documentation(
perform_environment_checks()
fix_ownership_using_docker()
cleanup_python_generated_files()
+ if incremental_update:
+ set_forced_answer("yes")
if not provider_distributions:
provider_distributions = get_available_distributions(
include_removed=include_removed_providers,
include_not_ready=include_not_ready_providers
@@ -944,6 +952,22 @@ def prepare_provider_documentation(
get_console().print(
"\n[info]Please review the updated files, classify the changelog
entries and commit the changes.\n"
)
+ if incremental_update:
+ get_console().print(r"\[warning] Generated changes:")
+ run_command(["git", "diff"])
+ get_console().print("\n")
+ get_console().print("[warning]Important")
+ get_console().print(
+ " * Please review manually the changes in changelogs above and
move the new changelog "
+ "entries to the right sections."
+ )
+ get_console().print(
+ "* Remove the `Please review ...` comments from the changelogs
after moving changeslogs"
+ )
+ get_console().print(
+ "* Update both changelog.rst AND provider.yaml in case the new
changes require "
+ "different classification of the upgrade (patchlevel/minor/major)"
+ )
def basic_provider_checks(provider_id: str) -> dict[str, Any]:
diff --git
a/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
b/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
index 8775cf5e111..71ac25029dc 100644
---
a/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
+++
b/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
@@ -247,20 +247,36 @@ RELEASE_MANAGEMENT_PARAMETERS: dict[str, list[dict[str,
str | list[str]]]] = {
],
"breeze release-management prepare-provider-documentation": [
{
- "name": "Provider documentation preparation flags",
+ "name": "Documentation generation mode",
"options": [
- "--base-branch",
- "--github-repository",
- "--include-not-ready-providers",
- "--include-removed-providers",
- "--non-interactive",
+ "--incremental-update",
"--only-min-version-update",
"--reapply-templates-only",
+ "--non-interactive",
+ ],
+ },
+ {
+ "name": "Select non-regular providers",
+ "options": [
+ "--include-not-ready-providers",
+ "--include-removed-providers",
+ ],
+ },
+ {
+ "name": "Skip steps",
+ "options": [
"--skip-git-fetch",
"--skip-changelog",
"--skip-readme",
],
- }
+ },
+ {
+ "name": "Advanced options",
+ "options": [
+ "--base-branch",
+ "--github-repository",
+ ],
+ },
],
"breeze release-management prepare-python-client": [
{