You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by po...@apache.org on 2022/03/07 02:08:40 UTC
[airflow] branch main updated: Dev: Allow easy repacking of Providers (#22018)
This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 4e05bbc Dev: Allow easy repacking of Providers (#22018)
4e05bbc is described below
commit 4e05bbc92557f5eafaa37509387b2fb2b0ab3d4a
Author: Kaxil Naik <ka...@gmail.com>
AuthorDate: Mon Mar 7 02:07:56 2022 +0000
Dev: Allow easy repacking of Providers (#22018)
* Dev: Allow easy repacking of Providers
This PR adds `--skip-tag-check` to easily repackage a provider by running:
```
rm -rf provider_packages/airflow
cp -r airflow provider_packages
mkdir dist
python dev/provider_packages/prepare_provider_packages.py generate-setup-files --skip-tag-check "cncf.kubernetes"
python dev/provider_packages/prepare_provider_packages.py build-provider-packages --skip-tag-check "cncf.kubernetes"
```
This allow us to repackage providers without using Docker containers/breeze or git.
---
dev/provider_packages/prepare_provider_packages.py | 42 +++++++++++++---------
1 file changed, 25 insertions(+), 17 deletions(-)
diff --git a/dev/provider_packages/prepare_provider_packages.py b/dev/provider_packages/prepare_provider_packages.py
index 2b44dd9..152ae42 100755
--- a/dev/provider_packages/prepare_provider_packages.py
+++ b/dev/provider_packages/prepare_provider_packages.py
@@ -104,7 +104,6 @@ sys.path.insert(0, str(SOURCE_DIR_PATH))
# those imports need to come after the above sys.path.insert to make sure that Airflow
# sources are importable without having to add the airflow sources to the PYTHONPATH before
# running the script
-import tests.deprecated_classes # noqa # isort:skip
from dev.import_all_classes import import_all_classes # noqa # isort:skip
from setup import PROVIDERS_REQUIREMENTS, PREINSTALLED_PROVIDERS # noqa # isort:skip
@@ -123,6 +122,13 @@ def cli():
...
+option_skip_tag_check = click.option(
+ "--skip-tag-check/--no-skip-tag-check",
+ default=False,
+ is_flag=True,
+ help="Skip checking if the tag already exists in the remote repository",
+)
+
option_git_update = click.option(
'--git-update/--no-git-update',
default=True,
@@ -1880,7 +1886,10 @@ def tag_exists_for_version(provider_package_id: str, current_tag: str, verbose:
@option_git_update
@argument_package_id
@option_verbose
-def generate_setup_files(version_suffix: str, git_update: bool, package_id: str, verbose: bool):
+@option_skip_tag_check
+def generate_setup_files(
+ version_suffix: str, git_update: bool, package_id: str, verbose: bool, skip_tag_check: bool
+):
"""
Generates setup files for the package.
@@ -1888,20 +1897,17 @@ def generate_setup_files(version_suffix: str, git_update: bool, package_id: str,
"""
provider_package_id = package_id
with with_group(f"Generate setup files for '{provider_package_id}'"):
- current_tag = get_current_tag(provider_package_id, version_suffix, git_update, verbose)
- if tag_exists_for_version(provider_package_id, current_tag, verbose):
- console.print(f"[yellow]The tag {current_tag} exists. Not preparing the package.[/]")
- # Returns 1 in case of skipped package
- sys.exit(1)
+ if not skip_tag_check:
+ current_tag = get_current_tag(provider_package_id, version_suffix, git_update, verbose)
+ if tag_exists_for_version(provider_package_id, current_tag, verbose):
+ console.print(f"[yellow]The tag {current_tag} exists. Not preparing the package.[/]")
+ # Returns 1 in case of skipped package
+ sys.exit(1)
+ if update_setup_files(provider_package_id, version_suffix):
+ console.print(f"[green]Generated regular package setup files for {provider_package_id}[/]")
else:
- if update_setup_files(
- provider_package_id,
- version_suffix,
- ):
- console.print(f"[green]Generated regular package setup files for {provider_package_id}[/]")
- else:
- # Returns 64 in case of skipped package
- sys.exit(64)
+ # Returns 64 in case of skipped package
+ sys.exit(64)
def get_current_tag(provider_package_id: str, suffix: str, git_update: bool, verbose: bool):
@@ -1952,12 +1958,14 @@ def verify_setup_py_prepared(provider_package):
@option_version_suffix
@argument_package_id
@option_verbose
+@option_skip_tag_check
def build_provider_packages(
package_format: str,
git_update: bool,
version_suffix: str,
package_id: str,
verbose: bool,
+ skip_tag_check: bool,
):
"""
Builds provider package.
@@ -1974,7 +1982,7 @@ def build_provider_packages(
try:
provider_package_id = package_id
with with_group(f"Prepare provider package for '{provider_package_id}'"):
- if version_suffix.startswith("rc") or version_suffix == "":
+ if not skip_tag_check and (version_suffix.startswith("rc") or version_suffix == ""):
# For RC and official releases we check if the "officially released" version exists
# and skip the released if it was. This allows to skip packages that have not been
# marked for release. For "dev" suffixes, we always build all packages
@@ -1982,7 +1990,7 @@ def build_provider_packages(
if tag_exists_for_version(provider_package_id, released_tag, verbose):
console.print(f"[yellow]The tag {released_tag} exists. Skipping the package.[/]")
return False
- console.print(f"Changing directory to ${TARGET_PROVIDER_PACKAGES_PATH}")
+ console.print(f"Changing directory to {TARGET_PROVIDER_PACKAGES_PATH}")
os.chdir(TARGET_PROVIDER_PACKAGES_PATH)
cleanup_remnants(verbose)
provider_package = package_id