diff --git a/.github/workflows/qe-perf.yml b/.github/workflows/qe-perf.yml new file mode 100644 index 00000000000..947e25d1a95 --- /dev/null +++ b/.github/workflows/qe-perf.yml @@ -0,0 +1,88 @@ +name: Report qe benchmarks +on: + pull_request: + paths-ignore: + - ".github/**" + - "!.github/workflows/wasm-perf.yml" + - ".buildkite/**" + - "*.md" + - "LICENSE" + - "CODEOWNERS" + - "renovate.json" + +jobs: + run-benchmarks: + name: Run benchmarks + runs-on: ubuntu-latest + outputs: + results: ${{ steps.bench.outputs.results }} + steps: + - name: Checkout PR branch + uses: actions/checkout@v4 + + - name: "Setup Node.js" + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node_version }} + + - name: "Setup pnpm" + uses: pnpm/action-setup@v2 + with: + version: 8 + + - name: "Get pnpm store directory" + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + + - name: "Login to Docker Hub" + uses: docker/login-action@v3 + continue-on-error: true + env: + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} + DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} + if: "${{ env.DOCKERHUB_USERNAME != '' && env.DOCKERHUB_TOKEN != '' }}" + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - uses: dtolnay/rust-toolchain@stable + + - name: Install wasm-pack + run: cargo install wasm-pack + + - name: Setup benchmark + run: make setup-pg-bench + + - name: Run benchmarks + id: bench + run: | + echo "results=$(make run-bench)\n" >> $GITHUB_OUTPUT + + report: + name: Report benchmarks + runs-on: ubuntu-latest + needs: + - run-benchmarks + + steps: + - name: Find past report comment + uses: peter-evans/find-comment@v2 + id: findReportComment + with: + issue-number: ${{ github.event.pull_request.number }} + body-includes: "" + + - name: Create or update report + uses: peter-evans/create-or-update-comment@v3 + with: + comment-id: ${{ steps.findReportComment.outputs.comment-id }} + issue-number: ${{ github.event.pull_request.number }} + body: | + + ### Query engine benchmark results + + ```sh + ${{ needs.run-benchmarks.outputs.results}} + ``` + edit-mode: replace diff --git a/Makefile b/Makefile index ed9f975a7a2..7893c849760 100644 --- a/Makefile +++ b/Makefile @@ -148,10 +148,12 @@ test-driver-adapter-pg-wasm: test-pg-wasm start-pg-bench: docker compose -f query-engine/driver-adapters/executor/bench/docker-compose.yml up --wait -d --remove-orphans postgres +setup-pg-bench: start-pg-bench build-qe-napi build-qe-wasm build-driver-adapters-kit + run-bench: query-engine/driver-adapters/executor/script/bench.sh -bench-pg-js: start-pg-bench build-qe-napi build-qe-wasm build-driver-adapters-kit run-bench +bench-pg-js: setup-pg-bench run-bench start-neon-js: docker compose -f docker-compose.yml up --wait -d --remove-orphans neon-proxy