diff --git a/.asf.yaml b/.asf.yaml
index 65592acbb181..aaa6e8f41dbe 100644
--- a/.asf.yaml
+++ b/.asf.yaml
@@ -39,3 +39,7 @@ github:
rebase: false
features:
issues: true
+
+publish:
+ whoami: asf-site
+ subdir: datafusion
diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml
new file mode 100644
index 000000000000..fdbcf6aba42c
--- /dev/null
+++ b/.github/workflows/docs.yaml
@@ -0,0 +1,63 @@
+on:
+ push:
+ branches:
+ - main
+ 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/
+ rsync \
+ -a \
+ --delete \
+ --exclude '/.git/' \
+ ../docs/build/html/ \
+ ./
+ cp ../.asf.yaml .
+ touch .nojekyll
+ 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 @@
-
-
-