This is an automated email from the ASF dual-hosted git repository.

kaxilnaik pushed a commit to branch v3-0-test
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/v3-0-test by this push:
     new af62dbb0e72 Switch to built-in dry-run/verbose commands for breeze 
release commands (#49616)
af62dbb0e72 is described below

commit af62dbb0e723d0ce66a33967670de34717550d46
Author: Jarek Potiuk <[email protected]>
AuthorDate: Thu Apr 24 08:00:52 2025 +0200

    Switch to built-in dry-run/verbose commands for breeze release commands 
(#49616)
    
    The release commands were using special "if CI" case which has been
    pretty problematic to test and run - instead we switch to the built-in
    dry-run/verbose functionality which will produce cleaner code.
    
    (cherry picked from commit 42f81ebc70fc9e4c7916ad0494395764ad43f561)
---
 .github/workflows/basic-tests.yml                  | 28 ++++----
 ...tput_release-management_create-minor-branch.svg | 20 ++++--
 ...tput_release-management_create-minor-branch.txt |  2 +-
 ...ease-management_generate-providers-metadata.svg | 18 ++++--
 ...ease-management_generate-providers-metadata.txt |  2 +-
 ..._release-management_prepare-airflow-tarball.svg | 18 ++++--
 ..._release-management_prepare-airflow-tarball.txt |  2 +-
 .../output_release-management_start-rc-process.svg | 20 ++++--
 .../output_release-management_start-rc-process.txt |  2 +-
 .../output_release-management_start-release.svg    | 20 ++++--
 .../output_release-management_start-release.txt    |  2 +-
 .../commands/minor_release_command.py              | 72 +++++----------------
 .../commands/release_candidate_command.py          | 75 +++++++++-------------
 .../src/airflow_breeze/commands/release_command.py | 40 ++++--------
 .../commands/release_management_commands.py        |  2 +
 dev/breeze/src/airflow_breeze/utils/ci_group.py    |  9 ++-
 16 files changed, 157 insertions(+), 175 deletions(-)

diff --git a/.github/workflows/basic-tests.yml 
b/.github/workflows/basic-tests.yml
index 2eca2eec247..176921df494 100644
--- a/.github/workflows/basic-tests.yml
+++ b/.github/workflows/basic-tests.yml
@@ -337,24 +337,24 @@ jobs:
       - name: Install twine
         run: pip install twine
       - name: "Check Airflow create minor branch command"
-        run: |
-          ./scripts/ci/testing/run_breeze_command_with_retries.sh \
-          release-management create-minor-branch --version-branch 2-8 --answer 
yes
+        run: >
+          breeze release-management create-minor-branch
+          --version-branch 3-1 --answer yes --dry-run
       - name: "Check Airflow RC process command"
-        run: |
-          ./scripts/ci/testing/run_breeze_command_with_retries.sh \
-          release-management start-rc-process --version 2.8.3rc1 
--previous-version 2.8.0 --answer yes
+        run: >
+          breeze release-management start-rc-process
+          --version 3.1.0rc1 --previous-version 3.0.0 --answer yes --dry-run
       - name: "Check Airflow release process command"
-        run: |
-          ./scripts/ci/testing/run_breeze_command_with_retries.sh \
-          release-management start-release --release-candidate 2.8.3rc1 
--previous-release 2.8.0 --answer yes
+        run: >
+          breeze release-management start-release --release-candidate 3.1.0rc1
+          --previous-release 3.0.0 --answer yes --dry-run
       - name: "Test providers metadata generation"
         run: |
-          ./scripts/ci/testing/run_breeze_command_with_retries.sh \
-          release-management generate-providers-metadata --refresh-constraints
-      - name: "Fetch all git tags"
+          git remote add apache https://github.com/apache/airflow.git
+          git fetch apache --tags
+          breeze release-management generate-providers-metadata 
--refresh-constraints
+      - name: "Fetch all git tags for origin"
         run: git fetch --tags >/dev/null 2>&1 || true
       - name: "Test airflow core issue generation automatically"
         run: |
-          ./scripts/ci/testing/run_breeze_command_with_retries.sh \
-          release-management generate-issue-content-core --limit-pr-count 25 
--latest --verbose
+          breeze release-management generate-issue-content-core 
--limit-pr-count 25 --latest --verbose
diff --git 
a/dev/breeze/doc/images/output_release-management_create-minor-branch.svg 
b/dev/breeze/doc/images/output_release-management_create-minor-branch.svg
index 3f051b9276f..7262f9b73a2 100644
--- a/dev/breeze/doc/images/output_release-management_create-minor-branch.svg
+++ b/dev/breeze/doc/images/output_release-management_create-minor-branch.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 342.79999999999995" 
xmlns="http://www.w3.org/2000/svg";>
+<svg class="rich-terminal" viewBox="0 0 1482 391.59999999999997" 
xmlns="http://www.w3.org/2000/svg";>
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -45,7 +45,7 @@
 
     <defs>
     <clipPath id="breeze-release-management-create-minor-branch-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="291.79999999999995" />
+      <rect x="0" y="0" width="1463.0" height="340.59999999999997" />
     </clipPath>
     <clipPath id="breeze-release-management-create-minor-branch-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -80,9 +80,15 @@
 <clipPath id="breeze-release-management-create-minor-branch-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-release-management-create-minor-branch-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-create-minor-branch-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="340.8" rx="8"/><text 
class="breeze-release-management-create-minor-branch-title" fill="#c5c8c6" 
text-anchor="middle" x="740" 
y="27">Command:&#160;release-management&#160;create-minor-branch</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="389.6" rx="8"/><text 
class="breeze-release-management-create-minor-branch-title" fill="#c5c8c6" 
text-anchor="middle" x="740" 
y="27">Command:&#160;release-management&#160;create-minor-branch</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -101,9 +107,11 @@
 </text><text class="breeze-release-management-create-minor-branch-r5" x="0" 
y="166.4" textLength="12.2" 
clip-path="url(#breeze-release-management-create-minor-branch-line-6)">│</text><text
 class="breeze-release-management-create-minor-branch-r6" x="24.4" y="166.4" 
textLength="12.2" 
clip-path="url(#breeze-release-management-create-minor-branch-line-6)">*</text><text
 class="breeze-release-management-create-minor-branch-r4" x="61" y="166.4" 
textLength="195.2" clip-path="url(#breeze-release- [...]
 </text><text class="breeze-release-management-create-minor-branch-r5" x="0" 
y="190.8" textLength="1464" 
clip-path="url(#breeze-release-management-create-minor-branch-line-7)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-create-minor-branch-r1" x="1464" y="190.8" 
textLength="12.2" 
clip-path="url(#breeze-release-management-create-minor-branch-line-7)">
 </text><text class="breeze-release-management-create-minor-branch-r5" x="0" 
y="215.2" textLength="24.4" 
clip-path="url(#breeze-release-management-create-minor-branch-line-8)">╭─</text><text
 class="breeze-release-management-create-minor-branch-r5" x="24.4" y="215.2" 
textLength="195.2" 
clip-path="url(#breeze-release-management-create-minor-branch-line-8)">&#160;Common&#160;options&#160;</text><text
 class="breeze-release-management-create-minor-branch-r5" x="219.6" y="215.2" 
textLength="122 [...]
-</text><text class="breeze-release-management-create-minor-branch-r5" x="0" 
y="239.6" textLength="12.2" 
clip-path="url(#breeze-release-management-create-minor-branch-line-9)">│</text><text
 class="breeze-release-management-create-minor-branch-r4" x="24.4" y="239.6" 
textLength="97.6" 
clip-path="url(#breeze-release-management-create-minor-branch-line-9)">--answer</text><text
 class="breeze-release-management-create-minor-branch-r9" x="146.4" y="239.6" 
textLength="24.4" clip-path="url(#breeze [...]
-</text><text class="breeze-release-management-create-minor-branch-r5" x="0" 
y="264" textLength="12.2" 
clip-path="url(#breeze-release-management-create-minor-branch-line-10)">│</text><text
 class="breeze-release-management-create-minor-branch-r4" x="24.4" y="264" 
textLength="73.2" 
clip-path="url(#breeze-release-management-create-minor-branch-line-10)">--help</text><text
 class="breeze-release-management-create-minor-branch-r9" x="146.4" y="264" 
textLength="24.4" clip-path="url(#breeze-relea [...]
-</text><text class="breeze-release-management-create-minor-branch-r5" x="0" 
y="288.4" textLength="1464" 
clip-path="url(#breeze-release-management-create-minor-branch-line-11)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-create-minor-branch-r1" x="1464" y="288.4" 
textLength="12.2" 
clip-path="url(#breeze-release-management-create-minor-branch-line-11)">
+</text><text class="breeze-release-management-create-minor-branch-r5" x="0" 
y="239.6" textLength="12.2" 
clip-path="url(#breeze-release-management-create-minor-branch-line-9)">│</text><text
 class="breeze-release-management-create-minor-branch-r4" x="24.4" y="239.6" 
textLength="97.6" 
clip-path="url(#breeze-release-management-create-minor-branch-line-9)">--answer</text><text
 class="breeze-release-management-create-minor-branch-r9" x="158.6" y="239.6" 
textLength="24.4" clip-path="url(#breeze [...]
+</text><text class="breeze-release-management-create-minor-branch-r5" x="0" 
y="264" textLength="12.2" 
clip-path="url(#breeze-release-management-create-minor-branch-line-10)">│</text><text
 class="breeze-release-management-create-minor-branch-r4" x="24.4" y="264" 
textLength="109.8" 
clip-path="url(#breeze-release-management-create-minor-branch-line-10)">--verbose</text><text
 class="breeze-release-management-create-minor-branch-r9" x="158.6" y="264" 
textLength="24.4" clip-path="url(#breeze-r [...]
+</text><text class="breeze-release-management-create-minor-branch-r5" x="0" 
y="288.4" textLength="12.2" 
clip-path="url(#breeze-release-management-create-minor-branch-line-11)">│</text><text
 class="breeze-release-management-create-minor-branch-r4" x="24.4" y="288.4" 
textLength="109.8" 
clip-path="url(#breeze-release-management-create-minor-branch-line-11)">--dry-run</text><text
 class="breeze-release-management-create-minor-branch-r9" x="158.6" y="288.4" 
textLength="24.4" clip-path="url(#br [...]
+</text><text class="breeze-release-management-create-minor-branch-r5" x="0" 
y="312.8" textLength="12.2" 
clip-path="url(#breeze-release-management-create-minor-branch-line-12)">│</text><text
 class="breeze-release-management-create-minor-branch-r4" x="24.4" y="312.8" 
textLength="73.2" 
clip-path="url(#breeze-release-management-create-minor-branch-line-12)">--help</text><text
 class="breeze-release-management-create-minor-branch-r9" x="158.6" y="312.8" 
textLength="24.4" clip-path="url(#breeze [...]
+</text><text class="breeze-release-management-create-minor-branch-r5" x="0" 
y="337.2" textLength="1464" 
clip-path="url(#breeze-release-management-create-minor-branch-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-create-minor-branch-r1" x="1464" y="337.2" 
textLength="12.2" 
clip-path="url(#breeze-release-management-create-minor-branch-line-13)">
 </text>
     </g>
     </g>
diff --git 
a/dev/breeze/doc/images/output_release-management_create-minor-branch.txt 
b/dev/breeze/doc/images/output_release-management_create-minor-branch.txt
index ba10a8aae05..52b3e6a8f57 100644
--- a/dev/breeze/doc/images/output_release-management_create-minor-branch.txt
+++ b/dev/breeze/doc/images/output_release-management_create-minor-branch.txt
@@ -1 +1 @@
-5b63e90b9597e5a47cc4fbfa32ab9fbe
+83ae80576428b38723dccf2c385c1407
diff --git 
a/dev/breeze/doc/images/output_release-management_generate-providers-metadata.svg
 
b/dev/breeze/doc/images/output_release-management_generate-providers-metadata.svg
index 08a49800323..9c6a8105daa 100644
--- 
a/dev/breeze/doc/images/output_release-management_generate-providers-metadata.svg
+++ 
b/dev/breeze/doc/images/output_release-management_generate-providers-metadata.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 367.2" 
xmlns="http://www.w3.org/2000/svg";>
+<svg class="rich-terminal" viewBox="0 0 1482 416.0" 
xmlns="http://www.w3.org/2000/svg";>
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -43,7 +43,7 @@
 
     <defs>
     <clipPath 
id="breeze-release-management-generate-providers-metadata-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="316.2" />
+      <rect x="0" y="0" width="1463.0" height="365.0" />
     </clipPath>
     <clipPath 
id="breeze-release-management-generate-providers-metadata-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -81,9 +81,15 @@
 <clipPath id="breeze-release-management-generate-providers-metadata-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-release-management-generate-providers-metadata-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-generate-providers-metadata-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="365.2" rx="8"/><text 
class="breeze-release-management-generate-providers-metadata-title" 
fill="#c5c8c6" text-anchor="middle" x="740" 
y="27">Command:&#160;release-management&#160;generate-providers-metadata</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="414" rx="8"/><text 
class="breeze-release-management-generate-providers-metadata-title" 
fill="#c5c8c6" text-anchor="middle" x="740" 
y="27">Command:&#160;release-management&#160;generate-providers-metadata</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -104,8 +110,10 @@
 </text><text class="breeze-release-management-generate-providers-metadata-r5" 
x="0" y="215.2" textLength="12.2" 
clip-path="url(#breeze-release-management-generate-providers-metadata-line-8)">│</text><text
 class="breeze-release-management-generate-providers-metadata-r6" x="329.4" 
y="215.2" textLength="976" 
clip-path="url(#breeze-release-management-generate-providers-metadata-line-8)">(3.6&#160;|&#160;3.7&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11&#160;|&#160;3.12)&#
 [...]
 </text><text class="breeze-release-management-generate-providers-metadata-r5" 
x="0" y="239.6" textLength="1464" 
clip-path="url(#breeze-release-management-generate-providers-metadata-line-9)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-generate-providers-metadata-r1" x="1464" 
y="239.6" textLength="12.2" 
clip-path="url(#breeze-release-management-generate-providers-metad [...]
 </text><text class="breeze-release-management-generate-providers-metadata-r5" 
x="0" y="264" textLength="24.4" 
clip-path="url(#breeze-release-management-generate-providers-metadata-line-10)">╭─</text><text
 class="breeze-release-management-generate-providers-metadata-r5" x="24.4" 
y="264" textLength="195.2" 
clip-path="url(#breeze-release-management-generate-providers-metadata-line-10)">&#160;Common&#160;options&#160;</text><text
 class="breeze-release-management-generate-providers-metadata-r [...]
-</text><text class="breeze-release-management-generate-providers-metadata-r5" 
x="0" y="288.4" textLength="12.2" 
clip-path="url(#breeze-release-management-generate-providers-metadata-line-11)">│</text><text
 class="breeze-release-management-generate-providers-metadata-r4" x="24.4" 
y="288.4" textLength="73.2" 
clip-path="url(#breeze-release-management-generate-providers-metadata-line-11)">--help</text><text
 class="breeze-release-management-generate-providers-metadata-r7" x="122" 
y="288.4" te [...]
-</text><text class="breeze-release-management-generate-providers-metadata-r5" 
x="0" y="312.8" textLength="1464" 
clip-path="url(#breeze-release-management-generate-providers-metadata-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-generate-providers-metadata-r1" x="1464" 
y="312.8" textLength="12.2" 
clip-path="url(#breeze-release-management-generate-providers-meta [...]
+</text><text class="breeze-release-management-generate-providers-metadata-r5" 
x="0" y="288.4" textLength="12.2" 
clip-path="url(#breeze-release-management-generate-providers-metadata-line-11)">│</text><text
 class="breeze-release-management-generate-providers-metadata-r4" x="24.4" 
y="288.4" textLength="109.8" 
clip-path="url(#breeze-release-management-generate-providers-metadata-line-11)">--dry-run</text><text
 class="breeze-release-management-generate-providers-metadata-r7" x="158.6" 
y="288 [...]
+</text><text class="breeze-release-management-generate-providers-metadata-r5" 
x="0" y="312.8" textLength="12.2" 
clip-path="url(#breeze-release-management-generate-providers-metadata-line-12)">│</text><text
 class="breeze-release-management-generate-providers-metadata-r4" x="24.4" 
y="312.8" textLength="109.8" 
clip-path="url(#breeze-release-management-generate-providers-metadata-line-12)">--verbose</text><text
 class="breeze-release-management-generate-providers-metadata-r7" x="158.6" 
y="312 [...]
+</text><text class="breeze-release-management-generate-providers-metadata-r5" 
x="0" y="337.2" textLength="12.2" 
clip-path="url(#breeze-release-management-generate-providers-metadata-line-13)">│</text><text
 class="breeze-release-management-generate-providers-metadata-r4" x="24.4" 
y="337.2" textLength="73.2" 
clip-path="url(#breeze-release-management-generate-providers-metadata-line-13)">--help</text><text
 class="breeze-release-management-generate-providers-metadata-r7" x="158.6" 
y="337.2"  [...]
+</text><text class="breeze-release-management-generate-providers-metadata-r5" 
x="0" y="361.6" textLength="1464" 
clip-path="url(#breeze-release-management-generate-providers-metadata-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-generate-providers-metadata-r1" x="1464" 
y="361.6" textLength="12.2" 
clip-path="url(#breeze-release-management-generate-providers-meta [...]
 </text>
     </g>
     </g>
diff --git 
a/dev/breeze/doc/images/output_release-management_generate-providers-metadata.txt
 
b/dev/breeze/doc/images/output_release-management_generate-providers-metadata.txt
index a7a955ae179..8d686a6b365 100644
--- 
a/dev/breeze/doc/images/output_release-management_generate-providers-metadata.txt
+++ 
b/dev/breeze/doc/images/output_release-management_generate-providers-metadata.txt
@@ -1 +1 @@
-1677df1d9992caf2709c5fa9cd4668b2
+572b36905a967caed880209b60618ede
diff --git 
a/dev/breeze/doc/images/output_release-management_prepare-airflow-tarball.svg 
b/dev/breeze/doc/images/output_release-management_prepare-airflow-tarball.svg
index 7d39409c81b..67c814251aa 100644
--- 
a/dev/breeze/doc/images/output_release-management_prepare-airflow-tarball.svg
+++ 
b/dev/breeze/doc/images/output_release-management_prepare-airflow-tarball.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 318.4" 
xmlns="http://www.w3.org/2000/svg";>
+<svg class="rich-terminal" viewBox="0 0 1482 367.2" 
xmlns="http://www.w3.org/2000/svg";>
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -45,7 +45,7 @@
 
     <defs>
     <clipPath 
id="breeze-release-management-prepare-airflow-tarball-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="267.4" />
+      <rect x="0" y="0" width="1463.0" height="316.2" />
     </clipPath>
     <clipPath id="breeze-release-management-prepare-airflow-tarball-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -77,9 +77,15 @@
 <clipPath id="breeze-release-management-prepare-airflow-tarball-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-release-management-prepare-airflow-tarball-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-prepare-airflow-tarball-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="316.4" rx="8"/><text 
class="breeze-release-management-prepare-airflow-tarball-title" fill="#c5c8c6" 
text-anchor="middle" x="740" 
y="27">Command:&#160;release-management&#160;prepare-airflow-tarball</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="365.2" rx="8"/><text 
class="breeze-release-management-prepare-airflow-tarball-title" fill="#c5c8c6" 
text-anchor="middle" x="740" 
y="27">Command:&#160;release-management&#160;prepare-airflow-tarball</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -98,8 +104,10 @@
 </text><text class="breeze-release-management-prepare-airflow-tarball-r5" 
x="0" y="166.4" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-airflow-tarball-line-6)">│</text><text
 class="breeze-release-management-prepare-airflow-tarball-r6" x="24.4" 
y="166.4" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-airflow-tarball-line-6)">*</text><text
 class="breeze-release-management-prepare-airflow-tarball-r4" x="61" y="166.4" 
textLength="109.8" clip-path=" [...]
 </text><text class="breeze-release-management-prepare-airflow-tarball-r5" 
x="0" y="190.8" textLength="1464" 
clip-path="url(#breeze-release-management-prepare-airflow-tarball-line-7)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-prepare-airflow-tarball-r1" x="1464" 
y="190.8" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-airflow-tarball-line-7)">
 </text><text class="breeze-release-management-prepare-airflow-tarball-r5" 
