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

potiuk pushed a commit to branch add-apply-commit-feature-to-docs-buildiung
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit e0414e61a9e02c4c78b73107376938c3792e67d2
Author: Jarek Potiuk <[email protected]>
AuthorDate: Wed Jul 23 13:31:56 2025 +0200

    Add possibility to apply a commit with patch to docs when publishing
    
    You can specify commit hash to apply when you build documentation.
    This allows to regenerate past version of the documentation by
    checking out the exact version tag that was used back then and
    applying the commit hash with fixes.
    
    This might help in fixing issues like
    https://github.com/apache/airflow/issues/53646
---
 .github/workflows/publish-docs-to-s3.yml           | 19 +++++++
 dev/README_RELEASE_AIRFLOW.md                      | 17 +++++++
 dev/README_RELEASE_PROVIDERS.md                    | 12 +++++
 .../images/output_workflow-run_publish-docs.svg    | 58 +++++++++++++---------
 .../images/output_workflow-run_publish-docs.txt    |  2 +-
 .../airflow_breeze/commands/workflow_commands.py   |  9 ++++
 .../commands/workflow_commands_config.py           |  1 +
 7 files changed, 94 insertions(+), 24 deletions(-)

diff --git a/.github/workflows/publish-docs-to-s3.yml 
b/.github/workflows/publish-docs-to-s3.yml
index cc12adc8433..26a379f5e10 100644
--- a/.github/workflows/publish-docs-to-s3.yml
+++ b/.github/workflows/publish-docs-to-s3.yml
@@ -60,6 +60,10 @@ on:  # yamllint disable-line rule:truthy
         required: false
         description: "Override the Airflow Version to use for the docs build"
         type: string
+      apply-commits:
+        required: false
+        description: "Optionally apply commit hashes before building - to 
patch the docs (coma separated)"
+        type: string
 permissions:
   contents: read
 jobs:
@@ -162,6 +166,7 @@ jobs:
       INCLUDE_SUCCESS_OUTPUTS: false
       VERBOSE: "true"
       EXTRA_BUILD_OPTIONS: ${{ needs.build-info.outputs.extra-build-options }}
+      APPLY_COMMITS: ${{ inputs.apply-commits || '' }}
     steps:
       - name: "Cleanup repo"
         shell: bash
@@ -184,6 +189,20 @@ jobs:
           ref: ${{ inputs.ref }}
           fetch-depth: 0
           fetch-tags: true
+      - name: "Apply patch commits if provided"
+        run: |
+          if [[ "${APPLY_COMMITS}" != "" ]]; then
+            echo "Applying commits ${APPLY_COMMIT} to the docs"
+            # Split APPLY_COMMITS by comma and apply each commit
+            IFS=',' read -ra COMMIT_ARRAY <<< "${APPLY_COMMITS}"
+            for APPLY_COMMIT in "${COMMIT_ARRAY[@]}"; do
+              echo "Applying commit ${APPLY_COMMIT}"
+              git fetch origin "${APPLY_COMMIT}"
+              git cherry-pick "${APPLY_COMMIT}"
+            done
+          else
+            echo "No commit to apply provided, skipping."
+          fi
       - name: "Install Breeze from the ${{ inputs.ref }} reference"
         uses: ./.github/actions/breeze
         with:
diff --git a/dev/README_RELEASE_AIRFLOW.md b/dev/README_RELEASE_AIRFLOW.md
index de201c44f09..d22760480f1 100644
--- a/dev/README_RELEASE_AIRFLOW.md
+++ b/dev/README_RELEASE_AIRFLOW.md
@@ -411,6 +411,23 @@ Other available parameters can be found with:
 breeze workflow-run publish-docs --help
 ```
 
+In case you publish the documentation from branch, you can specify 
`--airflow-version` and `--airflow-base-version`
+parameters to specify which version of airflow you want to build the 
documentation for - as it cannot
+be automatically derived from tag name. Normally both are automatically 
derived from the tag name.
+
+One of the interesting features of publishing this way is that you can also 
rebuild historical version of
+the documentation with patches applied to the documentation (if they can be 
applied cleanly).
+
+Yoy should specify the `--apply-commits` parameter with the list of commits 
you want to apply
+separated by commas and the workflow will apply those commits to the 
documentation before
+building it. Example:
+
+```shell script
+breeze workflow-run publish-docs --ref 3.0.3 --site-env staging \
+  --apply-commits 
4ae273cbedec66c87dc40218c7a94863390a380d,e61e9618bdd6be8213d277b1427f67079fcb1d9b
 \
