diff --git a/.asf.yaml b/.asf.yaml
index 65592acbb181..261f584535b5 100644
--- a/.asf.yaml
+++ b/.asf.yaml
@@ -39,3 +39,7 @@ github:
rebase: false
features:
issues: true
+
+publish:
+ whoami: asf-site
+ subdir: datafusion
\ No newline at end of file
diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml
new file mode 100644
index 000000000000..0ad2827632d9
--- /dev/null
+++ b/.github/workflows/docs.yaml
@@ -0,0 +1,60 @@
+on:
+ push:
+ branches:
+ - master
+ paths:
+ - .github/workflows/docs.yaml
+ - docs/**
+
+name: Deploy DataFusion site
+
+jobs:
+ build-docs:
+ name: Build docs
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout docs sources
+ uses: actions/checkout@v3
+
+ - name: Checkout asf-site branch
+ uses: actions/checkout@v3
+ with:
+ ref: asf-site
+ path: asf-site
+
+ - name: Setup Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: "3.10"
+
+ - name: Install dependencies
+ run: |
+ set -x
+ python3 -m venv venv
+ source venv/bin/activate
+ pip install -r docs/requirements.txt
+
+ - name: Build docs
+ run: |
+ set -x
+ source venv/bin/activate
+ cd docs
+ ./build.sh
+
+ - name: Copy & push the generated HTML
+ run: |
+ set -x
+ cd asf-site/
+ # delete anything but: 1) '.'; 2) '..'; 3) .git/
+ rm -rf .github .buildinfo .gitattributes .github_changelog_generator .gitignore .gitmodules
+ find ./ | grep -vE "^./$|^../$|^./.git" | xargs rm -rf
+ cp ../.asf.yaml .
+ cp -rT ../docs/build/html/ .
+ git status --porcelain
+ if [ "$(git status --porcelain)" != "" ]; then
+ git config user.name "github-actions[bot]"
+ git config user.email "github-actions[bot]@users.noreply.github.com"
+ git add --all
+ git commit -m 'Publish built docs triggered by ${{ github.sha }}'
+ git push || git push --force
+ fi
diff --git a/docs/source/_templates/docs-sidebar.html b/docs/source/_templates/docs-sidebar.html
index bc2bf0092204..ee23e4423524 100644
--- a/docs/source/_templates/docs-sidebar.html
+++ b/docs/source/_templates/docs-sidebar.html
@@ -1,7 +1,4 @@
-
-
-