name: Deploy preview for PR on: pull_request: jobs: add_label: runs-on: ubuntu-latest outputs: has_label: ${{ steps.check-labels.outputs.result }} steps: - name: Check if label is present id: check-labels uses: actions/github-script@v7.0.1 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | const labels = context.payload.pull_request.labels.map(label => label.name); if (labels.includes('documentation')) { return true; } // Fetch the list of files changed in the PR const { data: files } = await github.rest.pulls.listFiles({ owner: context.repo.owner, repo: context.repo.repo, pull_number: context.issue.number, per_page: 100 }); // Check if any file is within the 'docs' folder const docsChanged = files.some(file => file.filename.startsWith('docs/')); return docsChanged; - name: Add label if not present if: steps.check-labels.outputs.result == 'true' uses: actions/github-script@v7.0.1 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | const labels = context.payload.pull_request.labels.map(label => label.name); if (!labels.includes('documentation')) { github.rest.issues.addLabels({ owner: context.repo.owner, repo: context.repo.repo, issue_number: context.issue.number, labels: ['documentation'] }) } build_preview: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup toolchain uses: dtolnay/rust-toolchain@1.73.0 - uses: Swatinem/rust-cache@v2 with: key: x86_64-unknown-linux-gnu cache-on-failure: false save-if: false - name: Install Yarn dependencies uses: ./.github/actions/setup - name: Install wasm-bindgen-cli uses: taiki-e/install-action@v2 with: tool: wasm-bindgen-cli@0.2.86 - name: Install wasm-opt run: | npm i wasm-opt -g - name: Build docs run: yarn workspaces foreach -Rpt --from docs run build - name: Upload artifact uses: actions/upload-artifact@v4 with: name: docs path: ./docs/build/ retention-days: 3 deploy_preview: needs: [build_preview, add_label] runs-on: ubuntu-latest permissions: pull-requests: write if: needs.add_label.outputs.has_label == 'true' steps: - name: Checkout code uses: actions/checkout@v4 - name: Download built docs uses: actions/download-artifact@v4 with: name: docs path: ./docs/build - name: Deploy to Netlify uses: nwtgck/actions-netlify@v2.1 with: publish-dir: './docs/build' github-token: ${{ secrets.GITHUB_TOKEN }} enable-github-deployment: false deploy-message: "Deploy from GitHub Actions for PR ${{ github.event.number }}" env: NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} timeout-minutes: 1 add_comment: needs: [deploy_preview] runs-on: ubuntu-latest permissions: pull-requests: write steps: - name: Tag dev rel in comment uses: marocchino/sticky-pull-request-comment@v2 with: message: | FYI @noir-lang/developerrelations on Noir doc changes. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}