ci: add Azure Static Web Apps workflow file #5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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" |