+  apache-airflow docker-stack task-sdk
+```
+
 ### Manually using GitHub Actions
 
 There are two steps to publish the documentation:
diff --git a/dev/README_RELEASE_PROVIDERS.md b/dev/README_RELEASE_PROVIDERS.md
index c5938bd16bd..9444579049f 100644
--- a/dev/README_RELEASE_PROVIDERS.md
+++ b/dev/README_RELEASE_PROVIDERS.md
@@ -522,6 +522,18 @@ The `--ref` parameter should be the tag of the release 
candidate you are publish
 The `--site-env` parameter should be set to `staging` for pre-release versions 
or `live` for final releases. the default option is `auto`
 if the tag is rc it publishes to `staging` bucket, otherwise it publishes to 
`live` bucket.
 
+One of the interesting features of publishing this way is that you can also 
rebuild historical version of
+the documentation with patches applied to the documentation (if they can be 
applied cleanly).
+
+Yoy should specify the `--apply-commits` parameter with the list of commits 
you want to apply
+separated by commas and the workflow will apply those commits to the 
documentation before
+building it. Example:
+
+```shell script
+breeze workflow-run publish-docs --ref providers-apache-hive/9.0.0 --site-env 
live \
+  --apply-commits 4ae273cbedec66c87dc40218c7a94863390a380d hive
+```
+
 Other available parameters can be found with:
 
 ```shell
diff --git a/dev/breeze/doc/images/output_workflow-run_publish-docs.svg 
b/dev/breeze/doc/images/output_workflow-run_publish-docs.svg
index 23f375ca723..fb3016cb50d 100644
--- a/dev/breeze/doc/images/output_workflow-run_publish-docs.svg
+++ b/dev/breeze/doc/images/output_workflow-run_publish-docs.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1050.4" 
xmlns="http://www.w3.org/2000/svg";>
+<svg class="rich-terminal" viewBox="0 0 1482 1123.6" 
xmlns="http://www.w3.org/2000/svg";>
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -45,7 +45,7 @@
 
     <defs>
     <clipPath id="breeze-workflow-run-publish-docs-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="999.4" />
+      <rect x="0" y="0" width="1463.0" height="1072.6" />
     </clipPath>
     <clipPath id="breeze-workflow-run-publish-docs-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -167,9 +167,18 @@
 <clipPath id="breeze-workflow-run-publish-docs-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-workflow-run-publish-docs-line-40">
+    <rect x="0" y="977.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-workflow-run-publish-docs-line-41">
+    <rect x="0" y="1001.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-workflow-run-publish-docs-line-42">
+    <rect x="0" y="1026.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="1048.4" rx="8"/><text 
class="breeze-workflow-run-publish-docs-title" fill="#c5c8c6" 
text-anchor="middle" x="740" 
y="27">Command:&#160;workflow-run&#160;publish-docs</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="1121.6" rx="8"/><text 
class="breeze-workflow-run-publish-docs-title" fill="#c5c8c6" 
text-anchor="middle" x="740" 
y="27">Command:&#160;workflow-run&#160;publish-docs</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -199,27 +208,30 @@
 </text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="434.8" 
textLength="24.4" 
clip-path="url(#breeze-workflow-run-publish-docs-line-17)">╭─</text><text 
class="breeze-workflow-run-publish-docs-r5" x="24.4" y="434.8" 
textLength="439.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-17)">&#160;Select&#160;branch&#160;or&#160;tag&#160;to&#160;build&#160;docs&#160;</text><text
 class="breeze-workflow-run-publish-docs-r5" x="463.6" y="434.8" 