x="0" y="215.2" textLength="24.4" 
clip-path="url(#breeze-release-management-prepare-airflow-tarball-line-8)">╭─</text><text
 class="breeze-release-management-prepare-airflow-tarball-r5" x="24.4" 
y="215.2" textLength="195.2" 
clip-path="url(#breeze-release-management-prepare-airflow-tarball-line-8)">&#160;Common&#160;options&#160;</text><text
 class="breeze-release-management-prepare-airflow-tarball-r5" x="219.6" y="21 
[...]
-</text><text class="breeze-release-management-prepare-airflow-tarball-r5" 
x="0" y="239.6" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-airflow-tarball-line-9)">│</text><text
 class="breeze-release-management-prepare-airflow-tarball-r4" x="24.4" 
y="239.6" textLength="73.2" 
clip-path="url(#breeze-release-management-prepare-airflow-tarball-line-9)">--help</text><text
 class="breeze-release-management-prepare-airflow-tarball-r9" x="122" y="239.6" 
textLength="24.4" clip-p [...]
-</text><text class="breeze-release-management-prepare-airflow-tarball-r5" 
x="0" y="264" textLength="1464" 
clip-path="url(#breeze-release-management-prepare-airflow-tarball-line-10)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-prepare-airflow-tarball-r1" x="1464" y="264" 
textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-airflow-tarball-line-10)">
+</text><text class="breeze-release-management-prepare-airflow-tarball-r5" 
x="0" y="239.6" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-airflow-tarball-line-9)">│</text><text
 class="breeze-release-management-prepare-airflow-tarball-r4" x="24.4" 
