From 217e02fcee02424782ccfc9167a67f8dab77e7d1 Mon Sep 17 00:00:00 2001
From: Jarek Potiuk <jarek@potiuk.com>
Date: Wed, 23 Jul 2025 13:31:56 +0200
Subject: [PATCH] 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/actions/breeze/action.yml             |  3 -
 .../prepare_breeze_and_image/action.yml       |  2 -
 .../workflows/additional-ci-image-checks.yml  |  2 -
 .../workflows/airflow-distributions-tests.yml |  2 -
 .github/workflows/backport-cli.yml            |  4 +-
 .github/workflows/basic-tests.yml             | 14 +----
 .github/workflows/ci-amd.yml                  |  2 -
 .github/workflows/ci-arm.yml                  |  2 -
 .github/workflows/ci-image-build.yml          |  2 -
 .github/workflows/ci-image-checks.yml         |  2 -
 .github/workflows/helm-tests.yml              |  6 +-
 .github/workflows/prod-image-build.yml        |  4 --
 .github/workflows/publish-docs-to-s3.yml      | 39 +++++++++++--
 .github/workflows/push-image-cache.yml        |  4 --
 .github/workflows/release_dockerhub_image.yml |  2 -
 .../release_single_dockerhub_image.yml        |  4 --
 dev/README_RELEASE_AIRFLOW.md                 | 19 ++++++
 dev/README_RELEASE_PROVIDERS.md               | 14 +++++
 .../output_workflow-run_publish-docs.svg      | 58 +++++++++++--------
 .../output_workflow-run_publish-docs.txt      |  2 +-
 .../commands/workflow_commands.py             |  9 +++
 .../commands/workflow_commands_config.py      |  1 +
 22 files changed, 120 insertions(+), 77 deletions(-)

diff --git a/.github/actions/breeze/action.yml b/.github/actions/breeze/action.yml
index 3fef664b337fa..a7fff7dc397fe 100644
--- a/.github/actions/breeze/action.yml
+++ b/.github/actions/breeze/action.yml
@@ -22,9 +22,6 @@ inputs:
   python-version:
     description: 'Python version to use'
     default: "3.10"
-  use-uv:
-    description: 'Whether to use uv tool'
-    required: true
 outputs:
   host-python-version:
     description: Python version used in host
diff --git a/.github/actions/prepare_breeze_and_image/action.yml b/.github/actions/prepare_breeze_and_image/action.yml
index 4a2685cc4ebd8..0724167cda519 100644
--- a/.github/actions/prepare_breeze_and_image/action.yml
+++ b/.github/actions/prepare_breeze_and_image/action.yml
@@ -43,8 +43,6 @@ runs:
       shell: bash
     - name: "Install Breeze"
       uses: ./.github/actions/breeze
-      with:
-        use-uv: ${{ inputs.use-uv }}
       id: breeze
     - name: "Check free space"
       shell: bash
diff --git a/.github/workflows/additional-ci-image-checks.yml b/.github/workflows/additional-ci-image-checks.yml
index 86a75b1d31fb4..f3982389301e6 100644
--- a/.github/workflows/additional-ci-image-checks.yml
+++ b/.github/workflows/additional-ci-image-checks.yml
@@ -142,7 +142,5 @@ jobs:
         run: ./scripts/ci/prepare_and_cleanup_runner.sh
       - name: "Install Breeze"
         uses: ./.github/actions/breeze
-        with:
-          use-uv: ${{ inputs.use-uv }}
       - name: "Check that image builds quickly"
         run: breeze shell --max-time 900 --platform "${PLATFORM}"
diff --git a/.github/workflows/airflow-distributions-tests.yml b/.github/workflows/airflow-distributions-tests.yml
index 62d4ee1f6b420..98203e47b3ebc 100644
--- a/.github/workflows/airflow-distributions-tests.yml
+++ b/.github/workflows/airflow-distributions-tests.yml
@@ -105,8 +105,6 @@ jobs:
         if: ${{ inputs.use-local-venv == 'true' }}
       - name: "Install Breeze"
         uses: ./.github/actions/breeze
