@@ -120,6 +120,8 @@ git log 2.8.0..HEAD --pretty=oneline -- airflow-core/src/airflow/api_fastapi/cor
120120cd ${AIRFLOW_REPO_ROOT}
121121rm dist/*
122122breeze release-management prepare-python-client --distribution-format both --python-client-repo " ${CLIENT_REPO_ROOT} " --version-suffix " "
123+ breeze release-management prepare-tarball --tarball-type apache_airflow_python_client --version " ${VERSION} " --version-suffix " ${VERSION_SUFFIX} "
124+
123125```
124126
125127- This should generate both sdist and .whl package in ` dist ` folder of the Airflow repository. It should
@@ -326,15 +328,34 @@ Airflow Python client supports reproducible builds, which means that the package
326328sources should produce binary identical packages in reproducible way. You should check if the packages can be
327329binary-reproduced when built from the sources.
328330
329- Checkout airflow sources and build packages in dist folder (replace X.Y.Zrc1 with the version + rc candidate)
330- you are checking):
331+ 1 ) Set versions of the packages to be checked:
332+
333+ ``` shell script
334+ cd < directory where airflow is checked out>
335+ VERSION=X.Y.Z
336+ VERSION_SUFFIX=rc1
337+ VERSION_RC=${VERSION}${VERSION_SUFFIX}
338+ ```
339+
340+ 2 ) Change directory where your airflow sources are checked out
341+
342+ ``` shell
343+ cd " ${AIRFLOW_REPO_ROOT} "
344+ ```
345+
346+ 3 ) Check out the `` python-client `` tag (assume apache is the remote name of the repository):
347+
348+ ``` shell
349+ git fetch apache --tags
350+ git checkout providers/${VERSION_RC}
351+ ```
352+
353+ 4 ) Build the distribution and source tarball:
331354
332355``` shell script
333- VERSION=X.Y.Zrc1
334- git checkout python-client/${VERSION}
335- export AIRFLOW_REPO_ROOT=$( pwd)
336356rm -rf dist/*
337357breeze release-management prepare-python-client --distribution-format both --version-suffix " "
358+ breeze release-management prepare-tarball --tarball-type apache_airflow_python_client --version " ${VERSION} " --version-suffix " ${VERSION_SUFFIX} "
338359```
339360
340361The last - build step - by default will use Dockerized build and building of Python client packages
@@ -343,13 +364,16 @@ will be done in a docker container. However, if you have `hatch` installed loc
343364
344365``` bash
345366breeze release-management prepare-python-client --distribution-format both --use-local-hatch --version-suffix " "
367+ breeze release-management prepare-tarball --tarball-type apache_airflow_python_client --version " ${VERSION} " --version-suffix " ${VERSION_SUFFIX} "
346368```
347369
348370This is generally faster and requires less resources/network bandwidth.
349371
350- Both commands should produce reproducible ` .whl ` , ` .tar.gz ` packages in dist folder.
372+ Both commands should produce reproducible ` .whl ` , ` .tar.gz ` packages in dist folder and "-source.tar.gz"
373+ file containing airflow sources in dist folder.
351374
352- Change to the directory where you have the packages from svn:
375+ 4 ) Change to the directory where you have the packages from svn and check if they are identical to the ones
376+ you just built:
353377
354378``` shell script
355379# First clone the repo if you do not have it
@@ -358,7 +382,7 @@ cd ..
358382svn update --set-depth=infinity asf-dist/dev/airflow/clients/python
359383
360384# Then compare the packages
361- cd asf-dist/dev/airflow/clients/python/${VERSION }
385+ cd asf-dist/dev/airflow/clients/python/${VERSION_RC }
362386for i in ${AIRFLOW_REPO_ROOT} /dist/*
363387do
364388 echo " Checking if $( basename $i ) is the same as $i "
@@ -373,6 +397,63 @@ In case the files are different, you should see:
373397Binary files apache_airflow-client-2.9.0.tar.gz and .../apache_airflow-2.9.0.tar.gz differ
374398```
375399
400+ ### Licence check
401+
402+ This can be done with the Apache RAT tool.
403+
404+ Download the latest jar from https://creadur.apache.org/rat/download_rat.cgi (unpack the binary, the jar is inside)
405+
406+ You can run this command to do it for you:
407+
408+ ``` shell script
409+ wget -qO- https://dlcdn.apache.org//creadur/apache-rat-0.17/apache-rat-0.17-bin.tar.gz | gunzip | tar -C /tmp -xvf -
410+ ```
411+
412+ Unpack the release source archive (the ` <package + version>-source.tar.gz ` file) to a folder
413+
414+ ``` shell script
415+ 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
416+ ```
417+
418+ Run the check:
419+
420+ ``` shell script
421+ java -jar /tmp/apache-rat-0.17/apache-rat-0.17.jar --input-exclude-file /tmp/apache-airflow-python-client-src/.rat-excludes /tmp/apache-airflow-python-client-src/ | grep -E " ! |INFO: "
422+ ```
423+
424+ You should see no files reported as Unknown or with wrong licence and summary of the check similar to:
425+
426+ ```
427+ INFO: Apache Creadur RAT 0.17 (Apache Software Foundation)
428+ INFO: Excluding patterns: .git-blame-ignore-revs, .github/*, .git ...
429+ INFO: Excluding MISC collection.
430+ INFO: Excluding HIDDEN_DIR collection.
431+ SLF4J(W): No SLF4J providers were found.
432+ SLF4J(W): Defaulting to no-operation (NOP) logger implementation
433+ SLF4J(W): See https://www.slf4j.org/codes.html#noProviders for further details.
434+ INFO: RAT summary:
435+ INFO: Approved: 15615
436+ INFO: Archives: 2
437+ INFO: Binaries: 813
438+ INFO: Document types: 5
439+ INFO: Ignored: 2392
440+ INFO: License categories: 2
441+ INFO: License names: 2
442+ INFO: Notices: 216
443+ INFO: Standards: 15609
444+ INFO: Unapproved: 0
445+ INFO: Unknown: 0
446+ ```
447+
448+ There should be no files reported as Unknown or Unapproved. The files that are unknown or unapproved should be shown with a line starting with ` ! ` .
449+
450+ For example:
451+
452+ ```
453+ ! Unapproved: 1 A count of unapproved licenses.
454+ ! /CODE_OF_CONDUCT.md
455+ ```
456+
376457## Signature check
377458
378459Make sure you have imported into your GPG the PGP key of the person signing the release. You can find the valid keys in
0 commit comments