name: Bench (PR) on: issue_comment: types: [created] permissions: issues: write env: GH_TOKEN: ${{ secrets.MEILI_BOT_GH_PAT }} jobs: run-benchmarks-on-comment: if: startsWith(github.event.comment.body, '/bench') name: Run and upload benchmarks runs-on: benchmarks timeout-minutes: 180 # 3h steps: - name: Check permissions id: permission env: PR_AUTHOR: ${{github.event.issue.user.login }} COMMENT_AUTHOR: ${{github.event.comment.user.login }} REPOSITORY: ${{github.repository}} PR_ID: ${{github.event.issue.number}} run: | PR_REPOSITORY=$(gh api /repos/"$REPOSITORY"/pulls/"$PR_ID" --jq .head.repo.full_name) if $(gh api /repos/"$REPOSITORY"/collaborators/"$PR_AUTHOR"/permission --jq .user.permissions.push) then echo "::notice title=Authentication success::PR author authenticated" else echo "::error title=Authentication error::PR author doesn't have push permission on this repository" exit 1 fi if $(gh api /repos/"$REPOSITORY"/collaborators/"$COMMENT_AUTHOR"/permission --jq .user.permissions.push) then echo "::notice title=Authentication success::Comment author authenticated" else echo "::error title=Authentication error::Comment author doesn't have push permission on this repository" exit 1 fi if [ "$PR_REPOSITORY" = "$REPOSITORY" ] then echo "::notice title=Authentication success::PR started from main repository" else echo "::error title=Authentication error::PR started from a fork" exit 1 fi - name: Check for Command id: command uses: xt0rted/slash-command-action@v2 with: command: bench reaction-type: "rocket" 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 }} - uses: dtolnay/rust-toolchain@v1.70 with: profile: minimal - name: Run benchmarks on PR ${{ github.event.issue.id }} run: | cargo xtask bench --api-key "${{ secrets.BENCHMARK_API_KEY }}" \ --dashboard-url "${{ vars.BENCHMARK_DASHBOARD_URL }}" \ --reason "[Comment](${{ github.event.comment.html_url }}) on [#${{ github.event.issue.number }}](${{ github.event.issue.html_url }})" \ -- ${{ steps.command.outputs.command-arguments }} > benchlinks.txt - name: Send comment in PR run: | gh pr comment ${{github.event.issue.number}} --body-file benchlinks.txt