name: Publish Docs
on:
push:
branches:
- main
paths:
- "docs/**"
- "scripts/generate-docs-index.mjs"
- ".github/workflows/docs-pages.yml"
workflow_dispatch:
permissions:
contents: write
concurrency:
group: "docs-pages"
cancel-in-progress: true
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Build docs index
run: node scripts/generate-docs-index.mjs
- name: Prepare static site payload
run: |
mkdir -p site/docs
cp -R docs/. site/docs/
printf '%s\n' '
Islandflow DocsContinue to docs' > site/index.html
touch site/.nojekyll
- name: Publish to gh-pages branch
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -euo pipefail
rm -rf .gh-pages-tmp
mkdir .gh-pages-tmp
cp -R site/. .gh-pages-tmp/
cd .gh-pages-tmp
git init
git checkout -b gh-pages
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add -A
git commit -m "publish docs from ${GITHUB_SHA}"
git push --force "https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" gh-pages:gh-pages