| # 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: Deploy Documentation |
| |
| on: |
| workflow_dispatch: |
| |
| permissions: |
| contents: write |
| |
| jobs: |
| deploy: |
| runs-on: ubuntu-latest |
| defaults: |
| run: |
| working-directory: ./website |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| fetch-depth: 0 |
| |
| - uses: actions/setup-node@v6 |
| with: |
| node-version: 24 |
| |
| - name: Install dependencies |
| run: npm install |
| |
| - name: Build website |
| run: npm run build |
| |
| - name: Deploy to gh-pages branch |
| working-directory: . |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| run: | |
| git config user.name "github-actions[bot]" |
| git config user.email "github-actions[bot]@users.noreply.github.com" |
| |
| # Create a temporary directory with the built site |
| TMPDIR=$(mktemp -d) |
| cp -r website/build/* "$TMPDIR" |
| |
| # Switch to the gh-pages branch (create orphan if it doesn't exist) |
| if git ls-remote --exit-code origin gh-pages; then |
| git fetch origin gh-pages |
| git checkout gh-pages |
| else |
| git checkout --orphan gh-pages |
| git rm -rf . |
| fi |
| |
| # Replace contents with the new build |
| git rm -rf . || true |
| git clean -fdx |
| cp -r "$TMPDIR"/* . |
| rm -rf "$TMPDIR" |
| |
| # Commit and push |
| git add -A |
| if git diff --cached --quiet; then |
| echo "No changes to deploy." |
| else |
| git commit -m "Deploy website from ${GITHUB_SHA::8}" |
| git push origin gh-pages |
| fi |