textLength="976" clip-path="url(# [...]
 </text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="459.2" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-18)">│</text><text 
class="breeze-workflow-run-publish-docs-r6" x="24.4" y="459.2" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-18)">*</text><text 
class="breeze-workflow-run-publish-docs-r4" x="61" y="459.2" textLength="61" 
clip-path="url(#breeze-workflow-run-publish-docs-line-18)">--ref</text><text 
class="breeze-workfl [...]
 </text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="483.6" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-19)">│</text><text 
class="breeze-workflow-run-publish-docs-r4" x="61" y="483.6" textLength="256.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-19)">--skip-tag-validation</text><text
 class="breeze-workflow-run-publish-docs-r1" x="366" y="483.6" 
textLength="1000.4" 
clip-path="url(#breeze-workflow-run-publish-docs-line-19)">Skip&#160;vali [...]
-</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="508" 
textLength="1464" 
clip-path="url(#breeze-workflow-run-publish-docs-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-workflow-run-publish-docs-r1" x="1464" y="508" textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-20)">
-</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="532.4" 
textLength="24.4" 
clip-path="url(#breeze-workflow-run-publish-docs-line-21)">╭─</text><text 
class="breeze-workflow-run-publish-docs-r5" x="24.4" y="532.4" 
textLength="451.4" 
clip-path="url(#breeze-workflow-run-publish-docs-line-21)">&#160;Optional&#160;airflow&#160;versions&#160;to&#160;build.&#160;</text><text
 class="breeze-workflow-run-publish-docs-r5" x="475.8" y="532.4" 
textLength="963.8" clip-path="url(#breeze- [...]
-</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="556.8" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-22)">│</text><text 
class="breeze-workflow-run-publish-docs-r4" x="24.4" y="556.8" 
textLength="207.4" 
clip-path="url(#breeze-workflow-run-publish-docs-line-22)">--airflow-version</text><text
 class="breeze-workflow-run-publish-docs-r1" x="341.6" y="556.8" 
textLength="1098" 
clip-path="url(#breeze-workflow-run-publish-docs-line-22)">Override&#160;Ai 
[...]
-</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="581.2" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-23)">│</text><text 
class="breeze-workflow-run-publish-docs-r1" x="341.6" y="581.2" 
textLength="1098" 
clip-path="url(#breeze-workflow-run-publish-docs-line-23)">from&#160;the&#160;ref.&#160;If&#160;only&#160;base&#160;version&#160;is&#160;provided,&#160;it&#160;will&#160;be&#160;set&#160;to&#160;the&#160;same&#160;as&#160;the&#160;base&#160;&#160
 [...]
-</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="605.6" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-24)">│</text><text 
class="breeze-workflow-run-publish-docs-r1" x="341.6" y="605.6" 
textLength="1098" 
clip-path="url(#breeze-workflow-run-publish-docs-line-24)">version.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160
 [...]
-</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="630" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-25)">│</text><text 
class="breeze-workflow-run-publish-docs-r7" x="341.6" y="630" textLength="1098" 
clip-path="url(#breeze-workflow-run-publish-docs-line-25)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160
 [...]
-</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="654.4" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-26)">│</text><text 
class="breeze-workflow-run-publish-docs-r4" x="24.4" y="654.4" 
textLength="268.4" 
clip-path="url(#breeze-workflow-run-publish-docs-line-26)">--airflow-base-version</text><text
 class="breeze-workflow-run-publish-docs-r1" x="341.6" y="654.4" 
textLength="1098" 
clip-path="url(#breeze-workflow-run-publish-docs-line-26)">Override&#1 [...]
-</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="678.8" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-27)">│</text><text 
class="breeze-workflow-run-publish-docs-r1" x="341.6" y="678.8" 
textLength="1098" 
clip-path="url(#breeze-workflow-run-publish-docs-line-27)">extracted&#160;from&#160;the&#160;ref.&#160;If&#160;airflow-version&#160;is&#160;provided,&#160;the&#160;base&#160;version&#160;of&#160;the&#160;version&#160;&#160;&#160;</text><text
 clas [...]
