diff --git a/.github/workflows/check-providers.yml b/.github/workflows/check-providers.yml index 04f140b536e5c..31a9b318b3b12 100644 --- a/.github/workflows/check-providers.yml +++ b/.github/workflows/check-providers.yml @@ -100,8 +100,7 @@ jobs: --only-available-in-dist --disable-progress - name: "Test airflow core issue generation automatically" run: > - breeze release-management generate-issue-content-core - --previous-release 1.9.0 --current-release 1.10.0 + breeze release-management generate-issue-content-core --limit-pr-count 25 --latest --verbose - name: "Generate source constraints from CI image" shell: bash run: > diff --git a/dev/breeze/doc/images/output_release-management_generate-issue-content-core.svg b/dev/breeze/doc/images/output_release-management_generate-issue-content-core.svg index 2b77d88347350..bdf8bb692bd7c 100644 --- a/dev/breeze/doc/images/output_release-management_generate-issue-content-core.svg +++ b/dev/breeze/doc/images/output_release-management_generate-issue-content-core.svg @@ -1,4 +1,4 @@ - + - + @@ -101,17 +99,20 @@ + + + - Command: release-management generate-issue-content-core + Command: release-management generate-issue-content-core - + - + Usage:breeze release-management generate-issue-content-core[OPTIONS] @@ -119,19 +120,20 @@ Generates content for issue to test the core release. ╭─ Generate issue flags ───────────────────────────────────────────────────────────────────────────────────────────────╮ ---github-tokenGitHub token used to authenticate. You can set omit it if you have GITHUB_TOKEN env         -variable set. Can be generated with:                                                        -https://github.com/settings/tokens/new?description=Read%20sssues&scopes=repo:status         -(TEXT)                                                                                      -*--previous-releasecommit reference (for example hash or tag) of the previous release.(TEXT)[required] -*--current-releasecommit reference (for example hash or tag) of the current release.(TEXT)[required] ---excluded-pr-listComa-separated list of PRs to exclude from the issue.(TEXT) ---limit-pr-countLimit PR count processes (useful for testing small subset of PRs).(INTEGER) -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭─ Common options ─────────────────────────────────────────────────────────────────────────────────────────────────────╮ ---verbose-vPrint verbose information about performed steps. ---help-hShow this message and exit. -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +--github-tokenGitHub token used to authenticate. You can set omit it if you have GITHUB_TOKEN env variable   +set. Can be generated with:                                                                    +https://github.com/settings/tokens/new?description=Read%20sssues&scopes=repo:status            +(TEXT)                                                                                         +--previous-releasecommit reference (for example hash or tag) of the previous release.(TEXT) +--current-releasecommit reference (for example hash or tag) of the current release.(TEXT) +--excluded-pr-listComa-separated list of PRs to exclude from the issue.(TEXT) +--limit-pr-countLimit PR count processes (useful for testing small subset of PRs).(INTEGER) +--latestRun the command against latest released version of airflow +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─ Common options ─────────────────────────────────────────────────────────────────────────────────────────────────────╮ +--verbose-vPrint verbose information about performed steps. +--help-hShow this message and exit. +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ diff --git a/dev/breeze/doc/images/output_release-management_generate-issue-content-core.txt b/dev/breeze/doc/images/output_release-management_generate-issue-content-core.txt index 825c34ee36d67..bf380665aa306 100644 --- a/dev/breeze/doc/images/output_release-management_generate-issue-content-core.txt +++ b/dev/breeze/doc/images/output_release-management_generate-issue-content-core.txt @@ -1 +1 @@ -8e911f09e161d4fff654119656017be6 +15723131610a3be9a3093f346e72ed06 diff --git a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py index 5d725ffa32888..e45dc25f7db87 100644 --- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py +++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py @@ -2115,12 +2115,18 @@ def get_change_from_line(line: str): def get_changes( - verbose: bool, previous_release: str, current_release: str, is_helm_chart: bool = False + verbose: bool, + previous_release: str, + current_release: str, + is_helm_chart: bool = False, ) -> list[Change]: print(MY_DIR_PATH, SOURCE_DIR_PATH) change_strings = subprocess.check_output( get_git_log_command( - verbose, from_commit=previous_release, to_commit=current_release, is_helm_chart=is_helm_chart + verbose, + from_commit=previous_release, + to_commit=current_release, + is_helm_chart=is_helm_chart, ), cwd=SOURCE_DIR_PATH, text=True, @@ -2227,7 +2233,13 @@ def generate_issue_content_helm_chart( limit_pr_count: int | None, ): generate_issue_content( - github_token, previous_release, current_release, excluded_pr_list, limit_pr_count, is_helm_chart=True + github_token, + previous_release, + current_release, + excluded_pr_list, + limit_pr_count, + is_helm_chart=True, + latest=False, ) @@ -2248,13 +2260,11 @@ def generate_issue_content_helm_chart( @click.option( "--previous-release", type=str, - required=True, help="commit reference (for example hash or tag) of the previous release.", ) @click.option( "--current-release", type=str, - required=True, help="commit reference (for example hash or tag) of the current release.", ) @click.option("--excluded-pr-list", type=str, help="Coma-separated list of PRs to exclude from the issue.") @@ -2264,6 +2274,11 @@ def generate_issue_content_helm_chart( default=None, help="Limit PR count processes (useful for testing small subset of PRs).", ) +@click.option( + "--latest", + is_flag=True, + help="Run the command against latest released version of airflow", +) @option_verbose def generate_issue_content_core( github_token: str, @@ -2271,9 +2286,16 @@ def generate_issue_content_core( current_release: str, excluded_pr_list: str, limit_pr_count: int | None, + latest: bool, ): generate_issue_content( - github_token, previous_release, current_release, excluded_pr_list, limit_pr_count, is_helm_chart=False + github_token, + previous_release, + current_release, + excluded_pr_list, + limit_pr_count, + is_helm_chart=False, + latest=latest, ) @@ -3149,12 +3171,31 @@ def generate_issue_content( excluded_pr_list: str, limit_pr_count: int | None, is_helm_chart: bool, + latest: bool, ): from github import Github, Issue, PullRequest, UnknownObjectException PullRequestOrIssue = Union[PullRequest.PullRequest, Issue.Issue] verbose = get_verbose() - changes = get_changes(verbose, previous_release, current_release, is_helm_chart) + + previous = previous_release + current = current_release + + if latest: + import requests + + response = requests.get("https://pypi.org/pypi/apache-airflow/json") + response.raise_for_status() + latest_released_version = response.json()["info"]["version"] + previous = str(latest_released_version) + current = os.getenv("VERSION", "HEAD") + if current == "HEAD": + get_console().print( + "\n[warning]Environment variable VERSION not set, setting current release " + "version as 'HEAD'\n" + ) + + changes = get_changes(verbose, previous, current, is_helm_chart) change_prs = [change.pr for change in changes] if excluded_pr_list: excluded_prs = [int(pr) for pr in excluded_pr_list.split(",")] 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 67bdc340a64f7..048b93d5e1115 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 @@ -274,6 +274,7 @@ "--current-release", "--excluded-pr-list", "--limit-pr-count", + "--latest", ], } ],