site: update for redeploy #235
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_run: | |
| workflows: ["Formal Spec Listener"] | |
| types: | |
| - completed | |
| branches: | |
| - main | |
| workflow_dispatch: # Allow manual triggering or via API | |
| inputs: | |
| source: | |
| description: "Source of the workflow dispatch" | |
| required: false | |
| default: "manual" | |
| 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' | |
| 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" | |
| runs-on: ubuntu-latest | |
| needs: [viz-build] | |
| 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: "yarn" | |
| cache-dependency-path: ./site/yarn.lock | |
| - name: 📦 Install dependencies | |
| working-directory: site | |
| run: yarn install | |
| - name: 👁️ Unpack visualizer | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: visualizer | |
| path: site/static/visualizer | |
| # Only for workflow_run: Download formal spec HTML | |
| - name: 📥 Download formal spec HTML | |
| if: github.event_name == 'workflow_run' | |
| uses: actions/download-artifact@v4 | |
| continue-on-error: true | |
| with: | |
| name: formal-spec-html | |
| path: formal-spec-html | |
| # Only for workflow_run: Update formal spec | |
| - name: 📝 Update formal spec | |
| if: github.event_name == 'workflow_run' | |
| run: | | |
| mkdir -p site/static/formal-spec | |
| if [ -d "formal-spec-html" ] && [ -n "$(ls -A formal-spec-html/ 2>/dev/null)" ]; then | |
| cp -r formal-spec-html/* site/static/formal-spec/ | |
| fi | |
| # Only for workflow_run: Enhance Agda documentation | |
| - name: 🔄 Enhance Agda documentation | |
| if: github.event_name == 'workflow_run' | |
| working-directory: site | |
| timeout-minutes: 25 | |
| run: | | |
| HTML_COUNT=$(find ./static/formal-spec -name '*.html' | wc -l) | |
| if [ "$HTML_COUNT" -gt "0" ]; then | |
| NODE_OPTIONS="--max-old-space-size=6144" npx agda-web-docs-lib process ./static/formal-spec ./agda-docs.config.json | |
| fi | |
| - name: 🏗️ Build Docusaurus site | |
| working-directory: site | |
| run: | | |
| yarn 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" | |
| runs-on: ubuntu-latest | |
| needs: [build-docusaurus-site] | |
| if: github.ref == 'refs/heads/main' || github.event_name == 'workflow_run' | |
| 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 |