-</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="703.2" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-28)">│</text><text 
class="breeze-workflow-run-publish-docs-r1" x="341.6" y="703.2" 
textLength="1098" 
clip-path="url(#breeze-workflow-run-publish-docs-line-28)">provided&#160;(i.e.&#160;stripped&#160;pre-/post-/dev-&#160;suffixes).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
-</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="727.6" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-29)">│</text><text 
class="breeze-workflow-run-publish-docs-r7" x="341.6" y="727.6" 
textLength="1098" 
clip-path="url(#breeze-workflow-run-publish-docs-line-29)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
-</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="752" 
textLength="1464" 
clip-path="url(#breeze-workflow-run-publish-docs-line-30)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-workflow-run-publish-docs-r1" x="1464" y="752" textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-30)">
-</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="776.4" 
textLength="24.4" 
clip-path="url(#breeze-workflow-run-publish-docs-line-31)">╭─</text><text 
class="breeze-workflow-run-publish-docs-r5" x="24.4" y="776.4" textLength="488" 
clip-path="url(#breeze-workflow-run-publish-docs-line-31)">&#160;Select&#160;docs&#160;to&#160;exclude&#160;and&#160;destination&#160;</text><text
 class="breeze-workflow-run-publish-docs-r5" x="512.4" y="776.4" 
textLength="927.2" clip-path="url(#b [...]
-</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="800.8" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-32)">│</text><text 
class="breeze-workflow-run-publish-docs-r4" x="24.4" y="800.8" 
textLength="170.8" 
clip-path="url(#breeze-workflow-run-publish-docs-line-32)">--exclude-docs</text><text
 class="breeze-workflow-run-publish-docs-r1" x="427" y="800.8" 
textLength="1012.6" 
clip-path="url(#breeze-workflow-run-publish-docs-line-32)">Comma&#160;separate 
[...]
-</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="825.2" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-33)">│</text><text 
class="breeze-workflow-run-publish-docs-r1" x="427" y="825.2" 
textLength="1012.6" 
clip-path="url(#breeze-workflow-run-publish-docs-line-33)">(example:&#160;apache.druid,google)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 [...]
-</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="849.6" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-34)">│</text><text 
class="breeze-workflow-run-publish-docs-r7" x="427" y="849.6" 
textLength="1012.6" 
clip-path="url(#breeze-workflow-run-publish-docs-line-34)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
-</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="874" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-35)">│</text><text 
class="breeze-workflow-run-publish-docs-r4" x="24.4" y="874" textLength="122" 
clip-path="url(#breeze-workflow-run-publish-docs-line-35)">--site-env</text><text
 class="breeze-workflow-run-publish-docs-r1" x="427" y="874" textLength="671" 
clip-path="url(#breeze-workflow-run-publish-docs-line-35)">S3&#160;bucket&#160;to&#160;which&
 [...]
-</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="898.4" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-36)">│</text><text 
class="breeze-workflow-run-publish-docs-r4" x="24.4" y="898.4" 
textLength="353.8" 
clip-path="url(#breeze-workflow-run-publish-docs-line-36)">--skip-write-to-stable-folder</text><text
 class="breeze-workflow-run-publish-docs-r1" x="427" y="898.4" textLength="366" 
clip-path="url(#breeze-workflow-run-publish-docs-line-36)">Skip&#1 [...]
-</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="922.8" 
textLength="1464" 
clip-path="url(#breeze-workflow-run-publish-docs-line-37)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-workflow-run-publish-docs-r1" x="1464" y="922.8" 
textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-37)">
-</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="947.2" 
textLength="24.4" 
clip-path="url(#breeze-workflow-run-publish-docs-line-38)">╭─</text><text 
class="breeze-workflow-run-publish-docs-r5" x="24.4" y="947.2" 
textLength="195.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-38)">&#160;Common&#160;options&#160;</text><text
 class="breeze-workflow-run-publish-docs-r5" x="219.6" y="947.2" 