y="239.6" textLength="109.8" 
clip-path="url(#breeze-release-management-prepare-airflow-tarball-line-9)">--dry-run</text><text
 class="breeze-release-management-prepare-airflow-tarball-r9" x="158.6" 
y="239.6" textLength="24.4"  [...]
+</text><text class="breeze-release-management-prepare-airflow-tarball-r5" 
x="0" y="264" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-airflow-tarball-line-10)">│</text><text
 class="breeze-release-management-prepare-airflow-tarball-r4" x="24.4" y="264" 
textLength="109.8" 
clip-path="url(#breeze-release-management-prepare-airflow-tarball-line-10)">--verbose</text><text
 class="breeze-release-management-prepare-airflow-tarball-r9" x="158.6" y="264" 
textLength="24.4" clip [...]
+</text><text class="breeze-release-management-prepare-airflow-tarball-r5" 
x="0" y="288.4" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-airflow-tarball-line-11)">│</text><text
 class="breeze-release-management-prepare-airflow-tarball-r4" x="24.4" 
y="288.4" textLength="73.2" 
clip-path="url(#breeze-release-management-prepare-airflow-tarball-line-11)">--help</text><text
 class="breeze-release-management-prepare-airflow-tarball-r9" x="158.6" 
y="288.4" textLength="24.4" cl [...]
+</text><text class="breeze-release-management-prepare-airflow-tarball-r5" 
x="0" y="312.8" textLength="1464" 
clip-path="url(#breeze-release-management-prepare-airflow-tarball-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-prepare-airflow-tarball-r1" x="1464" 
y="312.8" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-airflow-tarball-line-12)">
 </text>
     </g>
     </g>
