This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch v3-1-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v3-1-test by this push:
new ab7d48fffea [v3-1-test] Further fixes for release preparation process
for tarballs (#57996) (#57997)
ab7d48fffea is described below
commit ab7d48fffeacdea553f2b6a1be83ccf5e31c5512
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Fri Nov 7 01:20:28 2025 +0100
[v3-1-test] Further fixes for release preparation process for tarballs
(#57996) (#57997)
When preparing tarballs for airflow-ctl, airflow, even if we are
preparing tarballs for "final" version we need to prepare them from
a tag that has version suffix added. And we need to know the suffix.
The prepare-tarball command has now --version-suffix added as well
as the VERSION, VERSION_SUFFIX and VERSION_RC variables have been
synchronized to be the same for airflow, airflowctl, helm-chart -
previously we used VERSION to contain also RC and VERSION_WITHOUT_RC
to be final version - this is now synchronized across all release
instructions.
(cherry picked from commit 102b262db40b9521b71811b39cf1cfb5aec08194)
Co-authored-by: Jarek Potiuk <[email protected]>
---
dev/README_RELEASE_AIRFLOW.md | 121 +++++++++++----------
dev/README_RELEASE_AIRFLOWCTL.md | 49 ++++-----
.../output_release-management_prepare-tarball.svg | 44 +++++---
.../output_release-management_prepare-tarball.txt | 2 +-
.../commands/release_candidate_command.py | 22 +++-
.../commands/release_management_commands_config.py | 2 +-
6 files changed, 129 insertions(+), 111 deletions(-)
diff --git a/dev/README_RELEASE_AIRFLOW.md b/dev/README_RELEASE_AIRFLOW.md
index 296ea04b01f..c31e2b72c4c 100644
--- a/dev/README_RELEASE_AIRFLOW.md
+++ b/dev/README_RELEASE_AIRFLOW.md
@@ -272,13 +272,13 @@ The Release Candidate artifacts we vote upon should be
the exact ones we vote ag
export GPG_TTY=$(tty)
# Set Version
-export VERSION=3.0.5rc1
+export VERSION=3.1.3
export VERSION_SUFFIX=rc1
-export VERSION_BRANCH=2-1
-export VERSION_WITHOUT_RC=${VERSION/rc?/}
-export TASK_SDK_VERSION=1.0.5rc1
-export TASK_SDK_VERSION_WITHOUT_RC=${TASK_SDK_VERSION/rc?/}
-export PREVIOUS_VERSION=3.0.4
+export VERSION_RC=${VERSION}${VERSION_RC}
+export VERSION_BRANCH=3-1
+export TASK_SDK_VERSION=1.1.3
+export TASK_SDK_VERSION_RC=${TASK_SDK_VERSION}${VERSION_SUFFIX}
+export PREVIOUS_VERSION=3.1.2
export SYNC_BRANCH=changes-3.1.2rc1 # sync branch, if different from the test
branch
# Set AIRFLOW_REPO_ROOT to the path of your git repo
@@ -319,13 +319,13 @@ uv tool install -e ./dev/breeze
with minimum version for the next version of Airflow will be added in the
future.
- Check `Apache Airflow is tested with` (stable version) in `README.md` has
the same tested versions as in the tip of
the stable branch in `dev/breeze/src/airflow_breeze/global_constants.py`
-- Commit the above changes with the message `Update version to
${VERSION_WITHOUT_RC}`.
+- Commit the above changes with the message `Update version to ${VERSION}`.
- Build the release notes:
Preview with:
```shell script
- towncrier build --draft --version=${VERSION_WITHOUT_RC} --date=2021-12-15
--dir . --config newsfragments/config.toml
+ towncrier build --draft --version=${VERSION} --date=2021-12-15 --dir .
--config newsfragments/config.toml
```
@@ -364,9 +364,9 @@ uv tool install -e ./dev/breeze
git checkout main
git pull # Ensure that the script is up-to-date
breeze release-management start-rc-process \
- --version ${VERSION} \
+ --version ${VERSION_RC} \
--previous-version ${PREVIOUS_VERSION} \
- --task-sdk-version ${TASK_SDK_VERSION} \
+ --task-sdk-version ${TASK_SDK_VERSION_RC} \
--sync-branch ${SYNC_BRANCH}
```
@@ -376,9 +376,9 @@ uv tool install -e ./dev/breeze
```shell script
# Test with dry-run (shows what would be executed without doing it)
breeze release-management start-rc-process \
- --version ${VERSION} \
+ --version ${VERSION_RC} \
--previous-version ${PREVIOUS_VERSION} \
- --task-sdk-version ${TASK_SDK_VERSION} \
+ --task-sdk-version ${TASK_SDK_VERSION_RC} \
--remote-name upstream \
--dry-run
```
@@ -387,14 +387,14 @@ uv tool install -e ./dev/breeze
```shell script
cat <<EOF
- Status of testing of Apache Airflow ${VERSION}
+ Status of testing of Apache Airflow ${VERSION_RC}
EOF
```
- Generate the body of the issue using the below command:
```shell script
- breeze release-management generate-issue-content-core --previous-release
${PREVIOUS_VERSION} --current-release ${VERSION}
+ breeze release-management generate-issue-content-core --previous-release
${PREVIOUS_VERSION} --current-release ${VERSION_RC}
```
## Publish release candidate documentation (staging)
@@ -421,7 +421,7 @@ The command does the following:
breeze workflow-run publish-docs --ref <tag> --site-env <staging/live/auto>
apache-airflow docker-stack task-sdk
# Example for RC
-breeze workflow-run publish-docs --ref ${VERSION} --site-env staging
apache-airflow docker-stack task-sdk
+breeze workflow-run publish-docs --ref ${VERSION_RC} --site-env staging
apache-airflow docker-stack task-sdk
```
The `--ref` parameter should be the tag of the release candidate you are
publishing.
@@ -508,7 +508,7 @@ Subject:
```shell script
cat <<EOF
-[VOTE] Release Airflow ${VERSION_WITHOUT_RC} from ${VERSION} & Task SDK
${TASK_SDK_VERSION_WITHOUT_RC} from ${TASK_SDK_VERSION}
+[VOTE] Release Airflow ${VERSION} from ${VERSION_RC} & Task SDK
${TASK_SDK_VERSION} from ${TASK_SDK_VERSION_RC}
EOF
```
@@ -518,7 +518,7 @@ Body:
cat <<EOF
Hey fellow Airflowers,
-The release candidates for Apache Airflow ${VERSION} and Task SDK
${TASK_SDK_VERSION} are now available for testing!
+The release candidates for Apache Airflow ${VERSION_RC} and Task SDK
${TASK_SDK_VERSION_RC} are now available for testing!
This email is calling for a vote on the release, which will last at least 72
hours, from Friday, October 8, 2021 at 4:00 pm UTC
until Monday, October 11, 2021 at 4:00 pm UTC, and until 3 binding +1 votes
have been received.
@@ -529,24 +529,24 @@ Status of testing of the release is kept in
TODO:URL_OF_THE_ISSUE_HERE
Consider this my +1 binding vote.
-Airflow ${VERSION} is available at:
-https://dist.apache.org/repos/dist/dev/airflow/${VERSION}/
+Airflow ${VERSION_RC} is available at:
+https://dist.apache.org/repos/dist/dev/airflow/${VERSION_RC}/
"apache-airflow" Meta package:
-- *apache-airflow-${VERSION_WITHOUT_RC}-source.tar.gz* is a source release
that comes with INSTALL instructions.
-- *apache-airflow-${VERSION_WITHOUT_RC}.tar.gz* is the binary Python "sdist"
release.
-- *apache_airflow-${VERSION_WITHOUT_RC}-py3-none-any.whl* is the binary Python
wheel "binary" release.
+- *apache-airflow-${VERSION}-source.tar.gz* is a source release that comes
with INSTALL instructions.
+- *apache-airflow-${VERSION}.tar.gz* is the binary Python "sdist" release.
+- *apache_airflow-${VERSION}-py3-none-any.whl* is the binary Python wheel
"binary" release.
"apache-airflow-core" package:
-- *apache_airflow_core-${VERSION_WITHOUT_RC}.tar.gz* is the binary Python
"sdist" release.
-- *apache_airflow_core-${VERSION_WITHOUT_RC}-py3-none-any.whl* is the binary
Python wheel "binary" release.
+- *apache_airflow_core-${VERSION}.tar.gz* is the binary Python "sdist" release.
+- *apache_airflow_core-${VERSION}-py3-none-any.whl* is the binary Python wheel
"binary" release.
Task SDK ${TASK_SDK_VERSION} is available at:
https://dist.apache.org/repos/dist/dev/airflow/task-sdk/${TASK_SDK_VERSION}/
"apache-airflow-task-sdk" package:
-- *apache_airflow_task_sdk-${TASK_SDK_VERSION_WITHOUT_RC}.tar.gz* is the
binary Python "sdist" release.
-- *apache_airflow_task_sdk-${TASK_SDK_VERSION_WITHOUT_RC}-py3-none-any.whl* is
the binary Python wheel "binary" release.
+- *apache_airflow_task_sdk-${TASK_SDK_VERSION}.tar.gz* is the binary Python
"sdist" release.
+- *apache_airflow_task_sdk-${TASK_SDK_VERSION}-py3-none-any.whl* is the binary
Python wheel "binary" release.
Public keys are available at:
https://dist.apache.org/repos/dist/release/airflow/KEYS
@@ -567,26 +567,26 @@ The test procedure for contributors and members of the
community who would like
https://github.com/apache/airflow/blob/main/dev/README_RELEASE_AIRFLOW.md#verify-the-release-candidate-by-contributors
Please note that the version number excludes the 'rcX' string, so it's now
-simply ${VERSION_WITHOUT_RC} for Airflow package and
${TASK_SDK_VERSION_WITHOUT_RC} for Task SDK. This will allow us to rename the
artifact without modifying
+simply ${VERSION} for Airflow package and ${TASK_SDK_VERSION} for Task SDK.
This will allow us to rename the artifact without modifying
the artifact checksums when we actually release.
Docs (for preview):
-https://airflow.staged.apache.org/docs/apache-airflow/${VERSION_WITHOUT_RC}
+https://airflow.staged.apache.org/docs/apache-airflow/${VERSION}
Release Notes:
-- https://github.com/apache/airflow/blob/${VERSION}/RELEASE_NOTES.rst
--
https://airflow.staged.apache.org/docs/apache-airflow/${VERSION_WITHOUT_RC}/release_notes.html
(Rendered HTML)
+- https://github.com/apache/airflow/blob/${VERSION_RC}/RELEASE_NOTES.rst
+-
https://airflow.staged.apache.org/docs/apache-airflow/${VERSION}/release_notes.html
(Rendered HTML)
Testing Instructions using PyPI:
You can build a virtualenv that installs this and other required packages
(e.g. task sdk), like this:
uv venv
uv pip install -U \\
- apache-airflow==${VERSION} \\
- apache-airflow-core==${VERSION} \\
- apache-airflow-task-sdk==${TASK_SDK_VERSION}
+ apache-airflow==${VERSION_RC} \\
+ apache-airflow-core==${VERSION_RC} \\
+ apache-airflow-task-sdk==${TASK_SDK_VERSION_RC}
-Constraints files are at
https://github.com/apache/airflow/tree/constraints-${VERSION}
+Constraints files are at
https://github.com/apache/airflow/tree/constraints-${VERSION_RC}
Cheers,
<your name>
@@ -621,15 +621,18 @@ Checkout airflow sources and build packages in dist
folder (replace X.Y.Zrc1 wit
you are checking):
```shell script
-VERSION=X.Y.Zrc1
-TASK_SDK_VERSION=X.Y.Zrc1
+VERSION=X.Y.Z
+VERSION_SUFFIX=rc1
+VERSION_RC=${VERSION}${VERSION_SUFFIX}
+TASK_SDK_VERSION=X.Y.Z
+TASK_SDK_VERSION_RC=${TASK_SDK_VERSION}${VERSION_SUFFIX}
git fetch apache --tags
-git checkout ${VERSION}
+git checkout ${VERSION_RC}
export AIRFLOW_REPO_ROOT=$(pwd)
rm -rf dist/*
-breeze release-management prepare-airflow-distributions --distribution-format
both --tag ${VERSION}
+breeze release-management prepare-airflow-distributions --distribution-format
both
breeze release-management prepare-task-sdk-distributions --distribution-format
both
-breeze release-management prepare-tarball --tarball-type apache_airflow
--version ${VERSION}
+breeze release-management prepare-tarball --tarball-type apache_airflow
--version ${VERSION} --version-suffix ${VERSION_SUFFIX}
```
The `prepare-*-distributions` by default will use Dockerized approach and
building of the packages
@@ -637,9 +640,9 @@ will be done in a docker container. However, if you have
`hatch` installed loc
`--use-local-hatch` flag and it will build and use docker image that has
`hatch` installed.
```bash
-breeze release-management prepare-airflow-distributions --distribution-format
both --use-local-hatch --tag ${VERSION}
+breeze release-management prepare-airflow-distributions --distribution-format
both --use-local-hatch
breeze release-management prepare-task-sdk-distributions --distribution-format
both --use-local-hatch
-breeze release-management prepare-tarball --tarball-type apache_airflow
--version ${VERSION}
+breeze release-management prepare-tarball --tarball-type apache_airflow
--version ${VERSION} --version-suffix ${VERSION_SUFFIX}
```
This is generally faster and requires less resources/network bandwidth. Note
that you have to
@@ -660,13 +663,13 @@ cd ..
svn update --set-depth=infinity asf-dist/dev/airflow
# Then compare the packages
-cd asf-dist/dev/airflow/${VERSION}
+cd asf-dist/dev/airflow/${VERSION_RC}
for i in *.whl *.tar.gz
do
echo "Checking if $(basename $i) is the same as
${AIRFLOW_REPO_ROOT}/dist/$(basename $i)"
diff "$(basename $i)" "${AIRFLOW_REPO_ROOT}/dist/$(basename $i)" && echo "OK"
done
-cd ../task-sdk/${TASK_SDK_VERSION}
+cd ../task-sdk/${TASK_SDK_VERSION_RC}
for i in *.whl *.tar.gz
do
echo "Checking if $(basename $i) is the same as
${AIRFLOW_REPO_ROOT}/dist/$(basename $i)"
@@ -718,13 +721,13 @@ present in SVN. This script may help also with verifying
installation of the pac
```shell script
cd $AIRFLOW_REPO_ROOT/dev
-uv run check_files.py airflow -v ${VERSION} -p ${PATH_TO_SVN}
+uv run check_files.py airflow -v ${VERSION_RC} -p ${PATH_TO_SVN}
```
```shell script
cd $AIRFLOW_REPO_ROOT/dev
-uv run check_files.py task-sdk -v ${TASK_SDK_VERSION} -p
${PATH_TO_SVN}/task-sdk
+uv run check_files.py task-sdk -v ${TASK_SDK_VERSION_RC} -p
${PATH_TO_SVN}/task-sdk
```
## Licence check
@@ -742,7 +745,7 @@ wget -qO-
https://dlcdn.apache.org//creadur/apache-rat-0.17/apache-rat-0.17-bin.
Unpack the release source archive (the `<package + version>-source.tar.gz`
file) to a folder
```shell script
-rm -rf /tmp/apache/airflow-src && mkdir -p /tmp/apache-airflow-src && tar -xzf
${PATH_TO_SVN}/${VERSION}/apache_airflow*-source.tar.gz --strip-components 1 -C
/tmp/apache-airflow-src
+rm -rf /tmp/apache/airflow-src && mkdir -p /tmp/apache-airflow-src && tar -xzf
${PATH_TO_SVN}/${VERSION_RC}/apache_airflow*-source.tar.gz --strip-components 1
-C /tmp/apache-airflow-src
```
Run the check:
@@ -900,7 +903,7 @@ Optionally it can be followed with constraints
```shell script
pip install apache-airflow==<VERSION>rc<X> \
- --constraint
"https://raw.githubusercontent.com/apache/airflow/constraints-<VERSION>/constraints-3.10.txt"
+ --constraint
"https://raw.githubusercontent.com/apache/airflow/constraints-<VERSION>rc<X>/constraints-3.10.txt"
```
Note that the constraints contain python version that you are installing it
with.
@@ -984,17 +987,19 @@ https://dist.apache.org/repos/dist/release/airflow/
The best way of doing this is to svn cp between the two repos (this avoids
having to upload the binaries again, and gives a clearer history in the svn
commit logs):
```shell script
-export RC=3.0.5rc5
-export VERSION=${RC/rc?/}
-export TASK_SDK_RC=1.0.5rc1
-export PREVIOUS_RELEASE=3.0.4
+export VERSION=3.1.3
+export VERSION_SUFFIX=rc1
+export VERSION_RC=${VERSION}${VERSION_SUFFIX}
+export TASK_SDK_VERSION=1.1.3
+export TASK_SDK_VERSION_RC=${TASK_SDK_VERSION}${VERSION_SUFFIX}
+export PREVIOUS_RELEASE=3.1.2
# cd to the airflow repo directory and set the environment variable below
export AIRFLOW_REPO_ROOT=$(pwd)
# start the release process by running the below command
breeze release-management start-release \
- --release-candidate ${RC} \
+ --release-candidate ${VERSION_RC} \
--previous-release ${PREVIOUS_RELEASE} \
- --task-sdk-release-candidate ${TASK_SDK_RC}
+ --task-sdk-release-candidate ${TASK_SDK_VERSION_RC}
```
Note: The `--task-sdk-release-candidate` parameter is optional. If you are
releasing Airflow without a corresponding Task SDK release, you can omit this
parameter.
@@ -1033,11 +1038,11 @@ the older branches, you should set the "skip" field to
true.
```shell script
for PYTHON in 3.10 3.11 3.12 3.13
do
- docker pull apache/airflow:${VERSION}-python${PYTHON}
- breeze prod-image verify --image-name
apache/airflow:${VERSION}-python${PYTHON}
+ docker pull apache/airflow:${VERSION_RC}-python${PYTHON}
+ breeze prod-image verify --image-name
apache/airflow:${VERSION_RC}-python${PYTHON}
done
-docker pull apache/airflow:${VERSION}
-breeze prod-image verify --image-name apache/airflow:${VERSION}
+docker pull apache/airflow:${VERSION_RC}
+breeze prod-image verify --image-name apache/airflow:${VERSION_RC}
```
## Publish final documentation
@@ -1063,7 +1068,7 @@ The command does the following:
```shell script
# Example for final release
-breeze workflow-run publish-docs --ref ${VERSION_WITHOUT_RC} --site-env live
apache-airflow docker-stack task-sdk
+breeze workflow-run publish-docs --ref ${VERSION} --site-env live
apache-airflow docker-stack task-sdk
```
The `--ref` parameter should be the tag of the final version you are
publishing.
diff --git a/dev/README_RELEASE_AIRFLOWCTL.md b/dev/README_RELEASE_AIRFLOWCTL.md
index db4ee7c8425..13f19e1812b 100644
--- a/dev/README_RELEASE_AIRFLOWCTL.md
+++ b/dev/README_RELEASE_AIRFLOWCTL.md
@@ -103,8 +103,9 @@ This caused a side effect where we won't be able to use
following versions in fu
Set version env variable
```shell script
-VERSION=1.0.0
-VERSION_RC=1.0.0rc1
+VERSION=0.1.0
+VERSION_SUFFIX=rc1
+VERSION_RC=${VERSION}${VERSION_SUFFIX}
```
# Prepare Regular airflow-ctl distributions (RC)
@@ -153,8 +154,8 @@ git push apache --tags "airflow-ctl/${VERSION_RC}"
* Release candidate packages:
```shell script
-breeze release-management prepare-airflow-ctl-distributions
--distribution-format both --tag "airflow-ctl/${VERSION_RC}"
-breeze release-management prepare-tarball --tarball-type apache_airflow_ctl
--version "${VERSION}"
+breeze release-management prepare-airflow-ctl-distributions
--distribution-format both
+breeze release-management prepare-tarball --tarball-type apache_airflow_ctl
--version "${VERSION}" --version-suffix "${VERSION_SUFFIX}"
```
The `prepare-*-distributions` by default will use Dockerized approach and
building of the packages
@@ -163,8 +164,8 @@ will be done in a docker container. However, if you have
`hatch` installed loc
```shell script
-breeze release-management prepare-airflow-ctl-distributions
--distribution-format both --use-local-hatch --tag "airflow-ctl/${VERSION_RC}"
-breeze release-management prepare-tarball --tarball-type apache_airflow_ctl
--version "${VERSION}"
+breeze release-management prepare-airflow-ctl-distributions
--distribution-format both --use-local-hatch
+breeze release-management prepare-tarball --tarball-type apache_airflow_ctl
--version "${VERSION}" --version-suffix "${VERSION_SUFFIX}"
```
@@ -471,10 +472,12 @@ it means that the build has a verified provenance.
How to verify it:
-1) Change directory where your airflow sources are checked out
+1) Set variables and change directory where your airflow sources are checked
out
```shell
-VERSION=1.0.0rc1
+VERSION=0.1.0
+VERSION_SUFFIX=rc1
+VERSION_RC=${VERSION}${VERSION_SUFFIX}
cd "${AIRFLOW_REPO_ROOT}"
```
@@ -482,7 +485,7 @@ Choose the tag you used for release:
```shell
git fetch apache --tags
-git checkout airflow-ctl/${VERSION}
+git checkout airflow-ctl/${VERSION_RC}
```
3) Remove all the packages you have in dist folder
@@ -494,7 +497,7 @@ rm -rf dist/*
4) Build the packages using checked out sources
```shell
-breeze release-management prepare-airflow-ctl-distributions
--distribution-format both --tag ${VERSION}
+breeze release-management prepare-airflow-ctl-distributions
--distribution-format both
```
5) Switch to the folder where you checked out the SVN dev files
@@ -533,7 +536,7 @@ wget -qO-
https://dlcdn.apache.org//creadur/apache-rat-0.17/apache-rat-0.17-bin.
Unpack the release source archive (the `<package + version>-source.tar.gz`
file) to a folder
```shell script
-rm -rf /tmp/apache/airflow-src && mkdir -p /tmp/apache-airflow-src && tar -xzf
${PATH_TO_SVN}/${VERSION}/apache_airflow*-source.tar.gz --strip-components 1 -C
/tmp/apache-airflow-src
+rm -rf /tmp/apache/airflow-src && mkdir -p /tmp/apache-airflow-src && tar -xzf
${PATH_TO_SVN}/${VERSION_RC}/apache_airflow*-source.tar.gz --strip-components 1
-C /tmp/apache-airflow-src
```
Run the check:
@@ -687,10 +690,7 @@ Replace the DAYS_BACK with how many days ago you prepared
the release.
Normally it's 3 but in case it's longer change it. The output should match the
prepare date.
```
-export DAYS_BACK=3
-export RELEASE_DATE=$(LANG=en_US.UTF-8 date -u -v-${DAYS_BACK}d "+%B %d, %Y")
-export RELEASE_MANAGER_NAME="Elad Kalif"
-echo "prepare release date is ${RELEASE_DATE}"
+export RELEASE_MANAGER_NAME="Buğra Öztürk"
```
## Summarize the voting for the Apache Airflow release
@@ -701,7 +701,7 @@ Email subject:
```
cat <<EOF
-[RESULT][VOTE] Airflow Ctl - release ${VERSION}
+[RESULT][VOTE] Airflow Ctl - release ${VERSION} from ${VERSION_RC}
EOF
```
@@ -711,7 +711,7 @@ Email content:
cat <<EOF
Hello,
-Apache Airflow Ctl prepared with version ${{ERSION} have been accepted.
+Apache Airflow Ctl prepared with version ${VERSION} from ${VERSION_RC} have
been accepted.
3 "+1" binding votes received:
- FIRST LAST NAME (binding)
@@ -921,7 +921,7 @@ Subject:
```
cat <<EOF
-[ANNOUNCE] Apache Airflow CTl prepared on ${VERSION} are released
+[ANNOUNCE] Apache Airflow CTl ${VERSION} from ${VERSION_RC} released
EOF
```
@@ -931,8 +931,7 @@ Body:
cat <<EOF
Dear Airflow community,
-I'm happy to announce that new versions of Airflow Ctl packages prepared:
${VERSION} were just released.
-Full list of PyPI packages released is added at the end of the message.
+I'm happy to announce that new versions of Airflow Ctl packages prepared:
${VERSION} from ${VERSION_RC} were just released.
The source release, as well as the binary releases, are available here:
@@ -944,9 +943,7 @@ The documentation is available at
https://airflow.apache.org/docs/ and linked fr
----
-Full list of released PyPI packages:
-
-TODO: Paste the list of packages here that you put on the side. Sort them
alphabetically.
+The package can be found in PyPI at this link:
https://pypi.org/project/apache-airflow-ctl/${VERSION}/
Cheers,
${RELEASE_MANAGER_NAME}
@@ -976,12 +973,6 @@ The ASF Security will be notified and will submit to the
CVE project and will se
## Announce about the release in social media
-NOTE!
-
-As a rule we announce only new airlfow-ctl that were added.
-If you believe there is a reason to announce in social media for another case
consult with PMC
-members about it.
-
------------------------------------------------------------------------------------------------------------
Announcement is done from official Apache-Airflow accounts.
diff --git
a/dev/breeze/doc/images/output_release-management_prepare-tarball.svg
b/dev/breeze/doc/images/output_release-management_prepare-tarball.svg
index cac88257e8b..03e24473a25 100644
--- a/dev/breeze/doc/images/output_release-management_prepare-tarball.svg
+++ b/dev/breeze/doc/images/output_release-management_prepare-tarball.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 513.5999999999999"
xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 586.8"
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-tarball-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="462.59999999999997" />
+ <rect x="0" y="0" width="1463.0" height="535.8" />
</clipPath>
<clipPath id="breeze-release-management-prepare-tarball-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -99,9 +99,18 @@
<clipPath id="breeze-release-management-prepare-tarball-line-17">
<rect x="0" y="416.3" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-release-management-prepare-tarball-line-18">
+ <rect x="0" y="440.7" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-prepare-tarball-line-19">
+ <rect x="0" y="465.1" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-prepare-tarball-line-20">
+ <rect x="0" y="489.5" 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="511.6" rx="8"/><text
class="breeze-release-management-prepare-tarball-title" fill="#c5c8c6"
text-anchor="middle" x="740"
y="27">Command: release-management prepare-tarball</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="584.8" rx="8"/><text
class="breeze-release-management-prepare-tarball-title" fill="#c5c8c6"
text-anchor="middle" x="740"
y="27">Command: release-management prepare-tarball</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -117,19 +126,22 @@
</text><text class="breeze-release-management-prepare-tarball-r1" x="12.2"
y="93.2" textLength="280.6"
clip-path="url(#breeze-release-management-prepare-tarball-line-3)">Prepare source tarball.</text><text
class="breeze-release-management-prepare-tarball-r1" x="1464" y="93.2"
textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-3)">
</text><text class="breeze-release-management-prepare-tarball-r1" x="1464"
y="117.6" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-4)">
</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="142" textLength="24.4"
clip-path="url(#breeze-release-management-prepare-tarball-line-5)">╭─</text><text
class="breeze-release-management-prepare-tarball-r5" x="24.4" y="142"
textLength="183"
clip-path="url(#breeze-release-management-prepare-tarball-line-5)"> Tarball flags </text><text
class="breeze-release-management-prepare-tarball-r5" x="207.4" y="142"
textLength="1232.2" clip-path="url(#breeze-r [...]
-</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="166.4" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-6)">│</text><text
class="breeze-release-management-prepare-tarball-r4" x="24.4" y="166.4"
textLength="170.8"
clip-path="url(#breeze-release-management-prepare-tarball-line-6)">--tarball-type</text><text
class="breeze-release-management-prepare-tarball-r1" x="244" y="166.4"
textLength="1195.6" clip-path="url(#breeze-release-mana [...]
-</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="190.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-7)">│</text><text
class="breeze-release-management-prepare-tarball-r6" x="244" y="190.8"
textLength="1195.6"
clip-path="url(#breeze-release-management-prepare-tarball-line-7)">(apache_airflow | apache_airflow_ctl | apache_airflow_providers | apache_airflow_task_sdk |    
[...]
-</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="215.2" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-8)">│</text><text
class="breeze-release-management-prepare-tarball-r6" x="244" y="215.2"
textLength="1195.6"
clip-path="url(#breeze-release-management-prepare-tarball-line-8)">helm-chart)                       
[...]
-</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="239.6" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-9)">│</text><text
class="breeze-release-management-prepare-tarball-r5" x="244" y="239.6"
textLength="1195.6"
clip-path="url(#breeze-release-management-prepare-tarball-line-9)">[default: apache_airflow]                    
[...]
-</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="264" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-10)">│</text><text
class="breeze-release-management-prepare-tarball-r4" x="24.4" y="264"
textLength="109.8"
clip-path="url(#breeze-release-management-prepare-tarball-line-10)">--version</text><text
class="breeze-release-management-prepare-tarball-r1" x="244" y="264"
textLength="1195.6" clip-path="url(#breeze-release-management-pr [...]
-</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="288.4" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-11)">│</text><text
class="breeze-release-management-prepare-tarball-r1" x="244" y="288.4"
textLength="1195.6"
clip-path="url(#breeze-release-management-prepare-tarball-line-11)">of current branch will be used and version will be retrieved from there.   &
[...]
-</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="312.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-12)">│</text><text
class="breeze-release-management-prepare-tarball-r6" x="244" y="312.8"
textLength="1195.6"
clip-path="url(#breeze-release-management-prepare-tarball-line-12)">(TEXT)                        &
[...]
-</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="337.2" textLength="1464"
clip-path="url(#breeze-release-management-prepare-tarball-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-prepare-tarball-r1" x="1464" y="337.2"
textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-13)">
-</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="361.6" textLength="24.4"
clip-path="url(#breeze-release-management-prepare-tarball-line-14)">╭─</text><text
class="breeze-release-management-prepare-tarball-r5" x="24.4" y="361.6"
textLength="195.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-14)"> Common options </text><text
class="breeze-release-management-prepare-tarball-r5" x="219.6" y="361.6"
textLength="1220" clip-path="url( [...]
-</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="386" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-15)">│</text><text
class="breeze-release-management-prepare-tarball-r4" x="24.4" y="386"
textLength="109.8"
clip-path="url(#breeze-release-management-prepare-tarball-line-15)">--dry-run</text><text
class="breeze-release-management-prepare-tarball-r7" x="158.6" y="386"
textLength="24.4" clip-path="url(#breeze-release-management-pr [...]
-</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="410.4" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-16)">│</text><text
class="breeze-release-management-prepare-tarball-r4" x="24.4" y="410.4"
textLength="109.8"
clip-path="url(#breeze-release-management-prepare-tarball-line-16)">--verbose</text><text
class="breeze-release-management-prepare-tarball-r7" x="158.6" y="410.4"
textLength="24.4" clip-path="url(#breeze-release-managem [...]
-</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="434.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-17)">│</text><text
class="breeze-release-management-prepare-tarball-r4" x="24.4" y="434.8"
textLength="73.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-17)">--help</text><text
class="breeze-release-management-prepare-tarball-r7" x="158.6" y="434.8"
textLength="24.4" clip-path="url(#breeze-release-management- [...]
-</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="459.2" textLength="1464"
clip-path="url(#breeze-release-management-prepare-tarball-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-prepare-tarball-r1" x="1464" y="459.2"
textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-18)">
+</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="166.4" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-6)">│</text><text
class="breeze-release-management-prepare-tarball-r4" x="24.4" y="166.4"
textLength="170.8"
clip-path="url(#breeze-release-management-prepare-tarball-line-6)">--tarball-type</text><text
class="breeze-release-management-prepare-tarball-r1" x="268.4" y="166.4"
textLength="1171.2" clip-path="url(#breeze-release-ma [...]
+</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="190.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-7)">│</text><text
class="breeze-release-management-prepare-tarball-r6" x="268.4" y="190.8"
textLength="1171.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-7)">(apache_airflow | apache_airflow_ctl | apache_airflow_providers | apache_airflow_task_sdk |    &
[...]
+</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="215.2" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-8)">│</text><text
class="breeze-release-management-prepare-tarball-r6" x="268.4" y="215.2"
textLength="1171.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-8)">helm-chart)                       &#
[...]
+</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="239.6" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-9)">│</text><text
class="breeze-release-management-prepare-tarball-r5" x="268.4" y="239.6"
textLength="1171.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-9)">[default: apache_airflow]                    &
[...]
+</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="264" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-10)">│</text><text
class="breeze-release-management-prepare-tarball-r4" x="24.4" y="264"
textLength="109.8"
clip-path="url(#breeze-release-management-prepare-tarball-line-10)">--version</text><text
class="breeze-release-management-prepare-tarball-r1" x="268.4" y="264"
textLength="1171.2" clip-path="url(#breeze-release-management- [...]
+</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="288.4" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-11)">│</text><text
class="breeze-release-management-prepare-tarball-r1" x="268.4" y="288.4"
textLength="1171.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-11)">HEAD of current branch will be used and version will be retrieved from there. &
[...]
+</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="312.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-12)">│</text><text
class="breeze-release-management-prepare-tarball-r6" x="268.4" y="312.8"
textLength="1171.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-12)">(TEXT)                        
[...]
+</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="337.2" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-13)">│</text><text
class="breeze-release-management-prepare-tarball-r4" x="24.4" y="337.2"
textLength="195.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-13)">--version-suffix</text><text
class="breeze-release-management-prepare-tarball-r1" x="268.4" y="337.2"
textLength="1171.2" clip-path="url(#breeze-releas [...]
+</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="361.6" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-14)">│</text><text
class="breeze-release-management-prepare-tarball-r1" x="268.4" y="361.6"
textLength="1171.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-14)">Note the `.` is need in `.dev0` and `.post`. Might be followed with +local_version&#
[...]
+</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="386" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-15)">│</text><text
class="breeze-release-management-prepare-tarball-r6" x="268.4" y="386"
textLength="1171.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-15)">(TEXT)                        
[...]
+</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="410.4" textLength="1464"
clip-path="url(#breeze-release-management-prepare-tarball-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-prepare-tarball-r1" x="1464" y="410.4"
textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-16)">
+</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="434.8" textLength="24.4"
clip-path="url(#breeze-release-management-prepare-tarball-line-17)">╭─</text><text
class="breeze-release-management-prepare-tarball-r5" x="24.4" y="434.8"
textLength="195.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-17)"> Common options </text><text
class="breeze-release-management-prepare-tarball-r5" x="219.6" y="434.8"
textLength="1220" clip-path="url( [...]
+</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="459.2" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-18)">│</text><text
class="breeze-release-management-prepare-tarball-r4" x="24.4" y="459.2"
textLength="109.8"
clip-path="url(#breeze-release-management-prepare-tarball-line-18)">--dry-run</text><text
class="breeze-release-management-prepare-tarball-r7" x="158.6" y="459.2"
textLength="24.4" clip-path="url(#breeze-release-managem [...]
+</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="483.6" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-19)">│</text><text
class="breeze-release-management-prepare-tarball-r4" x="24.4" y="483.6"
textLength="109.8"
clip-path="url(#breeze-release-management-prepare-tarball-line-19)">--verbose</text><text
class="breeze-release-management-prepare-tarball-r7" x="158.6" y="483.6"
textLength="24.4" clip-path="url(#breeze-release-managem [...]
+</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="508" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-20)">│</text><text
class="breeze-release-management-prepare-tarball-r4" x="24.4" y="508"
textLength="73.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-20)">--help</text><text
class="breeze-release-management-prepare-tarball-r7" x="158.6" y="508"
textLength="24.4" clip-path="url(#breeze-release-management-prepar [...]
+</text><text class="breeze-release-management-prepare-tarball-r5" x="0"
y="532.4" textLength="1464"
clip-path="url(#breeze-release-management-prepare-tarball-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-prepare-tarball-r1" x="1464" y="532.4"
textLength="12.2"
clip-path="url(#breeze-release-management-prepare-tarball-line-21)">
</text>
</g>
</g>
diff --git
a/dev/breeze/doc/images/output_release-management_prepare-tarball.txt
b/dev/breeze/doc/images/output_release-management_prepare-tarball.txt
index 87ac367f3c9..45c6248ab2c 100644
--- a/dev/breeze/doc/images/output_release-management_prepare-tarball.txt
+++ b/dev/breeze/doc/images/output_release-management_prepare-tarball.txt
@@ -1 +1 @@
-ca7604d96851bd855df1229276d4214a
+7cb732b47aeebbb6b430cda72776a7a8
diff --git
a/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py
b/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py
index e58be854358..2e9564d9853 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py
@@ -24,7 +24,12 @@ from pathlib import Path
import click
-from airflow_breeze.commands.common_options import option_answer,
option_dry_run, option_verbose
+from airflow_breeze.commands.common_options import (
+ option_answer,
+ option_dry_run,
+ option_verbose,
+ option_version_suffix,
+)
from airflow_breeze.commands.release_management_group import release_management
from airflow_breeze.global_constants import (
TarBallType,
@@ -305,24 +310,25 @@ def tarball_release(
def create_tarball_release(
tarball_type: TarBallType,
version: str | None,
+ version_suffix: str,
):
if tarball_type == TarBallType.AIRFLOW:
- tag = version if version else "HEAD"
+ tag = version + version_suffix if version else "HEAD"
if not version:
version = get_airflow_version()
console_print(f"\n[info]Using {version} retrieved from
airflow-core as tarball version\n")
elif tarball_type == TarBallType.TASK_SDK:
- tag = f"task-sdk/{version}" if version else "HEAD"
+ tag = f"task-sdk/{version + version_suffix}" if version else "HEAD"
if not version:
version = get_task_sdk_version()
console_print(f"\n[info]Using {version} retrieved from task-sdk as
tarball version\n")
elif tarball_type == TarBallType.AIRFLOW_CTL:
- tag = f"airflow-ctl/{version}" if version else "HEAD"
+ tag = f"airflow-ctl/{version + version_suffix}" if version else "HEAD"
if not version:
version = get_airflowctl_version()
console_print(f"\n[info]Using {version} retrieved from airflow-ctl
as tarball version\n")
elif tarball_type == TarBallType.PROVIDERS:
- tag = f"providers/{version}" if version else "HEAD"
+ tag = f"providers/{version + version_suffix}" if version else "HEAD"
if not version:
version = date.strftime(date.today(), "%Y-%m-%d")
console_print(f"\n[info]Using current date {version} as tarball
version\n")
@@ -610,15 +616,18 @@ def remove_old_releases(version, repo_root):
"If not specified, the HEAD of current branch will be used and version
will be retrieved from there.",
envvar="VERSION",
)
+@option_version_suffix
@option_dry_run
@option_verbose
def prepare_tarball(
tarball_type: str,
version: str | None,
+ version_suffix: str,
):
enum_tarball_type = TarBallType(tarball_type)
create_tarball_release(
version=version,
+ version_suffix=version_suffix,
tarball_type=enum_tarball_type,
)
@@ -712,9 +721,10 @@ def publish_release_candidate(
if confirm_action("Create tarball?"):
# Create the tarball
tarball_release(
- version=version,
+ version=version_without_rc,
source_date_epoch=source_date_epoch,
tarball_type=TarBallType.AIRFLOW,
+ tag=version,
)
# Sign the release
sign_the_release(airflow_repo_root)
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 41802bc7a79..14f6cffb61e 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
@@ -92,7 +92,7 @@ RELEASE_MANAGEMENT_PARAMETERS: dict[str, list[dict[str, str |
list[str]]]] = {
"breeze release-management prepare-tarball": [
{
"name": "Tarball flags",
- "options": ["--tarball-type", "--version"],
+ "options": ["--tarball-type", "--version", "--version-suffix"],
}
],
"breeze release-management prepare-task-sdk-distributions": [