textLength="1220" clip-path="url(#breeze-workflow-run-publish-docs-line-38)">─ 
[...]
-</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="971.6" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-39)">│</text><text 
class="breeze-workflow-run-publish-docs-r4" x="24.4" y="971.6" 
textLength="73.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-39)">--help</text><text 
class="breeze-workflow-run-publish-docs-r9" x="122" y="971.6" textLength="24.4" 
clip-path="url(#breeze-workflow-run-publish-docs-line-39)">-h</text><text 
class="breeze-w [...]
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="508" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-20)">│</text><text 
class="breeze-workflow-run-publish-docs-r4" x="61" y="508" textLength="183" 
clip-path="url(#breeze-workflow-run-publish-docs-line-20)">--apply-commits</text><text
 class="breeze-workflow-run-publish-docs-r1" x="366" y="508" 
textLength="1073.6" 
clip-path="url(#breeze-workflow-run-publish-docs-line-20)">Apply&#160;commits&#160;befo
 [...]
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="532.4" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-21)">│</text><text 
class="breeze-workflow-run-publish-docs-r1" x="366" y="532.4" 
textLength="1073.6" 
clip-path="url(#breeze-workflow-run-publish-docs-line-21)">separated&#160;list&#160;of&#160;commits).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="556.8" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-22)">│</text><text 
class="breeze-workflow-run-publish-docs-r7" x="366" y="556.8" 
textLength="1073.6" 
clip-path="url(#breeze-workflow-run-publish-docs-line-22)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="581.2" 
textLength="1464" 
clip-path="url(#breeze-workflow-run-publish-docs-line-23)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-workflow-run-publish-docs-r1" x="1464" y="581.2" 
textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-23)">
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="605.6" 
textLength="24.4" 
clip-path="url(#breeze-workflow-run-publish-docs-line-24)">╭─</text><text 
class="breeze-workflow-run-publish-docs-r5" x="24.4" y="605.6" 
textLength="451.4" 
clip-path="url(#breeze-workflow-run-publish-docs-line-24)">&#160;Optional&#160;airflow&#160;versions&#160;to&#160;build.&#160;</text><text
 class="breeze-workflow-run-publish-docs-r5" x="475.8" y="605.6" 
textLength="963.8" clip-path="url(#breeze- [...]
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="630" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-25)">│</text><text 
class="breeze-workflow-run-publish-docs-r4" x="24.4" y="630" textLength="207.4" 
clip-path="url(#breeze-workflow-run-publish-docs-line-25)">--airflow-version</text><text
 class="breeze-workflow-run-publish-docs-r1" x="341.6" y="630" 
textLength="1098" 
clip-path="url(#breeze-workflow-run-publish-docs-line-25)">Override&#160;Airflow&
 [...]
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="654.4" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-26)">│</text><text 
class="breeze-workflow-run-publish-docs-r1" x="341.6" y="654.4" 
textLength="1098" 
clip-path="url(#breeze-workflow-run-publish-docs-line-26)">from&#160;the&#160;ref.&#160;If&#160;only&#160;base&#160;version&#160;is&#160;provided,&#160;it&#160;will&#160;be&#160;set&#160;to&#160;the&#160;same&#160;as&#160;the&#160;base&#160;&#160
 [...]
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="678.8" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-27)">│</text><text 
class="breeze-workflow-run-publish-docs-r1" x="341.6" y="678.8" 
textLength="1098" 
clip-path="url(#breeze-workflow-run-publish-docs-line-27)">version.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160
 [...]
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="703.2" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-28)">│</text><text 
class="breeze-workflow-run-publish-docs-r7" x="341.6" y="703.2" 
textLength="1098" 
clip-path="url(#breeze-workflow-run-publish-docs-line-28)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="727.6" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-29)">│</text><text 
class="breeze-workflow-run-publish-docs-r4" x="24.4" y="727.6" 
textLength="268.4" 
clip-path="url(#breeze-workflow-run-publish-docs-line-29)">--airflow-base-version</text><text
 class="breeze-workflow-run-publish-docs-r1" x="341.6" y="727.6" 
