shahar1 opened a new pull request, #60993: URL: https://github.com/apache/airflow/pull/60993
related: https://github.com/apache/airflow/pull/58578 ### Context @amoghrajesh had introduced a great automation for verification of Airflow releases by PMC, which I found that has a potential to do more, as well as to be expanded to other types of releases. With the help of LLM, I tried to take it to the edge in some features (for example, trying to solve the egg-and-chicken issue with the reproducibility checks that Amogh encountered, see below). At the same time I tried to consider Jarek's [concern](https://github.com/apache/airflow/pull/58578#issuecomment-3567022715) regarding "over-automation". My honest view is that the release process for all of our artifacts is very deterministic and technical process (like many other problems we tackle in Airflow) - so while we need to understand what's happening as PMC, it **should** be automated. At the same time, it should also be **well-tested (unit tests + integration)**, and during execution it should reflect to ther user exactly what's happening. Chronologically I first started to work on expanding the ability to the providers (https://github.com/apache/airflow/pull/60802), but then I've realized that the new features could be applied here and it would make it easier to review them first on Airflow's release. After merging this PR, I will rebase my second PR for the providers and prepare it for review. In general, I think that it would make sense to keep this feature for now experimental (mainly due to the introduced "Isolated reproducible builds" - which deviate from the manual instructions), so we could adjust and stabilize it along the way in the next 2-3 releases (i.e., people who use this automation at that time - should also do the process manually). ### What **Misc.** - Terminology nit: rename the command from `validate-rc-by-pmc` to `verify-rc-by-pmc` as it is more precise description and paired with instruction's terminology (deprecated alias kept for backwards compatibility, and will be deleted upon stabilization). - The command is maked (`--help` + docs) as experimental, with clear disclaimer builds should also be verified manually. **General Improvements (all release types)** - Existing features were relocated from Airflow-Core to parent class `ReleaseValidator` for enhanced reusability - Option to download GPG keys (disabled by default) - Option to update svn to latest revision (enabled by default, there's a flag to avoid it if unwanted) - Add "verbose" mode to show more detailed verification reports - Add checks for prerequisites (e.g., svn, JAVA, etc.) - for fast-failure on when required tools are missing. **Airflow-Core Specific Improvements** - **Isolated reproducible builds** - instead of checking out from the `main` branch to the release branch and running breeze command from there, I've implemented a [worktree](https://git-scm.com/docs/git-worktree)-based reproducible builds. For a small "patching" price*, it allows: - Using the breeze on `main` when running breeze commands, instead of relying on breeze at the time of cutting the RC branch. - Working on an "isolated" copy of the release branch, ensuring that it is not contaminated by other files. By the end of the run (or if it is abrupted by Ctrl+C signal), worktree is deleted. **Notes** \* - it is not too straightforward because `.git` on worktrees is rather a file and not a folder (which caused some compatibility issues), but I've figured out how to work around that. \* \* - I'm aware that it differs from the manual process (which I don't want to change to avoid complication), but I'll be happy if we could give it a chance. I've mentioned it explicitly in the docs. **CI/CD** - Added comprehensive set of unit tests. - Added integration tests, testing each type of check - Added GitHub workflow to run the integration tests <!-- Thank you for contributing! Please provide above a brief description of the changes made in this pull request. Write a good git commit message following this guide: http://chris.beams.io/posts/git-commit/ Please make sure that your code changes are covered with tests. And in case of new features or big changes remember to adjust the documentation. Feel free to ping (in general) for the review if you do not see reaction for a few days (72 Hours is the minimum reaction time you can expect from volunteers) - we sometimes miss notifications. In case of an existing issue, reference it using one of the following: * closes: #ISSUE * related: #ISSUE --> --- ##### Was generative AI tooling used to co-author this PR? <!-- If generative AI tooling has been used in the process of authoring this PR, please change below checkbox to `[X]` followed by the name of the tool, uncomment the "Generated-by". --> - [X] Yes (please specify the tool below) Claude Opus + Gemini (Core), ChatGPT (docs) <!-- Generated-by: [Tool Name] following [the guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions) --> --- * Read the **[Pull Request Guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#pull-request-guidelines)** for more information. Note: commit author/co-author name and email in commits become permanently public when merged. * For fundamental code changes, an Airflow Improvement Proposal ([AIP](https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+Improvement+Proposals)) is needed. * When adding dependency, check compliance with the [ASF 3rd Party License Policy](https://www.apache.org/legal/resolved.html#category-x). * For significant user-facing changes create newsfragment: `{pr_number}.significant.rst` or `{issue_number}.significant.rst`, in [airflow-core/newsfragments](https://github.com/apache/airflow/tree/main/airflow-core/newsfragments). -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