diff --git 
a/dev/breeze/doc/images/output_release-management_prepare-airflow-tarball.txt 
b/dev/breeze/doc/images/output_release-management_prepare-airflow-tarball.txt
index 12bc4ebe940..19b5526b1c6 100644
--- 
a/dev/breeze/doc/images/output_release-management_prepare-airflow-tarball.txt
+++ 
b/dev/breeze/doc/images/output_release-management_prepare-airflow-tarball.txt
@@ -1 +1 @@
-7cf8b45e0b23837e8bf99d5a4907d48c
+f98358d95810966a00142a5e654c7909
diff --git 
a/dev/breeze/doc/images/output_release-management_start-rc-process.svg 
b/dev/breeze/doc/images/output_release-management_start-rc-process.svg
index b0d93b28c1c..cd966701475 100644
--- a/dev/breeze/doc/images/output_release-management_start-rc-process.svg
+++ b/dev/breeze/doc/images/output_release-management_start-rc-process.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 391.59999999999997" 
xmlns="http://www.w3.org/2000/svg";>
+<svg class="rich-terminal" viewBox="0 0 1482 440.4" 
xmlns="http://www.w3.org/2000/svg";>
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -45,7 +45,7 @@
 
     <defs>
     <clipPath id="breeze-release-management-start-rc-process-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="340.59999999999997" />
+      <rect x="0" y="0" width="1463.0" height="389.4" />
     </clipPath>
     <clipPath id="breeze-release-management-start-rc-process-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -86,9 +86,15 @@
 <clipPath id="breeze-release-management-start-rc-process-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-release-management-start-rc-process-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-start-rc-process-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="389.6" rx="8"/><text 
class="breeze-release-management-start-rc-process-title" fill="#c5c8c6" 
text-anchor="middle" x="740" 
y="27">Command:&#160;release-management&#160;start-rc-process</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="438.4" rx="8"/><text 
class="breeze-release-management-start-rc-process-title" fill="#c5c8c6" 
text-anchor="middle" x="740" 
y="27">Command:&#160;release-management&#160;start-rc-process</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -109,9 +115,11 @@
 </text><text class="breeze-release-management-start-rc-process-r5" x="0" 
y="215.2" textLength="12.2" 
clip-path="url(#breeze-release-management-start-rc-process-line-8)">│</text><text
 class="breeze-release-management-start-rc-process-r4" x="61" y="215.2" 
textLength="170.8" 
clip-path="url(#breeze-release-management-start-rc-process-line-8)">--github-token</text><text
 class="breeze-release-management-start-rc-process-r1" x="329.4" y="215.2" 
textLength="878.4" clip-path="url(#breeze-release- [...]
 </text><text class="breeze-release-management-start-rc-process-r5" x="0" 
y="239.6" textLength="1464" 
clip-path="url(#breeze-release-management-start-rc-process-line-9)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-start-rc-process-r1" x="1464" y="239.6" 
textLength="12.2" 
clip-path="url(#breeze-release-management-start-rc-process-line-9)">
 </text><text class="breeze-release-management-start-rc-process-r5" x="0" 
y="264" textLength="24.4" 
clip-path="url(#breeze-release-management-start-rc-process-line-10)">╭─</text><text
 class="breeze-release-management-start-rc-process-r5" x="24.4" y="264" 
textLength="195.2" 
clip-path="url(#breeze-release-management-start-rc-process-line-10)">&#160;Common&#160;options&#160;</text><text
 class="breeze-release-management-start-rc-process-r5" x="219.6" y="264" 
textLength="1220" clip-path="url(# [...]
-</text><text class="breeze-release-management-start-rc-process-r5" x="0" 
y="288.4" textLength="12.2" 
clip-path="url(#breeze-release-management-start-rc-process-line-11)">│</text><text
 class="breeze-release-management-start-rc-process-r4" x="24.4" y="288.4" 
textLength="97.6" 
clip-path="url(#breeze-release-management-start-rc-process-line-11)">--answer</text><text
 class="breeze-release-management-start-rc-process-r9" x="146.4" y="288.4" 
textLength="24.4" clip-path="url(#breeze-release-mana [...]
-</text><text class="breeze-release-management-start-rc-process-r5" x="0" 
y="312.8" textLength="12.2" 
clip-path="url(#breeze-release-management-start-rc-process-line-12)">│</text><text
 class="breeze-release-management-start-rc-process-r4" x="24.4" y="312.8" 
textLength="73.2" 
clip-path="url(#breeze-release-management-start-rc-process-line-12)">--help</text><text
 class="breeze-release-management-start-rc-process-r9" x="146.4" y="312.8" 
textLength="24.4" clip-path="url(#breeze-release-manage [...]
-</text><text class="breeze-release-management-start-rc-process-r5" x="0" 
y="337.2" textLength="1464" 
clip-path="url(#breeze-release-management-start-rc-process-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-start-rc-process-r1" x="1464" y="337.2" 
textLength="12.2" 
clip-path="url(#breeze-release-management-start-rc-process-line-13)">
+</text><text class="breeze-release-management-start-rc-process-r5" x="0" 
y="288.4" textLength="12.2" 
clip-path="url(#breeze-release-management-start-rc-process-line-11)">│</text><text
 class="breeze-release-management-start-rc-process-r4" x="24.4" y="288.4" 
textLength="97.6" 
clip-path="url(#breeze-release-management-start-rc-process-line-11)">--answer</text><text
 class="breeze-release-management-start-rc-process-r9" x="158.6" y="288.4" 
textLength="24.4" clip-path="url(#breeze-release-mana [...]
+</text><text class="breeze-release-management-start-rc-process-r5" x="0" 
y="312.8" textLength="12.2" 
clip-path="url(#breeze-release-management-start-rc-process-line-12)">│</text><text
 class="breeze-release-management-start-rc-process-r4" x="24.4" y="312.8" 
textLength="109.8" 
clip-path="url(#breeze-release-management-start-rc-process-line-12)">--dry-run</text><text
 class="breeze-release-management-start-rc-process-r9" x="158.6" y="312.8" 
textLength="24.4" clip-path="url(#breeze-release-ma [...]
+</text><text class="breeze-release-management-start-rc-process-r5" x="0" 
y="337.2" textLength="12.2" 
clip-path="url(#breeze-release-management-start-rc-process-line-13)">│</text><text
 class="breeze-release-management-start-rc-process-r4" x="24.4" y="337.2" 
textLength="109.8" 
clip-path="url(#breeze-release-management-start-rc-process-line-13)">--verbose</text><text
 class="breeze-release-management-start-rc-process-r9" x="158.6" y="337.2" 
textLength="24.4" clip-path="url(#breeze-release-ma [...]
+</text><text class="breeze-release-management-start-rc-process-r5" x="0" 
y="361.6" textLength="12.2" 
clip-path="url(#breeze-release-management-start-rc-process-line-14)">│</text><text
 class="breeze-release-management-start-rc-process-r4" x="24.4" y="361.6" 
textLength="73.2" 
clip-path="url(#breeze-release-management-start-rc-process-line-14)">--help</text><text
 class="breeze-release-management-start-rc-process-r9" x="158.6" y="361.6" 
textLength="24.4" clip-path="url(#breeze-release-manage [...]
+</text><text class="breeze-release-management-start-rc-process-r5" x="0" 
y="386" textLength="1464" 
clip-path="url(#breeze-release-management-start-rc-process-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-start-rc-process-r1" x="1464" y="386" 
textLength="12.2" 
clip-path="url(#breeze-release-management-start-rc-process-line-15)">
 </text>
     </g>
     </g>
diff --git 
a/dev/breeze/doc/images/output_release-management_start-rc-process.txt 
b/dev/breeze/doc/images/output_release-management_start-rc-process.txt
index dfc14f293dd..b3b458160d9 100644
--- a/dev/breeze/doc/images/output_release-management_start-rc-process.txt
+++ b/dev/breeze/doc/images/output_release-management_start-rc-process.txt
@@ -1 +1 @@
-e75bc9b0750c67b82bb1cf41b6cb0ccd
+e213b793839b778288f40a3af9e076f6
diff --git a/dev/breeze/doc/images/output_release-management_start-release.svg 
b/dev/breeze/doc/images/output_release-management_start-release.svg
index d5efa8eb37e..91411fe496c 100644
--- a/dev/breeze/doc/images/output_release-management_start-release.svg
+++ b/dev/breeze/doc/images/output_release-management_start-release.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 367.2" 
xmlns="http://www.w3.org/2000/svg";>
+<svg class="rich-terminal" viewBox="0 0 1482 416.0" 
xmlns="http://www.w3.org/2000/svg";>
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -45,7 +45,7 @@
 
     <defs>
     <clipPath id="breeze-release-management-start-release-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="316.2" />
