Arroy assert panics in v1.10.1 #2978
This file contains 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: 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: | |
- 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 | |
- uses: dtolnay/[email protected] | |
with: | |
profile: minimal | |
- 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@v3 | |
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 crates/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) | |
export bench_name=$(echo ${{ steps.command.outputs.command-arguments }}) | |
echo "Here are your $bench_name 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 |