Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 13 additions & 19 deletions dev/README_RELEASE_PROVIDERS.md
Original file line number Diff line number Diff line change
Expand Up @@ -365,9 +365,15 @@ rm -rf ${AIRFLOW_REPO_ROOT}/dist/*

* Release candidate packages:

Assume that your remote for apache repository is called `apache` you should now
set tags for the providers in the repo.


```shell script
breeze release-management prepare-provider-distributions --include-removed-providers --distribution-format both
breeze release-management tag-providers
echo "Tagging with providers/${PACKAGE_DATE}"
git tag -s providers/${PACKAGE_DATE} -m "Tag providers for ${PACKAGE_DATE}" --force
git push apache providers/${PACKAGE_DATE}
breeze release-management prepare-airflow-tarball --version ${PACKAGE_DATE} --distribution-name apache_airflow_providers
```

Expand All @@ -376,28 +382,16 @@ if you only build few packages, run:
```shell script
breeze release-management prepare-provider-distributions --include-removed-providers \
--distribution-format both PACKAGE PACKAGE ....
breeze release-management tag-providers
echo "Tagging with providers/${PACKAGE_DATE}"
git tag -s providers/${PACKAGE_DATE} -m "Tag providers for ${PACKAGE_DATE}" --force
git push apache providers/${PACKAGE_DATE}
breeze release-management prepare-airflow-tarball --version ${PACKAGE_DATE} --distribution-name apache_airflow_providers
```

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:

The "tag-providers" step assumes that your remote for apache repository is called `apache`.

Sometimes in cases when there is a connectivity issue to GitHub, it might be possible that local
tags get created and lead to annoying errors. The default behaviour would be to clean such local tags up,
so you can re-run tag-providers command without issues, and it will force tag creation properly, overriding
existing tags.

If you want to disable this behaviour, use --no-clean-tags.




* Sign all your packages

```shell script
Expand Down Expand Up @@ -843,7 +837,7 @@ cd "${AIRFLOW_REPO_ROOT}"

```shell
git fetch apache --tags
git checkout providers/2025-10-20
git checkout providers/2025-10-31
```

3) Remove all the packages you have in dist folder
Expand Down Expand Up @@ -1303,10 +1297,10 @@ By that time the packages should be in your dist folder.

```shell script
cd ${AIRFLOW_REPO_ROOT}
git checkout <ONE_OF_THE_RC_TAGS_FOR_ONE_OF_THE_RELEASED_PROVIDERS>
git checkout providers/YYYY-MM-DD
```

example `git checkout providers-amazon/7.0.0rc2`
example `git checkout providers/2025-10-31`

Note you probably will see message `You are in 'detached HEAD' state.`
This is expected, the RC tag is most likely behind the main branch.
Expand Down
4 changes: 2 additions & 2 deletions dev/breeze/doc/09_release_management_tasks.rst
Original file line number Diff line number Diff line change
Expand Up @@ -281,10 +281,10 @@ This command can be utilized to manage git tags for providers within the Airflow
Sometimes in cases when there is a connectivity issue to GitHub, it might be possible that local tags get created and lead to annoying errors.
The default behaviour would be to clean such local tags up.

The flag ``--clean-local-tags`` can be used to delete the local tags.
The flag ``--clean-tags`` can be used to delete the local tags.

However, If you want to disable this behaviour, set the envvar CLEAN_LOCAL_TAGS to false or use the
``--no-clean-local-tags`` flag.
``--no-clean-tags`` flag.

.. code-block:: bash

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1319,7 +1319,7 @@ def tag_providers(
release_date = os.environ.get("PACKAGE_DATE", datetime.now().strftime("%Y-%m-%d"))

if found_remote is None:
raise ValueError("Could not find remote configured to push to apache/airflow")
raise ValueError("Could not find the remote configured to push to apache/airflow")

extra_flags = []
tags = []
Expand All @@ -1337,17 +1337,7 @@ def tag_providers(
check=True,
)
tags.append(tag)
providers_date_tag = f"providers/{release_date}"
if tags:
run_command(
["git", "tag", providers_date_tag, *extra_flags, "-m", f"Release {release_date} of providers"],
check=True,
)
get_console().print()
get_console().print("\n[info]The providers release have been tagged with:[/]")
get_console().print(providers_date_tag)
get_console().print()
tags.append(providers_date_tag)
push_result = run_command(
["git", "push", found_remote, *extra_flags, *tags],
check=True,
Expand Down
Loading