site: weekly update #292
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" | |
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 |