Make update_by_field
only insert if it deleted a row.
#752
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
on: | |
push: | |
branches: | |
- jgilles/bottest3 | |
workflow_dispatch: | |
inputs: | |
pr_number: | |
description: 'Pull Request Number' | |
required: false | |
default: '' | |
issue_comment: | |
types: [created] | |
name: Automated bot test | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
GH_REPO: ${{ github.repository }} | |
jobs: | |
autobottest: | |
name: run bot test (30 bots) | |
runs-on: bots-runner | |
permissions: write-all | |
# filter for a comment containing 'benchmarks please' | |
if: ${{ github.event_name != 'issue_comment' || (github.event.issue.pull_request && contains(github.event.comment.body, 'bots please')) }} | |
env: | |
PR_NUMBER: ${{ github.event.inputs.pr_number || github.event.issue.number || null }} | |
steps: | |
- name: Check membership | |
if: ${{ github.event_name == 'issue_comment' }} | |
env: | |
CONTRIB_ORG: clockworklabs | |
COMMENT_AUTHOR: ${{ github.event.comment.user.login }} | |
ORG_READ_TOKEN: ${{ secrets.ORG_READ_TOKEN }} | |
run: | | |
curl -OL https://github.com/cli/cli/releases/download/v2.37.0/gh_2.37.0_linux_amd64.deb && sudo dpkg -i gh_2.37.0_linux_amd64.deb | |
if [[ $(GH_TOKEN=$ORG_READ_TOKEN gh api --paginate /orgs/{owner}/members --jq 'any(.login == env.COMMENT_AUTHOR)') != true ]]; then | |
gh pr comment $PR_NUMBER -b "Sorry, you don't have permission to run bot tests." | |
exit 1 | |
fi | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Post initial comment | |
run: | | |
if [[ $PR_NUMBER ]]; then | |
comment_parent=issues/$PR_NUMBER | |
comment_update=issues/comments | |
else | |
comment_parent=commits/$GITHUB_SHA | |
comment_update=comments | |
fi | |
comment_body="Bot test in progress..." | |
comment_id=$(gh api "/repos/{owner}/{repo}/$comment_parent/comments" -f body="$comment_body" --jq .id) | |
echo "COMMENT_UPDATE_URL=/repos/{owner}/{repo}/$comment_update/$comment_id" >>$GITHUB_ENV | |
- name: find PR branch | |
if: ${{ env.PR_NUMBER }} | |
run: echo "PR_REF=$(gh pr view $PR_NUMBER --json headRefName --jq .headRefName)" >>"$GITHUB_ENV" | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ env.PR_REF || github.ref }} | |
fetch-depth: 1 | |
- name: Install stable toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
components: clippy | |
toolchain: stable | |
target: wasm32-unknown-unknown | |
override: true | |
- name: Build the bots | |
run: | | |
git apply .github/workflows/bottest_tracing_fix.patch | |
cargo build --release --bin spacetime | |
- name: Run bot test script | |
run: | | |
echo "We're on a bots runner, so expecting to find the BitCraftBots repo set up in the expected location" | |
echo "Let's hope the bots runner is up to date!!!" | |
SPACETIME_BIN="$PWD/target/release/spacetime" | |
cd ~/BitCraftBots | |
# using 'exec' allows the process to receive graceful termination signals (note: actions is bad) | |
exec python3 -m scripts.bottest "$SPACETIME_BIN" | |
- name: Archive results | |
run: | | |
RESULTS_NAME="pr-$PR_NUMBER-$GITHUB_SHA" | |
mkdir -p bottest-results | |
cp ~/BitCraftBots/results.zip bottest-results/$RESULTS_NAME.zip | |
- name: Upload bot test results to DO spaces | |
uses: clockworklabs/s3-upload-action@master | |
with: | |
aws_key_id: ${{ secrets.AWS_KEY_ID }} | |
aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY}} | |
aws_bucket: "spacetimedb-private-bottest-results" | |
source_dir: bottest-results | |
endpoint: https://nyc3.digitaloceanspaces.com | |
destination_dir: bottests | |
- name: Post comment | |
run: | | |
RESULTS_NAME="pr-$PR_NUMBER-$GITHUB_SHA" | |
BODY="<details><summary>Bot test results</summary> | |
Test results are stored on DO Spaces [here](https://cloud.digitalocean.com/spaces/spacetimedb-private-bottest-results?path=bottests%2F). You'll need to log in | |
(we keep these secret). | |
The results of this test are named $RESULTS_NAME.zip. | |
</details>" | |
gh api "$COMMENT_UPDATE_URL" -X PATCH -f body="$BODY" | |
- name: Post failure comment | |
if: ${{ failure() && env.COMMENT_UPDATE_URL }} | |
run: | | |
BODY="Bot test failed. Please check [the workflow run](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) for details." | |
gh api "$COMMENT_UPDATE_URL" -X PATCH -f body="$BODY" | |
- name: Clean up | |
if: always() | |
run: | | |
rm -fr /stdb/* | |
rm -fr bottest-results/ | |
rm -fr crates/bench/bottest/ |