textLength="1098" 
clip-path="url(#breeze-workflow-run-publish-docs-line-29)">Override&#1 [...]
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="752" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-30)">│</text><text 
class="breeze-workflow-run-publish-docs-r1" x="341.6" y="752" textLength="1098" 
clip-path="url(#breeze-workflow-run-publish-docs-line-30)">extracted&#160;from&#160;the&#160;ref.&#160;If&#160;airflow-version&#160;is&#160;provided,&#160;the&#160;base&#160;version&#160;of&#160;the&#160;version&#160;&#160;&#160;</text><text
 class="b [...]
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="776.4" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-31)">│</text><text 
class="breeze-workflow-run-publish-docs-r1" x="341.6" y="776.4" 
textLength="1098" 
clip-path="url(#breeze-workflow-run-publish-docs-line-31)">provided&#160;(i.e.&#160;stripped&#160;pre-/post-/dev-&#160;suffixes).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="800.8" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-32)">│</text><text 
class="breeze-workflow-run-publish-docs-r7" x="341.6" y="800.8" 
textLength="1098" 
clip-path="url(#breeze-workflow-run-publish-docs-line-32)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="825.2" 
textLength="1464" 
clip-path="url(#breeze-workflow-run-publish-docs-line-33)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-workflow-run-publish-docs-r1" x="1464" y="825.2" 
textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-33)">
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="849.6" 
textLength="24.4" 
clip-path="url(#breeze-workflow-run-publish-docs-line-34)">╭─</text><text 
class="breeze-workflow-run-publish-docs-r5" x="24.4" y="849.6" textLength="488" 
clip-path="url(#breeze-workflow-run-publish-docs-line-34)">&#160;Select&#160;docs&#160;to&#160;exclude&#160;and&#160;destination&#160;</text><text
 class="breeze-workflow-run-publish-docs-r5" x="512.4" y="849.6" 
textLength="927.2" clip-path="url(#b [...]
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="874" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-35)">│</text><text 
class="breeze-workflow-run-publish-docs-r4" x="24.4" y="874" textLength="170.8" 
clip-path="url(#breeze-workflow-run-publish-docs-line-35)">--exclude-docs</text><text
 class="breeze-workflow-run-publish-docs-r1" x="427" y="874" 
textLength="1012.6" 
clip-path="url(#breeze-workflow-run-publish-docs-line-35)">Comma&#160;separated&#160
 [...]
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="898.4" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-36)">│</text><text 
class="breeze-workflow-run-publish-docs-r1" x="427" y="898.4" 
textLength="1012.6" 
clip-path="url(#breeze-workflow-run-publish-docs-line-36)">(example:&#160;apache.druid,google)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 [...]
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="922.8" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-37)">│</text><text 
class="breeze-workflow-run-publish-docs-r7" x="427" y="922.8" 
textLength="1012.6" 
clip-path="url(#breeze-workflow-run-publish-docs-line-37)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="947.2" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-38)">│</text><text 
class="breeze-workflow-run-publish-docs-r4" x="24.4" y="947.2" textLength="122" 
clip-path="url(#breeze-workflow-run-publish-docs-line-38)">--site-env</text><text
 class="breeze-workflow-run-publish-docs-r1" x="427" y="947.2" textLength="671" 
clip-path="url(#breeze-workflow-run-publish-docs-line-38)">S3&#160;bucket&#160;to&#160;
 [...]
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="971.6" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-39)">│</text><text 
class="breeze-workflow-run-publish-docs-r4" x="24.4" y="971.6" 
textLength="353.8" 
clip-path="url(#breeze-workflow-run-publish-docs-line-39)">--skip-write-to-stable-folder</text><text
 class="breeze-workflow-run-publish-docs-r1" x="427" y="971.6" textLength="366" 
clip-path="url(#breeze-workflow-run-publish-docs-line-39)">Skip&#1 [...]
 </text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="996" 
