This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch v3-1-stable
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v3-1-stable by this push:
new 9b8afb536fc Sync v3-1-stable with v3-1-test to release python client
3.1.3rc3 (#58530)
9b8afb536fc is described below
commit 9b8afb536fc9586cf9a6a6ec2f5549138f1aec64
Author: Ephraim Anierobi <[email protected]>
AuthorDate: Thu Nov 20 17:08:38 2025 +0100
Sync v3-1-stable with v3-1-test to release python client 3.1.3rc3 (#58530)
* [v3-1-test] Update release python client docs (#58507) (#58512)
(cherry picked from commit 1cf1b8432172ee2ea588c91198d150b590b2678c)
Co-authored-by: Jarek Potiuk <[email protected]>
* [v3-1-test] More update to the python client release command (#58513)
(#58527)
* More update to the python client release command
* Add n use VERSION_RC
* Apply suggestions from code review
(cherry picked from commit 38c4757662455691b32460a8eb14027ef2d35fed)
Co-authored-by: Ephraim Anierobi <[email protected]>
---------
Co-authored-by: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Jarek Potiuk <[email protected]>
---
clients/python/version.txt | 2 +-
dev/README_RELEASE_PYTHON_CLIENT.md | 75 ++++++++++++++++++++++++++-----------
2 files changed, 54 insertions(+), 23 deletions(-)
diff --git a/clients/python/version.txt b/clients/python/version.txt
index fd2a01863fd..ff365e06b95 100644
--- a/clients/python/version.txt
+++ b/clients/python/version.txt
@@ -1 +1 @@
-3.1.0
+3.1.3
diff --git a/dev/README_RELEASE_PYTHON_CLIENT.md
b/dev/README_RELEASE_PYTHON_CLIENT.md
index 2cee93de6a6..21a48e1df18 100644
--- a/dev/README_RELEASE_PYTHON_CLIENT.md
+++ b/dev/README_RELEASE_PYTHON_CLIENT.md
@@ -62,6 +62,18 @@ export STABLE_BRANCH=v2-8-stable
cd ..
```
+- Since we don't sync to the test branch because we want to allow people to
continue backporting PRs to the
+ test branch. We should create a sync branch out of where we cut off from the
test branch
+
+```bash
+git checkout ${TEST_BRANCH}
+# Find the commit from where to cut off and check it out
+git checkout COMMIT_NUM
+# Create the sync branch
+git checkout -b changes313rc1
+export SYNC_BRANCH="changes313rc1"
+```
+
- Checkout the right branch (usually main) of the Airflow Python client where
you
generate the source code to
@@ -81,8 +93,9 @@ cd ..
```bash
cd ${AIRFLOW_REPO_ROOT}
-export VERSION="2.8.0"
+export VERSION="3.1.3"
export VERSION_SUFFIX="rc1"
+export VERSION_RC=${VERSION}${VERSION_SUFFIX}
echo "${VERSION}" > clients/python/version.txt
```
@@ -94,10 +107,18 @@ cd ${AIRFLOW_REPO_ROOT}
git log 2.8.0..HEAD --pretty=oneline --
airflow-core/src/airflow/api_fastapi/core_api/openapi/v2-rest-api-generated.yaml
```
-- Update CHANGELOG.md with the details.
+- Update clients/python/CHANGELOG.md with the details including the changes to
clients/python/version.txt above. Commit the changes.
+
+```shell script
+cd ${AIRFLOW_REPO_ROOT}
+git add .
+git commit -m "Prepare release ${VERSION_RC}"
+
+```
-- Create PR where you add the changelog in `main` branch and cherry-pick it to
the `v2-test` branch - same
- as in case of Airflow changelog.
+- Create a PR where you add the commit above in `main` branch and cherry-pick
it to the `v2-test` branch.
+ This PR should also contain the change to `clients/python/version.txt`. Due
to that, you might want to do this PR from
+ the cloned airflow repo for the release and not your dev airflow clone.
- Merge it to the `v2-*-stable` branch with the command below. You will
release API client from the latest `v2-*-stable` branch
of Airflow repository - same branch that is used to release Airflow:
@@ -107,8 +128,8 @@ git log 2.8.0..HEAD --pretty=oneline --
airflow-core/src/airflow/api_fastapi/cor
# make sure you are up to date
git fetch origin ${STABLE_BRANCH}
git reset --hard origin/${STABLE_BRANCH}
- # merge the changes from the test branch
- git merge --ff-only ${TEST_BRANCH}
+ # merge the changes from the sync branch
+ git merge --ff-only ${SYNC_BRANCH}
# push the changes to the stable branch
git push origin ${STABLE_BRANCH}
```
@@ -120,8 +141,6 @@ git log 2.8.0..HEAD --pretty=oneline --
airflow-core/src/airflow/api_fastapi/cor
cd ${AIRFLOW_REPO_ROOT}
rm dist/*
breeze release-management prepare-python-client --distribution-format both
--python-client-repo "${CLIENT_REPO_ROOT}" --version-suffix ""
-breeze release-management prepare-tarball --tarball-type
apache_airflow_python_client --version "${VERSION}" --version-suffix
"${VERSION_SUFFIX}"
-
```
- This should generate both sdist and .whl package in `dist` folder of the
Airflow repository. It should
@@ -136,7 +155,7 @@ cd ${CLIENT_REPO_ROOT}
git diff HEAD
git checkout -b release-${VERSION}
git add .
-git commit -m "Update Python Client to ${VERSION}${VERSION_SUFFIX}"
+git commit -m "Update Python Client to ${VERSION_RC}"
git push apache release-${VERSION}
```
@@ -150,13 +169,19 @@ Then open a PR and merge it into main.
```shell script
cd ${AIRFLOW_REPO_ROOT}
-git tag -s python-client/${VERSION}${VERSION_SUFFIX} -m "Airflow Python Client
${VERSION}${VERSION_SUFFIX}"
-git push apache python-client/${VERSION}${VERSION_SUFFIX}
+git tag -s python-client/${VERSION_RC} -m "Airflow Python Client ${VERSION_RC}"
+git push apache python-client/${VERSION_RC}
cd ${CLIENT_REPO_ROOT}
-git tag -s ${VERSION}${VERSION_SUFFIX} -m "Airflow Python Client
${VERSION}${VERSION_SUFFIX}"
-git push apache tag ${VERSION}${VERSION_SUFFIX}
+git tag -s ${VERSION_RC} -m "Airflow Python Client ${VERSION_RC}"
+git push apache tag ${VERSION_RC}
```
+- Build the source package after the above tags have been pushed:
+
+```shell script
+cd ${AIRFLOW_REPO_ROOT}
+breeze release-management prepare-tarball --tarball-type
apache_airflow_python_client --version "${VERSION}" --version-suffix
"${VERSION_SUFFIX}"
+```
- Generate signatures and checksum files for the packages (if you have not
generated a key yet, generate
it by following instructions on
http://www.apache.org/dev/openpgp.html#key-gen-generate-key)
@@ -173,7 +198,7 @@ popd
```shell script
# First clone the repo somewhere if you have not done it yet
[ -d asf-dist ] || svn checkout --depth=immediates
https://dist.apache.org/repos/dist asf-dist
-svn update --set-depth=infinity asf-dist/dev/airflow/clients/python
+svn update --set-depth=infinity asf-dist/dev/airflow
# Create new folder for the release
cd asf-dist/dev/airflow/clients/python
@@ -181,10 +206,11 @@ cd asf-dist/dev/airflow/clients/python
svn mkdir ${VERSION}${VERSION_SUFFIX}
# Move the artifacts to svn folder & commit
-mv ${AIRFLOW_REPO_ROOT}/dist/apache_airflow_client-*
${VERSION}${VERSION_SUFFIX}/
-cd ${VERSION}${VERSION_SUFFIX}
+mv ${AIRFLOW_REPO_ROOT}/dist/apache_airflow_client-* ${VERSION_RC}/
+mv ${AIRFLOW_REPO_ROOT}/dist/apache_airflow_python_client-* ${VERSION_RC}/
+cd ${VERSION_RC}
svn add *
-svn commit -m "Add artifacts for Apache Airflow Python Client
${VERSION}${VERSION_SUFFIX}"
+svn commit -m "Add artifacts for Apache Airflow Python Client ${VERSION_RC}"
# Remove old version
cd ..
@@ -205,6 +231,7 @@ To do this we need to:
build the package from the sources in the Airflow repository and generate
packages from those sources.
```shell script
+cd ${AIRFLOW_REPO_ROOT}
rm dist/*
breeze release-management prepare-python-client --distribution-format both
--version-suffix "${VERSION_SUFFIX}"
```
@@ -229,7 +256,7 @@ Subject:
```shell script
cat <<EOF
-[VOTE] Release Apache Airflow Python Client ${VERSION} from
${VERSION}${VERSION_SUFFIX}
+[VOTE] Release Apache Airflow Python Client ${VERSION} from ${VERSION_RC}
EOF
```
@@ -244,7 +271,7 @@ This email is calling for a vote on the release,
which will last for 72 hours. Consider this my (binding) +1.
Airflow Client ${VERSION}${VERSION_SUFFIX} is available at:
-https://dist.apache.org/repos/dist/dev/airflow/clients/python/${VERSION}${VERSION_SUFFIX}/
+https://dist.apache.org/repos/dist/dev/airflow/clients/python/${VERSION_RC}/
The apache_airflow_client-${VERSION}.tar.gz is an sdist release that contains
INSTALL instructions, and also
is the official source release.
@@ -254,7 +281,7 @@ The apache_airflow_client-${VERSION}-py3-none-any.whl is a
binary wheel release
Those packages do not contain .rc* version as, when approved, they will be
released as the final version.
The rc packages are also available at PyPI (with rc suffix) and you can
install it with pip as usual:
-https://pypi.org/project/apache-airflow-client/${VERSION}${VERSION_SUFFIX}/
+https://pypi.org/project/apache-airflow-client/${VERSION_RC}/
Public keys are available at:
https://dist.apache.org/repos/dist/release/airflow/KEYS
@@ -381,8 +408,10 @@ cd ..
[ -d asf-dist ] || svn checkout --depth=immediates
https://dist.apache.org/repos/dist asf-dist
svn update --set-depth=infinity asf-dist/dev/airflow/clients/python
+export PATH_TO_SVN="${PWD}/asf-dist/dev/airflow/clients/python/${VERSION_RC}"
+
# Then compare the packages
-cd asf-dist/dev/airflow/clients/python/${VERSION_RC}
+cd ${PATH_TO_SVN}
for i in ${AIRFLOW_REPO_ROOT}/dist/*
do
echo "Checking if $(basename $i) is the same as $i"
@@ -412,7 +441,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-python-client-src && mkdir -p
/tmp/apache-airflow-python-client-src && tar -xzf
${PATH_TO_SVN}/providers/${RELEASE_DATE}/apache_airflow_python_client-*-source.tar.gz
--strip-components 1 -C /tmp/apache-airflow-python-client-src
+rm -rf /tmp/apache/airflow-python-client-src && mkdir -p
/tmp/apache-airflow-python-client-src && tar -xzf
${PATH_TO_SVN}/apache_airflow_python_client-*-source.tar.gz --strip-components
1 -C /tmp/apache-airflow-python-client-src
```
Run the check:
@@ -486,6 +515,7 @@ gpg --keyserver keys.gnupg.net --receive-keys
CDE15C6E4D3A8EC4ECF4BA4B6674E08AD7
Once you have the keys, the signatures can be verified by running this:
```shell script
+cd ${PATH_TO_SVN}
for i in *.asc
do
echo -e "Checking $i\n"; gpg --verify $i
@@ -525,6 +555,7 @@ Primary key fingerprint: 1271 7556 040E EF2E EAF1 B9C2
75FC CD0A 25FA 0E4B
Run this:
```shell script
+cd ${PATH_TO_SVN}
for i in *.sha512
do
echo "Checking $i"; shasum -a 512 `basename $i .sha512 ` | diff - $i