Skip to content

ci: add Azure Static Web Apps workflow file #5

ci: add Azure Static Web Apps workflow file

ci: add Azure Static Web Apps workflow file #5

name: Docs Deploy gh-pages
on:
push:
branches:
- main
concurrency:
group: docs-deploy-gh-pages
cancel-in-progress: false
permissions:
contents: read
env:
NODE_VERSION: "22"
DOCS_LINK_CHECK_CACHE_DIR: .tmp/link-check-cache
DOCS_LINK_CHECK_CACHE_SCOPE: ${{ github.ref_name }}
DOCS_GH_PAGES_PAYLOAD_DIR: .deploy/gh-pages
jobs:
build:
name: Build validated docs snapshot
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Restore docs link-check cache
id: docs-link-check-cache-restore
uses: actions/cache/restore@v4
with:
path: ${{ env.DOCS_LINK_CHECK_CACHE_DIR }}
key: docs-link-check-${{ runner.os }}-${{ env.DOCS_LINK_CHECK_CACHE_SCOPE }}-${{ github.sha }}
restore-keys: |
docs-link-check-${{ runner.os }}-${{ env.DOCS_LINK_CHECK_CACHE_SCOPE }}-
- name: Build and verify docs
run: npm run build:ci
env:
CLARITY_PROJECT_ID: ${{ secrets.CLARITY_PROJECT_ID }}
- name: Save docs link-check cache
if: always()
uses: actions/cache/save@v4
with:
path: ${{ env.DOCS_LINK_CHECK_CACHE_DIR }}
key: docs-link-check-${{ runner.os }}-${{ env.DOCS_LINK_CHECK_CACHE_SCOPE }}-${{ github.sha }}
- name: Assemble gh-pages publication payload
run: |
rm -rf "${DOCS_GH_PAGES_PAYLOAD_DIR}"
mkdir -p "${DOCS_GH_PAGES_PAYLOAD_DIR}/dist"
cp .github/gh-pages/esa.jsonc "${DOCS_GH_PAGES_PAYLOAD_DIR}/esa.jsonc"
cp -R dist/. "${DOCS_GH_PAGES_PAYLOAD_DIR}/dist/"
- name: Upload validated gh-pages payload
uses: actions/upload-artifact@v4
with:
name: docs-gh-pages-payload
path: ${{ env.DOCS_GH_PAGES_PAYLOAD_DIR }}
if-no-files-found: error
deploy:
name: Publish validated snapshot to gh-pages
runs-on: ubuntu-latest
needs: build
permissions:
contents: write
environment:
name: docs-production
url: https://docs.hagicode.com
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Download validated gh-pages payload
uses: actions/download-artifact@v4
with:
name: docs-gh-pages-payload
path: .deploy/gh-pages
- name: Publish validated gh-pages payload
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_branch: gh-pages
publish_dir: ./.deploy/gh-pages
force_orphan: true
enable_jekyll: false
- name: Summarize deployment output
run: |
echo "Published the validated gh-pages payload with ./esa.jsonc and ./dist/." >> "$GITHUB_STEP_SUMMARY"
echo "EAS should read gh-pages/esa.jsonc and serve ./dist as the published assets directory." >> "$GITHUB_STEP_SUMMARY"
echo "GitHub environment: docs-production" >> "$GITHUB_STEP_SUMMARY"
echo "Expected public URL: https://docs.hagicode.com" >> "$GITHUB_STEP_SUMMARY"