textLength="1464" 
clip-path="url(#breeze-workflow-run-publish-docs-line-40)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-workflow-run-publish-docs-r1" x="1464" y="996" textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-40)">
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="1020.4" 
textLength="24.4" 
clip-path="url(#breeze-workflow-run-publish-docs-line-41)">╭─</text><text 
class="breeze-workflow-run-publish-docs-r5" x="24.4" y="1020.4" 
textLength="195.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-41)">&#160;Common&#160;options&#160;</text><text
 class="breeze-workflow-run-publish-docs-r5" x="219.6" y="1020.4" 
textLength="1220" clip-path="url(#breeze-workflow-run-publish-docs-line-41) 
[...]
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="1044.8" 
textLength="12.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-42)">│</text><text 
class="breeze-workflow-run-publish-docs-r4" x="24.4" y="1044.8" 
textLength="73.2" 
clip-path="url(#breeze-workflow-run-publish-docs-line-42)">--help</text><text 
class="breeze-workflow-run-publish-docs-r9" x="122" y="1044.8" 
textLength="24.4" 
clip-path="url(#breeze-workflow-run-publish-docs-line-42)">-h</text><text 
class="breez [...]
+</text><text class="breeze-workflow-run-publish-docs-r5" x="0" y="1069.2" 
textLength="1464" 
clip-path="url(#breeze-workflow-run-publish-docs-line-43)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-workflow-run-publish-docs-r1" x="1464" y="1069.2" 
textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-43)">
 </text>
     </g>
     </g>
diff --git a/dev/breeze/doc/images/output_workflow-run_publish-docs.txt 
b/dev/breeze/doc/images/output_workflow-run_publish-docs.txt
index c50393f1fb8..cffd3517fe7 100644
--- a/dev/breeze/doc/images/output_workflow-run_publish-docs.txt
+++ b/dev/breeze/doc/images/output_workflow-run_publish-docs.txt
@@ -1 +1 @@
-9d78a242ea07f4467d68d6eb769c6e57
+d0677b79afb4dba327d26a35c97455b3
diff --git a/dev/breeze/src/airflow_breeze/commands/workflow_commands.py 
b/dev/breeze/src/airflow_breeze/commands/workflow_commands.py
index 502e622b00c..76de156c7df 100644
--- a/dev/breeze/src/airflow_breeze/commands/workflow_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/workflow_commands.py
@@ -89,6 +89,13 @@ def workflow_run():
     default=None,
     type=str,
 )
[email protected](
+    "--apply-commits",
+    help="Apply commits before building the docs - for example to patch fixes "
+    "to the docs (comma separated list of commits). ",
+    default=None,
+    type=str,
+)
 @argument_doc_packages
 def workflow_run_publish(
     ref: str,
@@ -99,6 +106,7 @@ def workflow_run_publish(
     skip_write_to_stable_folder: bool = False,
     airflow_version: str | None = None,
     airflow_base_version: str | None = None,
+    apply_commits: str | None = None,
 ):
     if os.environ.get("GITHUB_TOKEN", ""):
         get_console().print("\n[warning]Your authentication will use 
GITHUB_TOKEN environment variable.")
@@ -165,6 +173,7 @@ def workflow_run_publish(
         "exclude-docs": exclude_docs,
         "skip-write-to-stable-folder": skip_write_to_stable_folder,
         "build-sboms": "true" if "apache-airflow" in doc_packages else "false",
+        "apply-commits": apply_commits if apply_commits else "",
     }
 
     if airflow_version:
diff --git a/dev/breeze/src/airflow_breeze/commands/workflow_commands_config.py 
b/dev/breeze/src/airflow_breeze/commands/workflow_commands_config.py
index 3ebfca1d7c2..d1ea027628e 100644
--- a/dev/breeze/src/airflow_breeze/commands/workflow_commands_config.py
+++ b/dev/breeze/src/airflow_breeze/commands/workflow_commands_config.py
@@ -28,6 +28,7 @@ WORKFLOW_RUN_PARAMETERS: dict[str, list[dict[str, str | 
list[str]]]] = {
             "options": [
                 "--ref",
                 "--skip-tag-validation",
+                "--apply-commits",
             ],
         },
         {

Reply via email to