- Guard deploy-docs job to only run in canonical repository - Guard goreleaser job to only run in canonical repository - Guard update-homebrew job to only run in canonical repository - Guard test-pypi job to only run in canonical repository Prevents fork workflows from attempting to deploy, release, or publish to external services.
97 lines
2.3 KiB
YAML
97 lines
2.3 KiB
YAML
name: Deploy Documentation
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
paths:
|
|
- 'website/**'
|
|
- 'scripts/generate-llms-full.sh'
|
|
workflow_dispatch:
|
|
|
|
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
|
|
permissions:
|
|
contents: read
|
|
pages: write
|
|
id-token: write
|
|
|
|
# Allow only one concurrent deployment
|
|
concurrency:
|
|
group: "pages"
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
cache: 'npm'
|
|
cache-dependency-path: website/package-lock.json
|
|
|
|
- name: Install dependencies
|
|
working-directory: website
|
|
run: npm ci
|
|
|
|
- name: Generate llms-full.txt
|
|
run: ./scripts/generate-llms-full.sh
|
|
|
|
- name: Build website
|
|
working-directory: website
|
|
run: npm run build
|
|
|
|
- name: Check internal links
|
|
uses: lycheeverse/lychee-action@v2
|
|
with:
|
|
args: |
|
|
--verbose
|
|
--no-progress
|
|
--offline
|
|
--include-fragments
|
|
--timeout 30
|
|
--exclude-path 'website/build/search/**'
|
|
website/build
|
|
fail: true
|
|
|
|
- name: Check external links (non-blocking)
|
|
uses: lycheeverse/lychee-action@v2
|
|
continue-on-error: true
|
|
with:
|
|
cache: true
|
|
args: |
|
|
--verbose
|
|
--no-progress
|
|
--timeout 30
|
|
--scheme https
|
|
--scheme http
|
|
--exclude 'localhost'
|
|
--exclude '127.0.0.1'
|
|
--exclude 'tree/main'
|
|
--exclude 'example.com'
|
|
--exclude 'mailto:'
|
|
--exclude-path 'website/build/search/**'
|
|
website/build
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-pages-artifact@v3
|
|
with:
|
|
path: website/build
|
|
|
|
deploy:
|
|
# Guard: deploy should only run in the canonical repository (not in forks)
|
|
if: ${{ github.repository == 'steveyegge/beads' }}
|
|
environment:
|
|
name: github-pages
|
|
url: ${{ steps.deployment.outputs.page_url }}
|
|
runs-on: ubuntu-latest
|
|
needs: build
|
|
steps:
|
|
- name: Deploy to GitHub Pages
|
|
id: deployment
|
|
uses: actions/deploy-pages@v4
|