+      <rect x="0" y="0" width="1463.0" height="365.0" />
     </clipPath>
     <clipPath id="breeze-release-management-start-release-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -83,9 +83,15 @@
 <clipPath id="breeze-release-management-start-release-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-release-management-start-release-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-start-release-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="365.2" rx="8"/><text 
class="breeze-release-management-start-release-title" fill="#c5c8c6" 
text-anchor="middle" x="740" 
y="27">Command:&#160;release-management&#160;start-release</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="414" rx="8"/><text 
class="breeze-release-management-start-release-title" fill="#c5c8c6" 
text-anchor="middle" x="740" 
y="27">Command:&#160;release-management&#160;start-release</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -105,9 +111,11 @@
 </text><text class="breeze-release-management-start-release-r5" x="0" 
y="190.8" textLength="12.2" 
clip-path="url(#breeze-release-management-start-release-line-7)">│</text><text 
class="breeze-release-management-start-release-r6" x="24.4" y="190.8" 
textLength="12.2" 
clip-path="url(#breeze-release-management-start-release-line-7)">*</text><text 
class="breeze-release-management-start-release-r4" x="61" y="190.8" 
textLength="219.6" 
clip-path="url(#breeze-release-management-start-release-line- [...]
 </text><text class="breeze-release-management-start-release-r5" x="0" 
y="215.2" textLength="1464" 
clip-path="url(#breeze-release-management-start-release-line-8)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-start-release-r1" x="1464" y="215.2" 
textLength="12.2" 
clip-path="url(#breeze-release-management-start-release-line-8)">
 </text><text class="breeze-release-management-start-release-r5" x="0" 
y="239.6" textLength="24.4" 
clip-path="url(#breeze-release-management-start-release-line-9)">╭─</text><text 
class="breeze-release-management-start-release-r5" x="24.4" y="239.6" 
textLength="195.2" 
clip-path="url(#breeze-release-management-start-release-line-9)">&#160;Common&#160;options&#160;</text><text
 class="breeze-release-management-start-release-r5" x="219.6" y="239.6" 
textLength="1220" clip-path="url(#breeze-rele [...]
-</text><text class="breeze-release-management-start-release-r5" x="0" y="264" 
textLength="12.2" 
clip-path="url(#breeze-release-management-start-release-line-10)">│</text><text 
class="breeze-release-management-start-release-r4" x="24.4" y="264" 
textLength="97.6" 
clip-path="url(#breeze-release-management-start-release-line-10)">--answer</text><text
 class="breeze-release-management-start-release-r9" x="146.4" y="264" 
textLength="24.4" clip-path="url(#breeze-release-management-start-release- [...]
-</text><text class="breeze-release-management-start-release-r5" x="0" 
y="288.4" textLength="12.2" 
clip-path="url(#breeze-release-management-start-release-line-11)">│</text><text 
class="breeze-release-management-start-release-r4" x="24.4" y="288.4" 
textLength="73.2" 
clip-path="url(#breeze-release-management-start-release-line-11)">--help</text><text
 class="breeze-release-management-start-release-r9" x="146.4" y="288.4" 
textLength="24.4" clip-path="url(#breeze-release-management-start-rele [...]
-</text><text class="breeze-release-management-start-release-r5" x="0" 
y="312.8" textLength="1464" 
clip-path="url(#breeze-release-management-start-release-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-start-release-r1" x="1464" y="312.8" 
textLength="12.2" 
clip-path="url(#breeze-release-management-start-release-line-12)">
+</text><text class="breeze-release-management-start-release-r5" x="0" y="264" 
textLength="12.2" 
clip-path="url(#breeze-release-management-start-release-line-10)">│</text><text 
class="breeze-release-management-start-release-r4" x="24.4" y="264" 
textLength="97.6" 
clip-path="url(#breeze-release-management-start-release-line-10)">--answer</text><text
 class="breeze-release-management-start-release-r9" x="158.6" y="264" 
textLength="24.4" clip-path="url(#breeze-release-management-start-release- [...]
+</text><text class="breeze-release-management-start-release-r5" x="0" 
y="288.4" textLength="12.2" 
clip-path="url(#breeze-release-management-start-release-line-11)">│</text><text 
class="breeze-release-management-start-release-r4" x="24.4" y="288.4" 
textLength="109.8" 
clip-path="url(#breeze-release-management-start-release-line-11)">--dry-run</text><text
 class="breeze-release-management-start-release-r9" x="158.6" y="288.4" 
textLength="24.4" clip-path="url(#breeze-release-management-start- [...]
+</text><text class="breeze-release-management-start-release-r5" x="0" 
y="312.8" textLength="12.2" 
clip-path="url(#breeze-release-management-start-release-line-12)">│</text><text 
class="breeze-release-management-start-release-r4" x="24.4" y="312.8" 
textLength="109.8" 
clip-path="url(#breeze-release-management-start-release-line-12)">--verbose</text><text
 class="breeze-release-management-start-release-r9" x="158.6" y="312.8" 
textLength="24.4" clip-path="url(#breeze-release-management-start- [...]
+</text><text class="breeze-release-management-start-release-r5" x="0" 
y="337.2" textLength="12.2" 
clip-path="url(#breeze-release-management-start-release-line-13)">│</text><text 
class="breeze-release-management-start-release-r4" x="24.4" y="337.2" 
textLength="73.2" 
clip-path="url(#breeze-release-management-start-release-line-13)">--help</text><text
 class="breeze-release-management-start-release-r9" x="158.6" y="337.2" 
textLength="24.4" clip-path="url(#breeze-release-management-start-rele [...]
+</text><text class="breeze-release-management-start-release-r5" x="0" 
y="361.6" textLength="1464" 
clip-path="url(#breeze-release-management-start-release-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-start-release-r1" x="1464" y="361.6" 
textLength="12.2" 
clip-path="url(#breeze-release-management-start-release-line-14)">
 </text>
     </g>
     </g>
diff --git a/dev/breeze/doc/images/output_release-management_start-release.txt 
b/dev/breeze/doc/images/output_release-management_start-release.txt
index 156ac248a84..98156901ab4 100644
--- a/dev/breeze/doc/images/output_release-management_start-release.txt
+++ b/dev/breeze/doc/images/output_release-management_start-release.txt
@@ -1 +1 @@
-495a5e3d024bc6039290d9f4528a3ca4
+d84c6e5a6fcab35c07287bc4d2d65841
diff --git a/dev/breeze/src/airflow_breeze/commands/minor_release_command.py 
b/dev/breeze/src/airflow_breeze/commands/minor_release_command.py
index c55a9581bbe..edacafdcd7a 100644
--- a/dev/breeze/src/airflow_breeze/commands/minor_release_command.py
+++ b/dev/breeze/src/airflow_breeze/commands/minor_release_command.py
@@ -21,28 +21,18 @@ import sys
 
 import click
 
-from airflow_breeze.commands.common_options import option_answer
+from airflow_breeze.commands.common_options import option_answer, 
option_dry_run, option_verbose
 from airflow_breeze.commands.release_management_group import release_management
 from airflow_breeze.utils.confirm import confirm_action
 from airflow_breeze.utils.console import console_print
 from airflow_breeze.utils.path_utils import AIRFLOW_ROOT_PATH
 from airflow_breeze.utils.run_utils import run_command
 
-CI = os.environ.get("CI")
-DRY_RUN = True if CI else False
-
 
 def create_branch(version_branch):
     if confirm_action(f"Create version branch: {version_branch}?"):
