Skip to content

site: weekly update #292

site: weekly update

site: weekly update #292

Workflow file for this run

name: "docs"
on:
pull_request:
paths:
- "**/*.d2"
- "site/**"
- "ui/**"
push:
branches:
- main
paths:
- "**/*.d2"
- "site/**"
- "ui/**"
workflow_dispatch: # Allow manual triggering for formal spec updates
permissions:
contents: write
pages: write
actions: read
# Prevent redundant workflow runs
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
docs-generate-d2-diagrams:
name: "Generate D2 Diagrams"
if: github.event_name == 'pull_request' || github.event_name == 'push'
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: 📥 Checkout repository
uses: actions/checkout@v4
with:
ref: ${{ github.head_ref || github.ref_name }}
fetch-depth: 2 # Needed to get previous commit for comparison
- name: Cache D2
uses: actions/cache@v4
with:
path: ~/.d2
key: ${{ runner.os }}-d2-${{ hashFiles('**/install.sh') }}
restore-keys: |
${{ runner.os }}-d2-
- name: Install D2
run: |
if ! command -v d2 &> /dev/null; then
curl -fsSL https://d2lang.com/install.sh | sh -s --
fi
d2 --version
- name: Generate PNG files for changed D2 files
run: |
# Get list of changed .d2 files
CHANGED_FILES=$(git diff --name-only HEAD^ HEAD | grep '\.d2$' || true)
if [ -z "$CHANGED_FILES" ]; then
echo "No .d2 files were changed"
exit 0
fi
echo "Changed .d2 files:"
echo "$CHANGED_FILES"
# Process each changed file
echo "$CHANGED_FILES" | while read -r file; do
if [ -f "$file" ]; then
output_file="${file%.d2}.png"
echo "Converting $file to $output_file"
d2 "$file" "$output_file"
else
echo "File $file does not exist, skipping"
fi
done
- name: Check for changes
id: changes
run: |
git add *.png
if git diff --staged --quiet; then
echo "No changes to commit"
echo "has_changes=false" >> $GITHUB_OUTPUT
else
echo "Changes detected"
echo "has_changes=true" >> $GITHUB_OUTPUT
fi
- name: Commit and push changes
if: steps.changes.outputs.has_changes == 'true'
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
git commit -m "Auto-generate diagram PNGs [skip ci]"
git push origin HEAD:${{ github.head_ref || github.ref_name }}
viz-build:
name: "Build Visualizer"
if: github.event_name == 'pull_request' || github.event_name == 'push' || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
steps:
- name: 📥 Checkout repository
uses: actions/checkout@v4
with:
lfs: true
fetch-depth: 2
- name: 🛠️ Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22
cache: "yarn"
cache-dependency-path: ./ui/yarn.lock
- name: 📦 Install dependencies
working-directory: ui
run: yarn install
- name: 🏗️ Build visualizer
working-directory: ui
run: |
yarn build
- name: 🚢 Upload visualizer static site
id: upload_viz
uses: actions/upload-artifact@v4
with:
name: visualizer
path: ui/dist
build-docusaurus-site:
name: "Build Docusaurus Site"
if: github.event_name == 'pull_request' || github.event_name == 'push' || github.event_name == 'workflow_dispatch'
needs: [viz-build]
runs-on: ubuntu-latest
steps:
- name: 📥 Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: 🛠️ Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22
cache: "npm"
cache-dependency-path: ./site/package-lock.json
- name: 📦 Install dependencies
working-directory: site
run: npm ci
- name: 👁️ Unpack visualizer
uses: actions/download-artifact@v4
with:
name: visualizer
path: site/static/visualizer
- name: 🏗️ Build Docusaurus site
working-directory: site
run: |
npm run build
- name: Verify Docusaurus build
working-directory: site
run: |
if [ -z "$(ls -A build/)" ]; then
echo "Error: Docusaurus build directory is empty"
exit 1
fi
ls -la build/
- name: 🚀 Upload Docusaurus build
uses: actions/upload-artifact@v4
with:
name: docusaurus-build
if-no-files-found: error
path: |
site/build/*
docs-publish:
name: "Publish Docs"
if: (github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'workflow_dispatch'
needs: [build-docusaurus-site]
runs-on: ubuntu-latest
steps:
- name: 📥 Download Docusaurus build
uses: actions/download-artifact@v4
with:
name: docusaurus-build
path: ./github-pages
- name: 🚀 Publish GitHub Pages
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN || github.token }}
publish_dir: ./github-pages
cname: leios.cardano-scaling.org