mirror of
				https://github.com/meilisearch/meilisearch.git
				synced 2025-11-04 01:46:28 +00:00 
			
		
		
		
	Rename benchmark CI file to find it easily in the manifest list
This commit is contained in:
		
							
								
								
									
										97
									
								
								.github/workflows/benchmarks-pr.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								.github/workflows/benchmarks-pr.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,97 @@
 | 
			
		||||
name: Benchmarks (PR)
 | 
			
		||||
on: issue_comment
 | 
			
		||||
permissions:
 | 
			
		||||
  issues: write
 | 
			
		||||
 | 
			
		||||
env:
 | 
			
		||||
  GH_TOKEN: ${{ secrets.MEILI_BOT_GH_PAT }}
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  run-benchmarks-on-comment:
 | 
			
		||||
    if: startsWith(github.event.comment.body, '/benchmark')
 | 
			
		||||
    name: Run and upload benchmarks
 | 
			
		||||
    runs-on: benchmarks
 | 
			
		||||
    timeout-minutes: 4320 # 72h
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions-rs/toolchain@v1
 | 
			
		||||
        with:
 | 
			
		||||
          profile: minimal
 | 
			
		||||
          toolchain: stable
 | 
			
		||||
          override: true
 | 
			
		||||
 | 
			
		||||
      - name: Check for Command
 | 
			
		||||
        id: command
 | 
			
		||||
        uses: xt0rted/slash-command-action@v2
 | 
			
		||||
        with:
 | 
			
		||||
          command: benchmark
 | 
			
		||||
          reaction-type: "eyes"
 | 
			
		||||
          repo-token: ${{ env.GH_TOKEN }}
 | 
			
		||||
 | 
			
		||||
      - uses: xt0rted/pull-request-comment-branch@v2
 | 
			
		||||
        id: comment-branch
 | 
			
		||||
        with:
 | 
			
		||||
          repo_token: ${{ env.GH_TOKEN }}
 | 
			
		||||
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
        if: success()
 | 
			
		||||
        with:
 | 
			
		||||
          fetch-depth: 0 # fetch full history to be able to get main commit sha
 | 
			
		||||
          ref: ${{ steps.comment-branch.outputs.head_ref }}
 | 
			
		||||
 | 
			
		||||
      # Set variables
 | 
			
		||||
      - name: Set current branch name
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: echo "name=$(git rev-parse --abbrev-ref HEAD)" >> $GITHUB_OUTPUT
 | 
			
		||||
        id: current_branch
 | 
			
		||||
      - name: Set normalized current branch name # Replace `/` by `_` in branch name to avoid issues when pushing to S3
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: echo "name=$(git rev-parse --abbrev-ref HEAD | tr '/' '_')" >> $GITHUB_OUTPUT
 | 
			
		||||
        id: normalized_current_branch
 | 
			
		||||
      - name: Set shorter commit SHA
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: echo "short=$(echo $GITHUB_SHA | cut -c1-8)" >> $GITHUB_OUTPUT
 | 
			
		||||
        id: commit_sha
 | 
			
		||||
      - name: Set file basename with format "dataset_branch_commitSHA"
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: echo "basename=$(echo ${{ steps.command.outputs.command-arguments }}_${{ steps.normalized_current_branch.outputs.name }}_${{ steps.commit_sha.outputs.short }})" >> $GITHUB_OUTPUT
 | 
			
		||||
        id: file
 | 
			
		||||
 | 
			
		||||
      # Run benchmarks
 | 
			
		||||
      - name: Run benchmarks - Dataset ${{ steps.command.outputs.command-arguments }} - Branch ${{ steps.current_branch.outputs.name }} - Commit ${{ steps.commit_sha.outputs.short }}
 | 
			
		||||
        run: |
 | 
			
		||||
          cd benchmarks
 | 
			
		||||
          cargo bench --bench ${{ steps.command.outputs.command-arguments }} -- --save-baseline ${{ steps.file.outputs.basename }}
 | 
			
		||||
 | 
			
		||||
      # Generate critcmp files
 | 
			
		||||
      - name: Install critcmp
 | 
			
		||||
        uses: taiki-e/install-action@v2
 | 
			
		||||
        with:
 | 
			
		||||
          tool: critcmp
 | 
			
		||||
      - name: Export cripcmp file
 | 
			
		||||
        run: |
 | 
			
		||||
          critcmp --export ${{ steps.file.outputs.basename }} > ${{ steps.file.outputs.basename }}.json
 | 
			
		||||
 | 
			
		||||
      # Upload benchmarks
 | 
			
		||||
      - name: Upload ${{ steps.file.outputs.basename }}.json to DO Spaces # DigitalOcean Spaces = S3
 | 
			
		||||
        uses: BetaHuhn/do-spaces-action@v2
 | 
			
		||||
        with:
 | 
			
		||||
          access_key: ${{ secrets.DO_SPACES_ACCESS_KEY }}
 | 
			
		||||
          secret_key: ${{ secrets.DO_SPACES_SECRET_KEY }}
 | 
			
		||||
          space_name: ${{ secrets.DO_SPACES_SPACE_NAME }}
 | 
			
		||||
          space_region: ${{ secrets.DO_SPACES_SPACE_REGION }}
 | 
			
		||||
          source: ${{ steps.file.outputs.basename }}.json
 | 
			
		||||
          out_dir: critcmp_results
 | 
			
		||||
 | 
			
		||||
      # Compute the diff of the benchmarks and send a message on the GitHub PR
 | 
			
		||||
      - name: Compute and send a message in the PR
 | 
			
		||||
        env:
 | 
			
		||||
          GITHUB_TOKEN: ${{ secrets.MEILI_BOT_GH_PAT }}
 | 
			
		||||
        run: |
 | 
			
		||||
          set -x
 | 
			
		||||
          export base_ref=$(git merge-base origin/main ${{ steps.comment-branch.outputs.head_ref }} | head -c8)
 | 
			
		||||
          export base_filename=$(echo ${{ steps.command.outputs.command-arguments }}_main_${base_ref}.json)
 | 
			
		||||
          echo 'Here are your benchmarks diff 👊' >> body.txt
 | 
			
		||||
          echo '```' >> body.txt
 | 
			
		||||
          ./benchmarks/scripts/compare.sh $base_filename ${{ steps.file.outputs.basename }}.json >> body.txt
 | 
			
		||||
          echo '```' >> body.txt
 | 
			
		||||
          gh pr comment ${{ steps.current_branch.outputs.name }} --body-file body.txt
 | 
			
		||||
		Reference in New Issue
	
	Block a user