Website #545
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: "Website" | |
| on: | |
| push: | |
| branches: | |
| - master | |
| paths: | |
| - website/** | |
| pull_request: | |
| paths: | |
| - website/** | |
| workflow_dispatch: {} | |
| env: | |
| CARGO_TERM_COLOR: always | |
| INDEX_HTML_HEAD_INCLUSION: <script defer data-domain="graphite.rs" data-api="/visit/event" src="/visit/script.hash.js"></script> | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| deployments: write | |
| pull-requests: write | |
| steps: | |
| - name: 📥 Clone and checkout repository | |
| uses: actions/checkout@v3 | |
| - name: 🕸 Install Zola | |
| uses: taiki-e/install-action@v2 | |
| with: | |
| tool: zola@0.20.0 | |
| - name: 🔍 Check if `website/other` directory changed | |
| uses: dorny/paths-filter@v3 | |
| id: changes | |
| with: | |
| filters: | | |
| website-other: | |
| - "website/other/**" | |
| - name: ✂ Replace template in <head> of index.html | |
| run: | | |
| # Remove the INDEX_HTML_HEAD_INCLUSION environment variable for build links (not master deploys) | |
| git rev-parse --abbrev-ref HEAD | grep master > /dev/null || export INDEX_HTML_HEAD_INCLUSION="" | |
| - name: 💿 Obtain cache of auto-generated code docs artifacts | |
| id: cache-website-code-docs | |
| uses: actions/cache/restore@v3 | |
| with: | |
| path: artifacts | |
| key: website-code-docs | |
| - name: 📁 Fallback in case auto-generated code docs artifacts weren't cached | |
| if: steps.cache-website-code-docs.outputs.cache-hit != 'true' | |
| run: | | |
| echo "🦀 Initial system version of Rust:" | |
| rustc --version | |
| rustup update stable | |
| echo "🦀 Latest updated version of Rust:" | |
| rustc --version | |
| cargo test --package graphite-editor --lib -- messages::message::test::generate_message_tree | |
| mkdir artifacts | |
| mv hierarchical_message_system_tree.txt artifacts/hierarchical_message_system_tree.txt | |
| - name: 🚚 Move `artifacts` contents to `website/other/editor-structure` | |
| run: | | |
| mv artifacts/* website/other/editor-structure | |
| - name: 🔧 Build auto-generated code docs artifacts into HTML | |
| run: | | |
| cd website/other/editor-structure | |
| node generate.js hierarchical_message_system_tree.txt replacement.html | |
| - name: 🌐 Build Graphite website with Zola | |
| env: | |
| MODE: prod | |
| run: | | |
| cd website | |
| npm run install-fonts | |
| zola --config config.toml build --minify | |
| - name: 💿 Restore cache of `website/other/dist` directory, if available and `website/other` didn't change | |
| if: steps.changes.outputs.website-other != 'true' | |
| id: cache-website-other-dist | |
| uses: actions/cache/restore@v3 | |
| with: | |
| path: website/other/dist | |
| key: website-other-dist-${{ runner.os }} | |
| - name: 🟢 Set up Node only if we are going to build in the next step | |
| if: steps.cache-website-other-dist.outputs.cache-hit != 'true' | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: "latest" | |
| - name: 📁 Build `website/other` directory only if changed or not cached | |
| if: steps.cache-website-other-dist.outputs.cache-hit != 'true' | |
| id: build-website-other | |
| run: | | |
| sh website/other/build.sh | |
| - name: 💾 Save cache of `website/other/dist` directory if it was built above | |
| if: steps.cache-website-other-dist.outputs.cache-hit != 'true' | |
| uses: actions/cache/save@v3 | |
| with: | |
| path: website/other/dist | |
| key: ${{ steps.cache-website-other-dist.outputs.cache-primary-key }} | |
| - name: 🚚 Move `website/other/dist` contents to `website/public` | |
| run: | | |
| mkdir -p website/public | |
| mv website/other/dist/* website/public | |
| - name: 📤 Publish to Cloudflare Pages | |
| id: cloudflare | |
| uses: cloudflare/pages-action@1 | |
| continue-on-error: true | |
| with: | |
| apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} | |
| accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} | |
| gitHubToken: ${{ secrets.GITHUB_TOKEN }} | |
| projectName: graphite-website | |
| directory: website/public |