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

kou pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-erlang.git


The following commit(s) were added to refs/heads/main by this push:
     new 7e26121  chore: Publish docs to arrow.apache.org (#68)
7e26121 is described below

commit 7e26121e7db24b2ba0a91ea76e2aabbef56b73b4
Author: Benjamin Philip <[email protected]>
AuthorDate: Wed Jul 8 12:55:01 2026 +0530

    chore: Publish docs to arrow.apache.org (#68)
    
    ## What issue does this PR close?
    
    Closes #55.
    
    ## What's changed
    
    - Docs from main are served at https://arrow.apache.org/erlang/main/
    - Released documentation is served at https://arrow.hexdocs.pm/
    (currently
      inactive till we release)
    - Non-main paths at https://arrow.apache.org/erlang/ redirect to HexDocs
    - Preview documentation on a pull request is served on the fork's GitHub
    pages
    - Duplicated workflows have been deleted
---
 .github/workflows/docs.yml       | 98 +++++++++++++++++++++++++++++++---------
 .github/workflows/erlang-ci.yml  | 43 ------------------
 .github/workflows/pr_comment.yml | 54 ++++++++++++++++++++++
 .htaccess                        | 20 ++++++++
 CONTRIBUTING.md                  | 35 ++++++++++++++
 5 files changed, 186 insertions(+), 64 deletions(-)

diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index f4be4a7..8f8d8f7 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -15,34 +15,22 @@
 # specific language governing permissions and limitations
 # under the License.
 
-name: Generate Docs
+name: Docs CI
 on:
   push:
-    branches:
-      - main
-  workflow_dispatch:
-
-# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
-permissions:
-  contents: read
-  pages: write
-  id-token: write
+  pull_request:
 
-# Allow only one concurrent deployment
-concurrency:
-  group: "pages"
-  cancel-in-progress: true
+  workflow_dispatch:
 
 env:
   RUST_TOOLCHAIN_VERSION: stable
 
 jobs:
-  deploy:
+  build:
+    name: Build Docs
+    permissions:
+      contents: read
     runs-on: ubuntu-latest
-    environment:
-      name: github-pages
-      url: ${{ steps.deployment.outputs.page_url }}
-
     steps:
       - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # 
v7.0.0
         with:
@@ -85,8 +73,76 @@ jobs:
       - name: Upload artifact
         uses: 
actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
         with:
+          name: docs-${{ github.sha }}
           path: 'doc'
 
-      - name: Deploy to GitHub Pages
-        id: deployment
+  deploy_fork:
+    name: Deploy to GitHub Pages on fork
+    if: >-
+      (github.event_name == 'push' ||
+       github.event_name == 'workflow_dispatch') &&
+       github.repository != 'apache/arrow-erlang'
+    needs: build
+
+    # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
+    permissions:
+      contents: read
+      pages: write
+      id-token: write
+
+    environment:
+      name: github-pages
+      url: ${{ steps.deployment.outputs.page_url }}
+
+    # Allow only one concurrent deployment
+    concurrency:
+      group: "pages"
+      cancel-in-progress: true
+
+    runs-on: ubuntu-latest
+    steps:
+      - id: deployment
         uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # 
v5.0.0
+        with:
+           artifact_name: docs-${{ github.sha }}
+
+
+  asf_site:
+    # Only deploy on a push to main
+    if: github.ref_name == 'main' && github.event_name == 'push' && 
github.repository == 'apache/arrow-erlang'
+    name: Deploy to arrow.apache.org
+    needs: build
+
+    permissions:
+      contents: write
+
+    # Allow only one concurrent deployment
+    concurrency:
+      group: "asf_site"
+      cancel-in-progress: true
+
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # 
v7.0.0
+        with:
+          persist-credentials: false
+
+      - name: Download artifact
+        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+        with:
+          name: docs-${{ github.sha }}
+          path: docs
+      - name: Prepare website
+        run: |
+          mkdir -p asf-site/main
+          tar -xf docs/artifact.tar -C asf-site/main
+          cp .asf.yaml asf-site
+          cp .htaccess asf-site
+      - name: Deploy to ASF
+        uses: 
peaceiris/actions-gh-pages@84c30a85c19949d7eee79c4ff27748b70285e453  # v4.1.0
+        with:
+          github_token: ${{ secrets.GITHUB_TOKEN }}
+          publish_dir: asf-site
+          publish_branch: asf-site
+          # Avoid accumulating history of in progress API jobs: 
https://github.com/apache/arrow-rs/issues/5908
+          force_orphan: true
diff --git a/.github/workflows/erlang-ci.yml b/.github/workflows/erlang-ci.yml
index 9bb1e0d..3e04496 100644
--- a/.github/workflows/erlang-ci.yml
+++ b/.github/workflows/erlang-ci.yml
@@ -131,46 +131,3 @@ jobs:
 
       - name: Run dialyzer
         run: rebar3 dialyzer
-
-  docbuild_test:
-    name: Test Generate the Docs
-    runs-on: ubuntu-latest
-
-    steps:
-      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # 
v7.0.0
-        with:
-          persist-credentials: false
-
-      - name: Cache Rust crates
-        uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
-        with:
-          path: |
-            ~/.cargo/bin/
-            ~/.cargo/registry/index/
-            ~/.cargo/registry/cache/
-            ~/.cargo/git/db/
-          key: test-native-${{ runner.os }}-${{ env.RUST_TOOLCHAIN_VERSION 
}}-${{ hashFiles('native/**/Cargo.lock') }}
-          restore-keys: |
-            test-native-${{ runner.os }}-${{ env.RUST_TOOLCHAIN_VERSION }}
-
-      - name: Install Rust
-        uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 
# stable
-        with:
-          toolchain: "${{ env.RUST_TOOLCHAIN_VERSION }}"
-
-      - name: Install Erlang/OTP
-        uses: erlef/setup-beam@fc68ffb90438ef2936bbb3251622353b3dcb2f93 # 
v1.24.0
-        with:
-          otp-version: 25.1.0
-          rebar3-version: '3.18.0'
-
-      - name: Cache Hex packages
-        uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
-        with:
-          path: ~/.cache/rebar3/hex/hexpm/packages
-          key: ${{ runner.os }}-hex-${{ hashFiles(format('{0}{1}', 
github.workspace, '/rebar.lock')) }}
-          restore-keys: |
-            ${{ runner.os }}-hex-
-
-      - name: Generate Docs
-        run: rebar3 ex_doc
diff --git a/.github/workflows/pr_comment.yml b/.github/workflows/pr_comment.yml
new file mode 100644
index 0000000..41403a5
--- /dev/null
+++ b/.github/workflows/pr_comment.yml
@@ -0,0 +1,54 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: PR comment
+
+on: # zizmor: ignore[dangerous-triggers]
+  pull_request_target:
+    types:
+      - opened
+
+permissions:
+  contents: read
+  issues: write
+  pull-requests: write
+
+jobs:
+  preview-url:
+    name: Preview URL
+    if: github.event.pull_request.head.repo.full_name != 'apache/arrow-erlang'
+    runs-on: ubuntu-latest
+    steps:
+      - name: Comment
+        env:
+          GH_TOKEN: ${{ github.token }}
+          PR_REPOSITORY: ${{ github.event.pull_request.base.repo.full_name }}
+          FORK_REPOSITORY: ${{ github.event.pull_request.head.repo.full_name }}
+          PR_NUMBER: ${{ github.event.number }}
+        run: |
+          
configure_url="https://github.com/apache/arrow-erlang/blob/main/CONTRIBUTING.md#forks";
+          fork_owner=${FORK_REPOSITORY%/*}
+          fork_repository=${FORK_REPOSITORY#*/}
+          {
+            echo "Preview URL: 
https://${fork_owner}.github.io/${fork_repository}";
+            echo ""
+            echo "If the preview URL doesn't work, you may forget to configure 
your fork repository for preview."
+            echo "See ${configure_url} how to configure."
+          } | tee body.md
+          gh pr comment ${PR_NUMBER} \
+            --body-file body.md \
+            --repo ${PR_REPOSITORY}
diff --git a/.htaccess b/.htaccess
new file mode 100644
index 0000000..08bc1b5
--- /dev/null
+++ b/.htaccess
@@ -0,0 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+ErrorDocument 404 /erlang/main/404.html
+
+RedirectMatch permanent ^/erlang/(?!main/?)(.*)$ https://arrow.hexdocs.pm/$1
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index fa686e7..99c2fc6 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -120,3 +120,38 @@ Please read our [development
 documentation](https://arrow.apache.org/docs/developers/index.html) or
 look through the [New Contributor's
 Guide](https://arrow.apache.org/docs/developers/guide/index.html).
+
+### Forks
+
+We deploy a preview of the ExDoc documentation of any fork as a part of our
+tests.
+
+On a commit to all branches, the rendered static site will be
+published to GitHub Pages using GitHub Actions. The latest commit is
+only visible because all publications use the same url:
+https://${YOUR_GITHUB_ACCOUNT}.github.io/arrow-erlang/
+
+You need to configure your fork repository to use this feature:
+
+1. Enable GitHub Pages on your fork:
+   1. Open 
https://github.com/${YOUR_GITHUB_ACCOUNT}/arrow-erlang/settings/pages
+   2. Select "GitHub Actions" as "Source"
+2. Accept publishing GitHub Pages from all branches on your fork:
+   1. Open 
https://github.com/${YOUR_GITHUB_ACCOUNT}/arrow-erlang/settings/environments
+   2. Select the "github-pages" environment
+   3. Change the default "Deployment branches and tags" rule:
+      1. Press the "Edit" button
+      2. Change the "Name pattern" to `*` from `main` or `gh-pages`
+
+See also the [GitHub Pages
+documentation](https://docs.github.com/en/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site#publishing-with-a-custom-github-actions-workflow).
+
+
+FYI: You can also generate the site for https://arrow.apache.org/erlang/main
+to `doc/` locally by running the following:
+
+
+```shell
+rebar3 ex_doc
+```
+

Reply via email to