This is an automated email from the ASF dual-hosted git repository.
ephraimanierobi 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 e0955694f5b [v3-1-test] More update to the python client release
command (#58513) (#58527)
e0955694f5b is described below
commit e0955694f5b71fdea72fbffa1c90be51391a0048
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Thu Nov 20 15:44:31 2025 +0100
[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]>
---
dev/README_RELEASE_PYTHON_CLIENT.md | 60 ++++++++++++++++++++++++-------------
1 file changed, 40 insertions(+), 20 deletions(-)
diff --git a/dev/README_RELEASE_PYTHON_CLIENT.md
b/dev/README_RELEASE_PYTHON_CLIENT.md
index b0a953d291d..98475f110a5 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
@@ -83,6 +95,7 @@ cd ..
cd ${AIRFLOW_REPO_ROOT}
export VERSION="3.1.3"
export VERSION_SUFFIX="rc1"
+export VERSION_RC=${VERSION}${VERSION_SUFFIX}
echo "${VERSION}" > clients/python/version.txt
```
@@ -94,17 +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. Commit the changes.
+- 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}${VERSION_SUFFIX}"
+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. This PR should also contain the change to
`clients/python/version.txt`.
+- 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:
@@ -114,8 +128,8 @@ git commit -m "Prepare release ${VERSION}${VERSION_SUFFIX}"
# 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}
```
@@ -127,8 +141,6 @@ git commit -m "Prepare release ${VERSION}${VERSION_SUFFIX}"
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
@@ -143,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}
```
@@ -157,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)
@@ -180,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
@@ -188,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 ..
@@ -212,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}"
```
@@ -236,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
```
@@ -251,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.
@@ -261,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