Benchmark #31
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: Benchmark | |
| on: | |
| workflow_run: | |
| workflows: ["Publish"] | |
| types: [completed] | |
| workflow_dispatch: | |
| permissions: {} | |
| jobs: | |
| build-benchmark: | |
| runs-on: ubuntu-latest | |
| if: >- | |
| github.event_name == 'workflow_dispatch' || | |
| github.event.workflow_run.conclusion == 'success' | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| ref: main | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22" | |
| - run: npm install | |
| - name: Run build benchmark | |
| run: node scripts/benchmark.js 2>/dev/null > benchmark-result.json | |
| - name: Update build report | |
| run: node scripts/update-benchmark-report.js benchmark-result.json | |
| - name: Upload build result | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: build-benchmark-result | |
| path: benchmark-result.json | |
| - name: Check for changes | |
| id: changes | |
| run: | | |
| if git diff --quiet HEAD -- generated/BUILD-BENCHMARKS.md README.md; then | |
| echo "changed=false" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "changed=true" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Commit and push via PR | |
| if: steps.changes.outputs.changed == 'true' | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| BRANCH="benchmark/build-$(date +%Y%m%d-%H%M%S)" | |
| git checkout -b "$BRANCH" | |
| git add generated/BUILD-BENCHMARKS.md README.md | |
| git commit -m "docs: update build performance benchmarks" | |
| git push origin "$BRANCH" | |
| gh pr create \ | |
| --base main \ | |
| --head "$BRANCH" \ | |
| --title "docs: update build performance benchmarks" \ | |
| --body "Automated build benchmark update from workflow run [#${{ github.run_number }}](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})." | |
| embedding-benchmark: | |
| runs-on: ubuntu-latest | |
| if: >- | |
| github.event_name == 'workflow_dispatch' || | |
| github.event.workflow_run.conclusion == 'success' | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| ref: main | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22" | |
| - run: npm install | |
| - name: Cache HuggingFace models | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.cache/huggingface | |
| key: hf-models-${{ runner.os }}-${{ hashFiles('src/embedder.js') }} | |
| restore-keys: hf-models-${{ runner.os }}- | |
| - name: Build graph | |
| run: node src/cli.js build . | |
| - name: Run embedding benchmark | |
| env: | |
| HF_TOKEN: ${{ secrets.HF_TOKEN }} | |
| run: node scripts/embedding-benchmark.js 2>/dev/null > embedding-benchmark-result.json | |
| - name: Update embedding report | |
| run: node scripts/update-embedding-report.js embedding-benchmark-result.json | |
| - name: Upload embedding result | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: embedding-benchmark-result | |
| path: embedding-benchmark-result.json | |
| - name: Check for changes | |
| id: changes | |
| run: | | |
| if git diff --quiet HEAD -- generated/EMBEDDING-BENCHMARKS.md; then | |
| echo "changed=false" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "changed=true" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Commit and push via PR | |
| if: steps.changes.outputs.changed == 'true' | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| BRANCH="benchmark/embedding-$(date +%Y%m%d-%H%M%S)" | |
| git checkout -b "$BRANCH" | |
| git add generated/EMBEDDING-BENCHMARKS.md | |
| git commit -m "docs: update embedding benchmarks" | |
| git push origin "$BRANCH" | |
| gh pr create \ | |
| --base main \ | |
| --head "$BRANCH" \ | |
| --title "docs: update embedding benchmarks" \ | |
| --body "Automated embedding benchmark update from workflow run [#${{ github.run_number }}](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})." | |
| query-benchmark: | |
| runs-on: ubuntu-latest | |
| if: >- | |
| github.event_name == 'workflow_dispatch' || | |
| github.event.workflow_run.conclusion == 'success' | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| ref: main | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22" | |
| - run: npm install | |
| - name: Run query benchmark | |
| run: node scripts/query-benchmark.js 2>/dev/null > query-benchmark-result.json | |
| - name: Update query report | |
| run: node scripts/update-query-report.js query-benchmark-result.json | |
| - name: Upload query result | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: query-benchmark-result | |
| path: query-benchmark-result.json | |
| - name: Check for changes | |
| id: changes | |
| run: | | |
| if git diff --quiet HEAD -- generated/QUERY-BENCHMARKS.md; then | |
| echo "changed=false" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "changed=true" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Commit and push via PR | |
| if: steps.changes.outputs.changed == 'true' | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| BRANCH="benchmark/query-$(date +%Y%m%d-%H%M%S)" | |
| git checkout -b "$BRANCH" | |
| git add generated/QUERY-BENCHMARKS.md | |
| git commit -m "docs: update query benchmarks" | |
| git push origin "$BRANCH" | |
| gh pr create \ | |
| --base main \ | |
| --head "$BRANCH" \ | |
| --title "docs: update query benchmarks" \ | |
| --body "Automated query benchmark update from workflow run [#${{ github.run_number }}](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})." | |
| incremental-benchmark: | |
| runs-on: ubuntu-latest | |
| if: >- | |
| github.event_name == 'workflow_dispatch' || | |
| github.event.workflow_run.conclusion == 'success' | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| ref: main | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22" | |
| - run: npm install | |
| - name: Run incremental benchmark | |
| run: node scripts/incremental-benchmark.js 2>/dev/null > incremental-benchmark-result.json | |
| - name: Update incremental report | |
| run: node scripts/update-incremental-report.js incremental-benchmark-result.json | |
| - name: Upload incremental result | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: incremental-benchmark-result | |
| path: incremental-benchmark-result.json | |
| - name: Check for changes | |
| id: changes | |
| run: | | |
| if git diff --quiet HEAD -- generated/INCREMENTAL-BENCHMARKS.md; then | |
| echo "changed=false" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "changed=true" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Commit and push via PR | |
| if: steps.changes.outputs.changed == 'true' | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| BRANCH="benchmark/incremental-$(date +%Y%m%d-%H%M%S)" | |
| git checkout -b "$BRANCH" | |
| git add generated/INCREMENTAL-BENCHMARKS.md | |
| git commit -m "docs: update incremental benchmarks" | |
| git push origin "$BRANCH" | |
| gh pr create \ | |
| --base main \ | |
| --head "$BRANCH" \ | |
| --title "docs: update incremental benchmarks" \ | |
| --body "Automated incremental benchmark update from workflow run [#${{ github.run_number }}](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})." |