-        if DRY_RUN:
-            console_print("Skipping below command on CI")
-
-        run_command(["git", "checkout", "main"], dry_run_override=DRY_RUN, 
check=True)
-        if DRY_RUN:
-            console_print("Skipping below command on CI")
-        run_command(
-            ["git", "checkout", "-b", f"v{version_branch}-test"], 
dry_run_override=DRY_RUN, check=True
-        )
+        run_command(["git", "checkout", "main"], check=True)
+        run_command(["git", "checkout", "-b", f"v{version_branch}-test"], 
check=True)
         console_print(f"Created branch: v{version_branch}-test")
 
 
@@ -63,25 +53,16 @@ def update_default_branch(version_branch):
 
 def commit_changes(version_branch):
     if confirm_action("Commit the above changes?"):
-        if DRY_RUN:
-            console_print("Skipping below command on CI")
-        run_command(["git", "add", "-p", "."], dry_run_override=DRY_RUN, 
check=True)
-        if DRY_RUN:
-            console_print("Skipping below command on CI")
+        run_command(["git", "add", "-p", "."], check=True)
         run_command(
             ["git", "commit", "-m", f"Update default branches for 
{version_branch}", "--no-verify"],
-            dry_run_override=DRY_RUN,
             check=True,
         )
 
 
 def create_stable_branch(version_branch):
     if confirm_action(f"Create stable branch: v{version_branch}-stable?"):
-        if DRY_RUN:
-            console_print("Skipping below command on CI")
-        run_command(
-            ["git", "checkout", "-b", f"v{version_branch}-stable"], 
dry_run_override=DRY_RUN, check=True
-        )
+        run_command(["git", "checkout", "-b", f"v{version_branch}-stable"], 
check=True)
         console_print(f"Created branch: v{version_branch}-stable")
     else:
         run_command(["git", "checkout", f"v{version_branch}-stable"], 
check=True)
@@ -89,45 +70,27 @@ def create_stable_branch(version_branch):
 
 def push_test_and_stable_branch(version_branch):
     if confirm_action("Push test and stable branches?"):
-        if DRY_RUN:
-            console_print("Skipping below command on CI")
-
-        run_command(["git", "checkout", f"v{version_branch}-test"], 
dry_run_override=DRY_RUN, check=True)
-        if DRY_RUN:
-            console_print("Skipping below command on CI")
         run_command(
+            ["git", "checkout", f"v{version_branch}-test"],
             ["git", "push", "--set-upstream", "origin", 
f"v{version_branch}-test"],
-            dry_run_override=DRY_RUN,
             check=True,
         )
-        if DRY_RUN:
-            console_print("Skipping below command on CI")
-
-        run_command(["git", "checkout", f"v{version_branch}-stable"], 
dry_run_override=DRY_RUN, check=True)
-        if DRY_RUN:
-            console_print("Skipping below command on CI")
+        run_command(["git", "checkout", f"v{version_branch}-stable"], 
check=True)
         run_command(
             ["git", "push", "--set-upstream", "origin", 
f"v{version_branch}-stable"],
-            dry_run_override=DRY_RUN,
             check=True,
         )
 
 
 def checkout_main():
     if confirm_action("We now need to checkout main. Continue?"):
-        if DRY_RUN:
-            console_print("Skipping below command on CI")
-        result = run_command(
-            ["git", "checkout", "main"], dry_run_override=DRY_RUN, 
check=False, capture_output=True
-        )
+        result = run_command(["git", "checkout", "main"], check=False, 
capture_output=True)
         if result.returncode != 0:
             console_print("[error]Failed to checkout main.[/]")
             console_print(result.stdout)
             console_print(result.stderr)
             sys.exit(1)
-        if DRY_RUN:
-            console_print("Skipping below command on CI")
-        result = run_command(["git", "pull"], dry_run_override=DRY_RUN, 
capture_output=True, check=False)
+        result = run_command(["git", "pull"], capture_output=True, check=False)
         if result.returncode != 0:
             console_print("[error]Failed to pull repo.[/]")
             console_print(result.stdout)
@@ -175,17 +138,12 @@ def instruction_update_version_branch(version_branch):
 
 def create_constraints(version_branch):
     if confirm_action("Do you want to create branches from the constraints 
main?"):
-        if DRY_RUN:
-            console_print("Skipping below 4 commands on CI")
-        run_command(["git", "checkout", "constraints-main"], 
dry_run_override=DRY_RUN, check=True)
-        run_command(["git", "pull", "origin", "constraints-main"], 
dry_run_override=DRY_RUN, check=True)
-        run_command(
-            ["git", "checkout", "-b", f"constraints-{version_branch}"], 
dry_run_override=DRY_RUN, check=True
-        )
+        run_command(["git", "checkout", "constraints-main"], check=True)
+        run_command(["git", "pull", "origin", "constraints-main"], check=True)
+        run_command(["git", "checkout", "-b", 
f"constraints-{version_branch}"], check=True)
         if confirm_action("Push the new branch?"):
             run_command(
                 ["git", "push", "--set-upstream", "origin", 
f"constraints-{version_branch}"],
-                dry_run_override=DRY_RUN,
                 check=True,
             )
 
@@ -196,6 +154,8 @@ def create_constraints(version_branch):
 )
 @click.option("--version-branch", help="The version branch you want to create 
e.g 2-4", required=True)
 @option_answer
+@option_verbose
+@option_dry_run
 def create_minor_version_branch(version_branch):
     for obj in version_branch.split("-"):
         if not obj.isdigit():
@@ -225,9 +185,7 @@ def create_minor_version_branch(version_branch):
     create_branch(version_branch)
     # Build ci image
     if confirm_action("Build latest breeze image?"):
-        if DRY_RUN:
-            console_print("Skipping below command on CI")
-        run_command(["breeze", "ci-image", "build", "--python", "3.9"], 
dry_run_override=DRY_RUN, check=True)
+        run_command(["breeze", "ci-image", "build", "--python", "3.9"], 
check=True)
     # Update default branches
     update_default_branch(version_branch)
     # Commit changes
diff --git 
a/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py 
b/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py
index e52e4b06d2a..fb78d3b8e36 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py
@@ -22,16 +22,14 @@ from pathlib import Path
 
 import click
 
-from airflow_breeze.commands.common_options import option_answer
+from airflow_breeze.commands.common_options import option_answer, 
option_dry_run, option_verbose
 from airflow_breeze.commands.release_management_group import release_management
 from airflow_breeze.utils.confirm import confirm_action
 from airflow_breeze.utils.console import console_print
 from airflow_breeze.utils.path_utils import AIRFLOW_DIST_PATH, 
AIRFLOW_ROOT_PATH, OUT_PATH
 from airflow_breeze.utils.reproducible import get_source_date_epoch, 
repack_deterministically
 from airflow_breeze.utils.run_utils import run_command
-
-CI = os.environ.get("CI")
-RUNNING_IN_CI = True if CI else False
+from airflow_breeze.utils.shared_options import get_dry_run
 
 
 def merge_pr(version_branch):
@@ -42,47 +40,36 @@ def merge_pr(version_branch):
                 "checkout",
                 f"v{version_branch}-stable",
             ],
-            dry_run_override=RUNNING_IN_CI,
             check=True,
         )
         run_command(
             ["git", "reset", "--hard", f"origin/v{version_branch}-stable"],
-            dry_run_override=RUNNING_IN_CI,
             check=True,
         )
         run_command(
             ["git", "merge", "--ff-only", f"v{version_branch}-test"],
-            dry_run_override=RUNNING_IN_CI,
             check=True,
         )
         if confirm_action("Do you want to push the changes? Pushing the 
changes closes the PR"):
             run_command(
                 ["git", "push", "origin", f"v{version_branch}-stable"],
-                dry_run_override=RUNNING_IN_CI,
                 check=True,
             )
 
 
 def git_tag(version):
     if confirm_action(f"Tag {version}?"):
-        if RUNNING_IN_CI:
-            # override tags when running in CI
-            run_command(
-                ["git", "tag", "-f", f"{version}", "-m", f"Apache Airflow 
{version}"],
-                check=True,
-            )
-        else:
-            run_command(
-                ["git", "tag", "-s", f"{version}", "-m", f"Apache Airflow 
{version}"],
-                check=True,
-            )
+        run_command(
+            ["git", "tag", "-s", f"{version}", "-m", f"Apache Airflow 
{version}"],
+            check=True,
+        )
         console_print("[success]Tagged")
 
 
 def git_clean():
     if confirm_action("Clean git repo?"):
-        run_command(["breeze", "ci", "fix-ownership"], 
dry_run_override=RUNNING_IN_CI, check=True)
-        run_command(["git", "clean", "-fxd"], dry_run_override=RUNNING_IN_CI, 
check=True)
+        run_command(["breeze", "ci", "fix-ownership"], check=True)
+        run_command(["git", "clean", "-fxd"], check=True)
         console_print("[success]Git repo cleaned")
 
 
@@ -156,7 +143,7 @@ def create_artifacts_with_docker():
 def sign_the_release(repo_root):
     if confirm_action("Do you want to sign the release?"):
         os.chdir(f"{repo_root}/dist")
-        run_command("./../dev/sign.sh *", dry_run_override=RUNNING_IN_CI, 
check=True, shell=True)
+        run_command("./../dev/sign.sh *", check=True, shell=True)
         console_print("[success]Release signed")
 
 
@@ -164,7 +151,6 @@ def tag_and_push_constraints(version, version_branch):
     if confirm_action("Do you want to tag and push constraints?"):
         run_command(
             ["git", "checkout", f"origin/constraints-{version_branch}"],
-            dry_run_override=RUNNING_IN_CI,
             check=True,
         )
         run_command(
@@ -176,12 +162,10 @@ def tag_and_push_constraints(version, version_branch):
                 "-m",
                 f"Constraints for Apache Airflow {version}",
             ],
-            dry_run_override=RUNNING_IN_CI,
             check=True,
         )
         run_command(
             ["git", "push", "origin", "tag", f"constraints-{version}"],
-            dry_run_override=RUNNING_IN_CI,
             check=True,
         )
         console_print("[success]Constraints tagged and pushed")
@@ -193,33 +177,35 @@ def clone_asf_repo(version, repo_root):
         run_command(
             ["svn", "checkout", "--depth=immediates", 
"https://dist.apache.org/repos/dist";, "asf-dist"],
             check=True,
+            dry_run_override=False,
+        )
+        run_command(
+            ["svn", "update", "--set-depth=infinity", "asf-dist/dev/airflow"],
+            check=True,
+            dry_run_override=False,
         )
-        run_command(["svn", "update", "--set-depth=infinity", 
"asf-dist/dev/airflow"], check=True)
         console_print("[success]Cloned ASF repo successfully")
 
 
 def move_artifacts_to_svn(version, repo_root):
     if confirm_action("Do you want to move artifacts to SVN?"):
         os.chdir(f"{repo_root}/asf-dist/dev/airflow")
-        run_command(["svn", "mkdir", f"{version}"], 
dry_run_override=RUNNING_IN_CI, check=True)
-        run_command(
-            f"mv {repo_root}/dist/* {version}/", 
dry_run_override=RUNNING_IN_CI, check=True, shell=True
-        )
+        run_command(["svn", "mkdir", f"{version}"], check=True)
+        run_command(f"mv {repo_root}/dist/* {version}/", check=True, 
shell=True)
         console_print("[success]Moved artifacts to SVN:")
-        run_command(["ls"], dry_run_override=RUNNING_IN_CI)
+        run_command(["ls"])
 
 
 def push_artifacts_to_asf_repo(version, repo_root):
     if confirm_action("Do you want to push artifacts to ASF repo?"):
         console_print("Files to push to svn:")
-        if not RUNNING_IN_CI:
+        if not get_dry_run():
             os.chdir(f"{repo_root}/asf-dist/dev/airflow/{version}")
-        run_command(["ls"], dry_run_override=RUNNING_IN_CI)
+        run_command(["ls"])
         confirm_action("Do you want to continue?", abort=True)
-        run_command("svn add *", dry_run_override=RUNNING_IN_CI, check=True, 
shell=True)
+        run_command("svn add *", check=True, shell=True)
         run_command(
             ["svn", "commit", "-m", f"Add artifacts for Airflow {version}"],
-            dry_run_override=RUNNING_IN_CI,
             check=True,
         )
         console_print("[success]Files pushed to svn")
@@ -231,14 +217,14 @@ def push_artifacts_to_asf_repo(version, repo_root):
 def delete_asf_repo(repo_root):
     os.chdir(repo_root)
     if confirm_action("Do you want to remove the cloned asf repo?"):
-        run_command(["rm", "-rf", "asf-dist"], dry_run_override=RUNNING_IN_CI, 
check=True)
+        run_command(["rm", "-rf", "asf-dist"], check=True)
 
 
 def prepare_pypi_packages(version, version_suffix, repo_root):
     if confirm_action("Prepare pypi packages?"):
         console_print("[info]Preparing PyPI packages")
         os.chdir(repo_root)
-        run_command(["git", "checkout", f"{version}"], 
dry_run_override=RUNNING_IN_CI, check=True)
+        run_command(["git", "checkout", f"{version}"], check=True)
         run_command(
             [
                 "breeze",
@@ -261,7 +247,7 @@ def prepare_pypi_packages(version, version_suffix, 
repo_root):
 
 def push_packages_to_pypi(version):
     if confirm_action("Do you want to push packages to production PyPI?"):
-        run_command(["twine", "upload", "-r", "pypi", "dist/*"], 
dry_run_override=RUNNING_IN_CI, check=True)
+        run_command(["twine", "upload", "-r", "pypi", "dist/*"], check=True)
         console_print("[success]Packages pushed to production PyPI")
         console_print(
             "Again, confirm that the package is available here: 
https://pypi.python.org/pypi/apache-airflow";
@@ -297,9 +283,7 @@ def push_release_candidate_tag_to_github(version):
         """
         )
         confirm_action(f"Confirm that {version} is pushed to PyPI(not PyPI 
test). Is it pushed?", abort=True)
-        run_command(
-            ["git", "push", "origin", "tag", f"{version}"], 
dry_run_override=RUNNING_IN_CI, check=True
-        )
+        run_command(["git", "push", "origin", "tag", f"{version}"], check=True)
         console_print("[success]Release candidate tag pushed to GitHub")
 
 
@@ -322,10 +306,9 @@ def remove_old_releases(version, repo_root):
 
     for old_release in old_releases:
         if confirm_action(f"Remove old RC {old_release}?"):
-            run_command(["svn", "rm", old_release], 
dry_run_override=RUNNING_IN_CI, check=True)
+            run_command(["svn", "rm", old_release], check=True)
             run_command(
                 ["svn", "commit", "-m", f"Remove old release: {old_release}"],
-                dry_run_override=RUNNING_IN_CI,
                 check=True,
             )
     console_print("[success]Old releases removed")
@@ -339,6 +322,8 @@ def remove_old_releases(version, repo_root):
 @click.option(
     "--version", required=True, help="The release candidate version e.g. 
2.4.3rc1", envvar="VERSION"
 )
+@option_dry_run
+@option_verbose
 def prepare_airflow_tarball(version: str):
     from packaging.version import Version
 
@@ -364,6 +349,8 @@ def prepare_airflow_tarball(version: str):
     "--github-token", help="GitHub token to use in generating issue for 
testing of release candidate"
 )
 @option_answer
+@option_dry_run
+@option_verbose
 def publish_release_candidate(version, previous_version, github_token):
     from packaging.version import Version
 
@@ -394,7 +381,7 @@ def publish_release_candidate(version, previous_version, 
github_token):
     console_print(f"airflow_repo_root: {airflow_repo_root}")
     console_print()
     console_print("Below are your git remotes. We will push to origin:")
-    run_command(["git", "remote", "-v"], dry_run_override=RUNNING_IN_CI)
+    run_command(["git", "remote", "-v"])
     console_print()
     confirm_action("Verify that the above information is correct. Do you want 
to continue?", abort=True)
     # Final confirmation
diff --git a/dev/breeze/src/airflow_breeze/commands/release_command.py 
b/dev/breeze/src/airflow_breeze/commands/release_command.py
index 5ec422c79d0..5d8d45938c3 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_command.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_command.py
@@ -20,16 +20,13 @@ import os
 
 import click
 
-from airflow_breeze.commands.common_options import option_answer
+from airflow_breeze.commands.common_options import option_answer, 
option_dry_run, option_verbose
 from airflow_breeze.commands.release_management_group import release_management
 from airflow_breeze.utils.confirm import confirm_action
 from airflow_breeze.utils.console import console_print
 from airflow_breeze.utils.path_utils import AIRFLOW_ROOT_PATH
 from airflow_breeze.utils.run_utils import run_command
 
-CI = os.environ.get("CI")
-RUNNING_IN_CI = True if CI else False
-
 
 def clone_asf_repo(working_dir):
     if confirm_action("Clone ASF repo?"):
@@ -37,16 +34,19 @@ def clone_asf_repo(working_dir):
         run_command(
             ["svn", "checkout", "--depth=immediates", 
"https://dist.apache.org/repos/dist";, "asf-dist"],
             check=True,
+            dry_run_override=False,
         )
         dev_dir = f"{working_dir}/asf-dist/dev/airflow"
         release_dir = f"{working_dir}/asf-dist/release/airflow"
-        run_command(["svn", "update", "--set-depth", "infinity", dev_dir], 
check=True)
-        run_command(["svn", "update", "--set-depth", "infinity", release_dir], 
check=True)
+        run_command(["svn", "update", "--set-depth", "infinity", dev_dir], 
dry_run_override=False, check=True)
+        run_command(
+            ["svn", "update", "--set-depth", "infinity", release_dir], 
dry_run_override=False, check=True
+        )
 
 
 def create_version_dir(version):
     if confirm_action(f"Create SVN version directory for {version}?"):
-        run_command(["svn", "mkdir", f"{version}"], 
dry_run_override=RUNNING_IN_CI, check=True)
+        run_command(["svn", "mkdir", f"{version}"], check=True)
         console_print(f"{version} directory created")
 
 
@@ -64,28 +64,25 @@ def copy_artifacts_to_svn(rc, svn_dev_repo):
                 "-c",
                 bash_command,
             ],
-            dry_run_override=RUNNING_IN_CI,
             check=True,
         )
         console_print("Artifacts copied to SVN:")
-        run_command(["ls"], dry_run_override=RUNNING_IN_CI)
+        run_command(["ls"])
 
 
 def commit_release(version, rc, svn_release_version_dir):
     if confirm_action(f"Commit release {version} to SVN?"):
         run_command(
             ["svn", "commit", "-m", f"Release Airflow {version} from {rc}"],
-            dry_run_override=RUNNING_IN_CI,
             check=True,
         )
 
 
 def remove_old_release(previous_release):
     if confirm_action(f"Remove old release {previous_release}?"):
-        run_command(["svn", "rm", f"{previous_release}"], 
dry_run_override=RUNNING_IN_CI, check=True)
+        run_command(["svn", "rm", f"{previous_release}"], check=True)
         run_command(
             ["svn", "commit", "-m", f"Remove old release: {previous_release}"],
-            dry_run_override=RUNNING_IN_CI,
             check=True,
         )
         confirm_action(
@@ -97,16 +94,13 @@ def remove_old_release(previous_release):
 
 def verify_pypi_package(version):
     if confirm_action("Verify PyPI package?"):
-        run_command(
-            ["twine", "check", "*.whl", f"*{version}.tar.gz"], 
dry_run_override=RUNNING_IN_CI, check=True
-        )
+        run_command(["twine", "check", "*.whl", f"*{version}.tar.gz"], 
check=True)
 
 
 def upload_to_pypi(version):
     if confirm_action("Upload to PyPI?"):
         run_command(
             ["twine", "upload", "-r", "pypi", "*.whl", f"*{version}.tar.gz"],
-            dry_run_override=RUNNING_IN_CI,
             check=True,
         )
         console_print("Packages pushed to production PyPI")
@@ -121,7 +115,6 @@ def retag_constraints(release_candidate, version):
     if confirm_action(f"Retag constraints for {release_candidate} as 
{version}?"):
         run_command(
             ["git", "checkout", f"constraints-{release_candidate}"],
-            dry_run_override=RUNNING_IN_CI,
             check=True,
         )
         run_command(
@@ -133,13 +126,11 @@ def retag_constraints(release_candidate, version):
                 "-m",
                 f"Constraints for Apache Airflow {version}",
             ],
-            dry_run_override=RUNNING_IN_CI,
             check=True,
         )
     if confirm_action(f"Push contraints-{version} tag to GitHub?"):
         run_command(
             ["git", "push", "origin", "tag", f"constraints-{version}"],
-            dry_run_override=RUNNING_IN_CI,
             check=True,
         )
 
@@ -157,13 +148,11 @@ def tag_and_push_latest_constraint(version):
                 "-m",
                 f"Latest constraints set to Apache Airflow {version}",
             ],
-            dry_run_override=RUNNING_IN_CI,
             check=True,
         )
     if confirm_action("Push latest constraints tag to GitHub?"):
         run_command(
             ["git", "push", "origin", "tag", "-f", "constraints-latest"],
-            dry_run_override=RUNNING_IN_CI,
             check=True,
         )
 
@@ -179,15 +168,12 @@ def push_tag_for_final_version(version, 
release_candidate):
         )
         confirm_action(f"Confirm that {version} is pushed to PyPI(not PyPI 
test). Is it pushed?", abort=True)
 
-        run_command(["git", "checkout", f"{release_candidate}"], 
dry_run_override=RUNNING_IN_CI, check=True)
+        run_command(["git", "checkout", f"{release_candidate}"], check=True)
         run_command(
             ["git", "tag", "-s", f"{version}", "-m", f"Apache Airflow 
{version}"],
-            dry_run_override=RUNNING_IN_CI,
             check=True,
         )
-        run_command(
-            ["git", "push", "origin", "tag", f"{version}"], 
dry_run_override=RUNNING_IN_CI, check=True
-        )
+        run_command(["git", "push", "origin", "tag", f"{version}"], check=True)
 
 
 @release_management.command(
@@ -199,6 +185,8 @@ def push_tag_for_final_version(version, release_candidate):
 @click.option("--release-candidate", required=True)
 @click.option("--previous-release", required=True)
 @option_answer
+@option_dry_run
+@option_verbose
 def airflow_release(release_candidate, previous_release):
     if "rc" not in release_candidate:
         exit("Release candidate must contain 'rc'")
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 1e2ae72d1ca..78c6fd6c199 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -2851,6 +2851,8 @@ def load_constraints(python_version: str) -> dict[str, 
dict[str, str]]:
     help="Refresh constraints before generating metadata",
 )
 @option_historical_python_version
+@option_dry_run
+@option_verbose
 def generate_providers_metadata(refresh_constraints: bool, python: str | None):
     metadata_dict: dict[str, dict[str, dict[str, str]]] = {}
     if python is None:
diff --git a/dev/breeze/src/airflow_breeze/utils/ci_group.py 
b/dev/breeze/src/airflow_breeze/utils/ci_group.py
index b8efb915d5e..82b2b020f69 100644
--- a/dev/breeze/src/airflow_breeze/utils/ci_group.py
+++ b/dev/breeze/src/airflow_breeze/utils/ci_group.py
@@ -30,6 +30,13 @@ if TYPE_CHECKING:
 _in_ci_group = False
 
 
+def in_github_actions() -> bool:
+    """
+    Check if the code is running in GitHub Actions.
+    """
+    return os.environ.get("GITHUB_ACTIONS", "false") == "true"
+
+
 @contextmanager
 def ci_group(
     title: str,
@@ -48,7 +55,7 @@ def ci_group(
     if _in_ci_group or skip_group_output():
         yield
         return
-    if os.environ.get("GITHUB_ACTIONS", "false") != "true":
+    if not in_github_actions():
         if not skip_printing_title:
             if message_type is not None:
                 
get_console(output=output).print(f"\n[{message_type.value}]{title}\n")

Reply via email to