name: "Website" on: push: branches: - master paths: - website/** pull_request: paths: - website/** workflow_dispatch: {} env: CARGO_TERM_COLOR: always INDEX_HTML_HEAD_INCLUSION: jobs: build: runs-on: ubuntu-latest permissions: contents: read deployments: write pull-requests: write steps: - name: 📥 Clone and checkout repository uses: actions/checkout@v3 # We can remove this step once `ubuntu-latest` has Node.js 22 or newer for its native TypeScript support. See: # https://github.com/actions/runner-images?tab=readme-ov-file#available-images # https://nodejs.org/en/learn/typescript/run-natively - name: 📦 Install the latest Node.js uses: actions/setup-node@v4 with: node-version: "latest" - 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 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 the project root run: | mv artifacts/* . - name: 🔧 Build auto-generated code docs artifacts into HTML run: | cd website npm run generate-editor-structure - name: 🌐 Build Graphite website with Zola env: MODE: prod run: | cd website npm ci npm run lint zola --config config.toml build --minify - 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