-        with:
-          use-uv: ${{ inputs.use-uv }}
         if: ${{ inputs.use-local-venv == 'true' }}
       - name: "Cleanup dist files"
         run: rm -fv ./dist/*
diff --git a/.github/workflows/backport-cli.yml b/.github/workflows/backport-cli.yml
index 0ecdfb8e63e04..42f8178868267 100644
--- a/.github/workflows/backport-cli.yml
+++ b/.github/workflows/backport-cli.yml
@@ -70,8 +70,8 @@ jobs:
           TARGET_BRANCH: ${{ inputs.target-branch }}
           COMMIT_SHA: ${{ inputs.commit-sha }}
         run: |
-          git config --global user.email "name@example.com"
-          git config --global user.name "Your Name"
+          git config --global user.email "bot@airflow.apache.org"
+          git config --global user.name "Your friendly bot"
           set +e
           {
           echo 'cherry_picker_output<<EOF'
diff --git a/.github/workflows/basic-tests.yml b/.github/workflows/basic-tests.yml
index 3dd69cd054ad0..d6d3d467c1b84 100644
--- a/.github/workflows/basic-tests.yml
+++ b/.github/workflows/basic-tests.yml
@@ -80,8 +80,6 @@ jobs:
         run: ./scripts/ci/prepare_and_cleanup_runner.sh
       - name: "Install Breeze"
         uses: ./.github/actions/breeze
-        with:
-          use-uv: ${{ inputs.use-uv }}
       - run: uv tool run --from apache-airflow-breeze pytest -n auto --color=yes
         working-directory: ./dev/breeze/
   tests-ui:
@@ -169,8 +167,6 @@ jobs:
           persist-credentials: false
       - name: "Install Breeze"
         uses: ./.github/actions/breeze
-        with:
-          use-uv: ${{ inputs.use-uv }}
         id: breeze
       - name: "Install pre-commit"
         uses: ./.github/actions/install-pre-commit
@@ -200,8 +196,6 @@ jobs:
         run: ./scripts/ci/prepare_and_cleanup_runner.sh
       - name: "Install Breeze"
         uses: ./.github/actions/breeze
-        with:
-          use-uv: ${{ inputs.use-uv }}
         id: breeze
       - name: "Install pre-commit"
         uses: ./.github/actions/install-pre-commit
@@ -256,8 +250,6 @@ jobs:
         run: ./scripts/ci/prepare_and_cleanup_runner.sh
       - name: "Install Breeze"
         uses: ./.github/actions/breeze
-        with:
-          use-uv: ${{ inputs.use-uv }}
         id: breeze
       - name: "Install pre-commit"
         uses: ./.github/actions/install-pre-commit
@@ -338,14 +330,12 @@ jobs:
         run: ./scripts/ci/prepare_and_cleanup_runner.sh
       - name: "Install Breeze"
         uses: ./.github/actions/breeze
-        with:
-          use-uv: ${{ inputs.use-uv }}
       - name: "Cleanup dist files"
         run: rm -fv ./dist/*
       - name: Setup git for tagging
         run: |
-          git config --global user.email "name@example.com"
-          git config --global user.name "Your Name"
+          git config --global user.email "bot@airflow.apache.org"
+          git config --global user.name "Your friendly bot"
       - name: Install twine
         run: pip install twine
       - name: "Check Airflow create minor branch command"
diff --git a/.github/workflows/ci-amd.yml b/.github/workflows/ci-amd.yml
index a16f9ac11fb7f..982729d9bf77d 100644
--- a/.github/workflows/ci-amd.yml
+++ b/.github/workflows/ci-amd.yml
@@ -148,8 +148,6 @@ jobs:
           persist-credentials: false
       - name: "Install Breeze"
         uses: ./.github/actions/breeze
-        with:
-          use-uv: ${{ inputs.use-uv }}
         id: breeze
       - name: "Get information about the Workflow"
         id: source-run-info
diff --git a/.github/workflows/ci-arm.yml b/.github/workflows/ci-arm.yml
index ef9d7766956d5..f351c09cb2419 100644
--- a/.github/workflows/ci-arm.yml
+++ b/.github/workflows/ci-arm.yml
@@ -141,8 +141,6 @@ jobs:
           persist-credentials: false
       - name: "Install Breeze"
         uses: ./.github/actions/breeze
-        with:
-          use-uv: ${{ inputs.use-uv }}
         id: breeze
       - name: "Get information about the Workflow"
         id: source-run-info
diff --git a/.github/workflows/ci-image-build.yml b/.github/workflows/ci-image-build.yml
index f58fe1946ca1f..e716f85c5ad79 100644
--- a/.github/workflows/ci-image-build.yml
+++ b/.github/workflows/ci-image-build.yml
@@ -124,8 +124,6 @@ jobs:
         run: ./scripts/ci/prepare_and_cleanup_runner.sh
       - name: "Install Breeze"
         uses: ./.github/actions/breeze
-        with:
-          use-uv: ${{ inputs.use-uv }}
       - name: "Restore ci-cache mount image ${{ inputs.platform }}:${{ env.PYTHON_MAJOR_MINOR_VERSION }}"
         uses: apache/infrastructure-actions/stash/restore@1c35b5ccf8fba5d4c3fdf25a045ca91aa0cbc468
         with:
diff --git a/.github/workflows/ci-image-checks.yml b/.github/workflows/ci-image-checks.yml
index caa6f4c8889ba..116e4095a7d2d 100644
--- a/.github/workflows/ci-image-checks.yml
+++ b/.github/workflows/ci-image-checks.yml
@@ -133,8 +133,6 @@ jobs:
         if: inputs.canary-run == 'true'
       - name: "Install Breeze"
         uses: ./.github/actions/breeze
-        with:
-          use-uv: ${{ inputs.use-uv }}
         id: breeze
         if: inputs.canary-run == 'true'
       - name: "Install pre-commit"
diff --git a/.github/workflows/helm-tests.yml b/.github/workflows/helm-tests.yml
index f2f712a6831ec..198b75831903f 100644
--- a/.github/workflows/helm-tests.yml
+++ b/.github/workflows/helm-tests.yml
@@ -100,12 +100,10 @@ jobs:
         run: ./scripts/ci/prepare_and_cleanup_runner.sh
       - name: "Install Breeze"
         uses: ./.github/actions/breeze
-        with:
-          use-uv: ${{ inputs.use-uv }}
       - name: Setup git for tagging
         run: |
-          git config --global user.email "name@example.com"
-          git config --global user.name "Your Name"
+          git config --global user.email "bot@airflow.apache.org"
+          git config --global user.name "Your friendly bot"
       - name: "Remove old artifacts"
         run: rm -rf dist/*
       - name: "Setup k8s/helm environment"
diff --git a/.github/workflows/prod-image-build.yml b/.github/workflows/prod-image-build.yml
index 4819ee7be1470..6a075c9d52169 100644
--- a/.github/workflows/prod-image-build.yml
+++ b/.github/workflows/prod-image-build.yml
@@ -136,8 +136,6 @@ jobs:
         if: inputs.upload-package-artifact == 'true'
       - name: "Install Breeze"
         uses: ./.github/actions/breeze
-        with:
-          use-uv: ${{ inputs.use-uv }}
         if: inputs.upload-package-artifact == 'true'
       - name: "Prepare providers packages - all providers built from sources"
         shell: bash
@@ -218,8 +216,6 @@ jobs:
         run: ./scripts/ci/prepare_and_cleanup_runner.sh
       - name: "Install Breeze"
         uses: ./.github/actions/breeze
-        with:
-          use-uv: ${{ inputs.use-uv }}
       - name: "Cleanup dist and context file"
         shell: bash
         run: rm -fv ./dist/* ./docker-context-files/*
diff --git a/.github/workflows/publish-docs-to-s3.yml b/.github/workflows/publish-docs-to-s3.yml
index cc12adc84333b..e6d9a1a22320f 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:
@@ -78,6 +82,7 @@ jobs:
       BUILD_SBOMS: ${{ inputs.build-sboms }}
       AIRFLOW_BASE_VERSION: ${{ inputs.airflow-base-version || '' }}
       AIRFLOW_VERSION: ${{ inputs.airflow-version || '' }}
+      APPLY_COMMITS: ${{ inputs.apply-commits || '' }}
     outputs:
       include-docs: ${{ inputs.include-docs == 'all' && '' || inputs.include-docs }}
       destination-location: ${{ steps.parameters.outputs.destination-location }}
@@ -113,6 +118,7 @@ jobs:
           echo "Build SBOMs: '${BUILD_SBOMS}'"
           echo "Airflow Base Version: '${AIRFLOW_BASE_VERSION}'"
           echo "Airflow Version: '${AIRFLOW_VERSION}'"
+          echo "Apply commits: '${APPLY_COMMITS}'"
           if [[ "${DESTINATION}" == "auto" ]]; then
              if [[ "${REF}" =~ ^.*[0-9]*\.[0-9]*\.[0-9]*$ ]]; then
                 echo "${REF} looks like final release, using live destination"
@@ -162,6 +168,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,17 +191,43 @@ jobs:
           ref: ${{ inputs.ref }}
           fetch-depth: 0
           fetch-tags: true
+      - name: "Apply patch commits if provided"
+        run: |
+          if [[ "${APPLY_COMMITS}" != "" ]]; then
+            git config --global user.email "bot@airflow.apache.org"
+            git config --global user.name "Your friendly bot"
+            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 commits provided to apply, skipping."
+          fi
       - name: "Install Breeze from the ${{ inputs.ref }} reference"
         uses: ./.github/actions/breeze
         with:
-          use-uv: ${{ inputs.use-uv }}
           python-version: "${{ needs.build-info.outputs.default-python-version }}"
       - name: "Building image from the ${{ inputs.ref }} reference"
         env:
           INCLUDE_DOCS: ${{ needs.build-info.outputs.include-docs }}
           INCLUDE_COMMITS: ${{ startsWith(inputs.ref, 'providers') && 'true' || 'false' }}
+        # if the regular breeze ci-image build fails, we will try to build the image using docker buildx
+        # This is needed for the case when we are building an old image which tries to use main as
+        # a cache and it fails because the main branch has changed and does not have the same pyproject.toml
+        # Structure as the one we are trying to build.
         run: >
-          breeze ci-image build
+          breeze ci-image build ||
+          docker buildx build --load --builder default --progress=auto --pull
+          --build-arg AIRFLOW_EXTRAS=devel-ci --build-arg AIRFLOW_PRE_CACHED_PIP_PACKAGES=false
+          --build-arg AIRFLOW_USE_UV=true --build-arg UV_HTTP_TIMEOUT=300
+          --build-arg BUILD_PROGRESS=auto --build-arg INSTALL_MYSQL_CLIENT_TYPE=mariadb
+          --build-arg VERSION_SUFFIX_FOR_PYPI=dev0
+          -t ghcr.io/apache/airflow/main/ci/python3.9:latest --target main .
+          -f Dockerfile.ci --platform linux/amd64
       - name: "Building docs with --docs-only flag using ${{ inputs.ref }} reference breeze"
         env:
           INCLUDE_DOCS: ${{ needs.build-info.outputs.include-docs }}
@@ -291,8 +324,6 @@ jobs:
         run: ./scripts/ci/prepare_and_cleanup_runner.sh
       - name: "Install Breeze"
         uses: ./.github/actions/breeze
-        with:
-          use-uv: ${{ inputs.use-uv }}
       - name: "Download docs prepared as artifacts"
         uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093  # v4.3.0
         with:
diff --git a/.github/workflows/push-image-cache.yml b/.github/workflows/push-image-cache.yml
index b523577b46c99..eccd176096137 100644
--- a/.github/workflows/push-image-cache.yml
+++ b/.github/workflows/push-image-cache.yml
@@ -120,8 +120,6 @@ jobs:
         run: ./scripts/ci/prepare_and_cleanup_runner.sh
       - name: "Install Breeze"
         uses: ./.github/actions/breeze
-        with:
-          use-uv: ${{ inputs.use-uv }}
       - name: Login to ghcr.io
         env:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -191,8 +189,6 @@ jobs:
         run: ./scripts/ci/prepare_and_cleanup_runner.sh
       - name: "Install Breeze"
         uses: ./.github/actions/breeze
-        with:
-          use-uv: ${{ inputs.use-uv }}
       - name: "Cleanup dist and context file"
         run: rm -fv ./dist/* ./docker-context-files/*
       - name: "Download packages prepared as artifacts"
diff --git a/.github/workflows/release_dockerhub_image.yml b/.github/workflows/release_dockerhub_image.yml
index 1ec9ec8f91be4..dbe38567c5cb0 100644
--- a/.github/workflows/release_dockerhub_image.yml
+++ b/.github/workflows/release_dockerhub_image.yml
@@ -96,8 +96,6 @@ jobs:
         run: uv run scripts/ci/airflow_version_check.py "${AIRFLOW_VERSION}" >> "${GITHUB_OUTPUT}"
       - name: "Install Breeze"
         uses: ./.github/actions/breeze
-        with:
-          use-uv: "true"
       - name: Selective checks
         id: selective-checks
         env:
diff --git a/.github/workflows/release_single_dockerhub_image.yml b/.github/workflows/release_single_dockerhub_image.yml
index b308de93e72ee..991ac35b13924 100644
--- a/.github/workflows/release_single_dockerhub_image.yml
+++ b/.github/workflows/release_single_dockerhub_image.yml
@@ -83,8 +83,6 @@ jobs:
         run: ./scripts/ci/prepare_and_cleanup_runner.sh
       - name: "Install Breeze"
         uses: ./.github/actions/breeze
-        with:
-          use-uv: "false"
       - name: Free space
         run: breeze ci free-space --answer yes
       - name: "Cleanup dist and context file"
@@ -181,8 +179,6 @@ jobs:
         run: ./scripts/ci/prepare_and_cleanup_runner.sh
       - name: "Install Breeze"
         uses: ./.github/actions/breeze
-        with:
-          use-uv: "false"
       - name: Free space
         run: breeze ci free-space --answer yes
       - name: "Cleanup dist and context file"
diff --git a/dev/README_RELEASE_AIRFLOW.md b/dev/README_RELEASE_AIRFLOW.md
index de201c44f093c..5f6a603de2f22 100644
--- a/dev/README_RELEASE_AIRFLOW.md
+++ b/dev/README_RELEASE_AIRFLOW.md
@@ -411,6 +411,25 @@ 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. (don't forget to add --skip-write-to-stable-folder if you are publishing
+previous version of the distribution). Example:
+
+```shell script
+breeze workflow-run publish-docs --ref 3.0.3 --site-env staging \
+  --apply-commits 4ae273cbedec66c87dc40218c7a94863390a380d,e61e9618bdd6be8213d277b1427f67079fcb1d9b \
+  --skip-write-to-stable-folder \
+  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 c5938bd16bd60..c3bda6b64a54e 100644
--- a/dev/README_RELEASE_PROVIDERS.md
+++ b/dev/README_RELEASE_PROVIDERS.md
@@ -522,6 +522,20 @@ 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 (don't forget to add --skip-write-to-stable-folder if you are publishing
+previous version of the distribution). Example:
+
+```shell script
+breeze workflow-run publish-docs --ref providers-apache-hive/9.0.0 --site-env live \
+  --apply-commits 4ae273cbedec66c87dc40218c7a94863390a380d --skip-write-to-stable-folder \
+  apache.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 23f375ca723ff..fb3016cb50db7 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(#breeze-workflow-run-publish-docs-line-17)">────────────────────────────────────────────────────────────────────────────────</text><text class="breeze-workflow-run-publish-docs-r5" x="1439.6" y="434.8" textLength="24.4" clip-path="url(#breeze-workflow-run-publish-docs-line-17)">─╮</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="434.8" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-17)">
 </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-workflow-run-publish-docs-r1" x="366" y="459.2" textLength="646.6" clip-path="url(#breeze-workflow-run-publish-docs-line-18)">Git&#160;reference&#160;tag&#160;to&#160;checkout&#160;to&#160;build&#160;documentation.</text><text class="breeze-workflow-run-publish-docs-r7" x="1024.8" y="459.2" textLength="73.2" clip-path="url(#breeze-workflow-run-publish-docs-line-18)">(TEXT)</text><text class="breeze-workflow-run-publish-docs-r8" x="1110.2" y="459.2" textLength="122" clip-path="url(#breeze-workflow-run-publish-docs-line-18)">[required]</text><text class="breeze-workflow-run-publish-docs-r5" x="1451.8" y="459.2" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-18)">│</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="459.2" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-18)">
 </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;validation&#160;of&#160;the&#160;tag.&#160;Allows&#160;to&#160;use&#160;`main`&#160;or&#160;commit&#160;hash.&#160;Use&#160;with&#160;caution.</text><text class="breeze-workflow-run-publish-docs-r5" x="1451.8" y="483.6" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-19)">│</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="483.6" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-19)">
-</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-workflow-run-publish-docs-line-21)">───────────────────────────────────────────────────────────────────────────────</text><text class="breeze-workflow-run-publish-docs-r5" x="1439.6" y="532.4" textLength="24.4" clip-path="url(#breeze-workflow-run-publish-docs-line-21)">─╮</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="532.4" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-21)">
-</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;Airflow&#160;Version&#160;to&#160;use&#160;for&#160;the&#160;docs&#160;build.&#160;If&#160;not&#160;provided,&#160;it&#160;will&#160;be&#160;extracted&#160;</text><text class="breeze-workflow-run-publish-docs-r5" x="1451.8" y="556.8" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-22)">│</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="556.8" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-22)">
-</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;&#160;&#160;</text><text class="breeze-workflow-run-publish-docs-r5" x="1451.8" 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="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="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;&#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;&#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="1451.8" 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="1464" y="605.6" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-24)">
-</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;&#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;&#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="1451.8" y="630" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-25)">│</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="630" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-25)">
-</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&#160;Airflow&#160;Base&#160;Version&#160;to&#160;use&#160;for&#160;the&#160;docs&#160;build.&#160;If&#160;not&#160;provided,&#160;it&#160;will&#160;be&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-workflow-run-publish-docs-r5" x="1451.8" 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="1464" y="654.4" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-26)">
-</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 class="breeze-workflow-run-publish-docs-r5" x="1451.8" 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="1464" y="678.8" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-27)">
-</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;&#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="1451.8" 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="1464" y="703.2" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-28)">
-</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;&#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;&#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="1451.8" y="727.6" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-29)">│</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="727.6" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-29)">
-</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(#breeze-workflow-run-publish-docs-line-31)">────────────────────────────────────────────────────────────────────────────</text><text class="breeze-workflow-run-publish-docs-r5" x="1439.6" y="776.4" textLength="24.4" clip-path="url(#breeze-workflow-run-publish-docs-line-31)">─╮</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="776.4" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-31)">
-</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;separated&#160;short&#160;name&#160;list&#160;of&#160;docs&#160;packages&#160;to&#160;exclude&#160;from&#160;the&#160;publish.&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-workflow-run-publish-docs-r5" x="1451.8" y="800.8" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-32)">│</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="800.8" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-32)">
-</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;&#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="1451.8" 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="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="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;&#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;&#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="1451.8" y="849.6" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-34)">│</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="849.6" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-34)">
-</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&#160;the&#160;documentation&#160;will&#160;be&#160;published.</text><text class="breeze-workflow-run-publish-docs-r7" x="1110.2" y="874" textLength="280.6" clip-path="url(#breeze-workflow-run-publish-docs-line-35)">(auto&#160;|&#160;live&#160;|&#160;staging)</text><text class="breeze-workflow-run-publish-docs-r5" x="1451.8" y="874" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-35)">│</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="874" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-35)">
-</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&#160;writing&#160;to&#160;stable&#160;folder.</text><text class="breeze-workflow-run-publish-docs-r5" x="1451.8" 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="1464" y="898.4" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-36)">
-</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="1439.6" y="947.2" textLength="24.4" clip-path="url(#breeze-workflow-run-publish-docs-line-38)">─╮</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="947.2" textLength="12.2" 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-workflow-run-publish-docs-r1" x="170.8" y="971.6" textLength="329.4" clip-path="url(#breeze-workflow-run-publish-docs-line-39)">Show&#160;this&#160;message&#160;and&#160;exit.</text><text class="breeze-workflow-run-publish-docs-r5" x="1451.8" y="971.6" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-39)">│</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="971.6" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-39)">
+</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;before&#160;building&#160;the&#160;docs&#160;-&#160;for&#160;example&#160;to&#160;patch&#160;fixes&#160;to&#160;the&#160;docs&#160;(comma&#160;&#160;</text><text class="breeze-workflow-run-publish-docs-r5" x="1451.8" y="508" textLength="12.2" 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="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;&#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;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-workflow-run-publish-docs-r5" x="1451.8" 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="1464" y="532.4" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-21)">
+</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;&#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;&#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="1451.8" y="556.8" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-22)">│</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="556.8" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-22)">
+</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-workflow-run-publish-docs-line-24)">───────────────────────────────────────────────────────────────────────────────</text><text class="breeze-workflow-run-publish-docs-r5" x="1439.6" y="605.6" textLength="24.4" clip-path="url(#breeze-workflow-run-publish-docs-line-24)">─╮</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="605.6" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-24)">
+</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&#160;Version&#160;to&#160;use&#160;for&#160;the&#160;docs&#160;build.&#160;If&#160;not&#160;provided,&#160;it&#160;will&#160;be&#160;extracted&#160;</text><text class="breeze-workflow-run-publish-docs-r5" x="1451.8" y="630" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-25)">│</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="630" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-25)">
+</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;&#160;&#160;</text><text class="breeze-workflow-run-publish-docs-r5" x="1451.8" 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="1464" y="654.4" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-26)">
+</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;&#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;&#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="1451.8" 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="1464" y="678.8" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-27)">
+</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;&#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;&#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="1451.8" 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="1464" y="703.2" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-28)">
+</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&#160;Airflow&#160;Base&#160;Version&#160;to&#160;use&#160;for&#160;the&#160;docs&#160;build.&#160;If&#160;not&#160;provided,&#160;it&#160;will&#160;be&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-workflow-run-publish-docs-r5" x="1451.8" y="727.6" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-29)">│</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="727.6" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-29)">
+</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="breeze-workflow-run-publish-docs-r5" x="1451.8" 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="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="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;&#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="1451.8" 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="1464" y="776.4" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-31)">
+</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;&#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;&#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="1451.8" y="800.8" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-32)">│</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="800.8" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-32)">
+</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(#breeze-workflow-run-publish-docs-line-34)">────────────────────────────────────────────────────────────────────────────</text><text class="breeze-workflow-run-publish-docs-r5" x="1439.6" y="849.6" textLength="24.4" clip-path="url(#breeze-workflow-run-publish-docs-line-34)">─╮</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="849.6" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-34)">
+</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;short&#160;name&#160;list&#160;of&#160;docs&#160;packages&#160;to&#160;exclude&#160;from&#160;the&#160;publish.&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-workflow-run-publish-docs-r5" x="1451.8" y="874" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-35)">│</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="874" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-35)">
+</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;&#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="1451.8" 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="1464" y="898.4" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-36)">
+</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;&#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;&#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="1451.8" y="922.8" textLength="12.2" 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="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;which&#160;the&#160;documentation&#160;will&#160;be&#160;published.</text><text class="breeze-workflow-run-publish-docs-r7" x="1110.2" y="947.2" textLength="280.6" clip-path="url(#breeze-workflow-run-publish-docs-line-38)">(auto&#160;|&#160;live&#160;|&#160;staging)</text><text class="breeze-workflow-run-publish-docs-r5" x="1451.8" y="947.2" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-38)">│</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="947.2" textLength="12.2" 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="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&#160;writing&#160;to&#160;stable&#160;folder.</text><text class="breeze-workflow-run-publish-docs-r5" x="1451.8" y="971.6" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-39)">│</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="971.6" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-39)">
 </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="1439.6" y="1020.4" textLength="24.4" clip-path="url(#breeze-workflow-run-publish-docs-line-41)">─╮</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="1020.4" textLength="12.2" 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="breeze-workflow-run-publish-docs-r1" x="170.8" y="1044.8" textLength="329.4" clip-path="url(#breeze-workflow-run-publish-docs-line-42)">Show&#160;this&#160;message&#160;and&#160;exit.</text><text class="breeze-workflow-run-publish-docs-r5" x="1451.8" y="1044.8" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-42)">│</text><text class="breeze-workflow-run-publish-docs-r1" x="1464" y="1044.8" textLength="12.2" clip-path="url(#breeze-workflow-run-publish-docs-line-42)">
+</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 c50393f1fb8ad..cffd3517fe72c 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 502e622b00c3f..76de156c7dffa 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,
 )
+@click.option(
+    "--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 3ebfca1d7c26c..d1ea027628e02 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 @@
             "options": [
                 "--ref",
                 "--skip-tag-validation",
+                "--apply-commits",
             ],
         },
         {
