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]

Reply via email to