Benchmarking #1603
Workflow file for this run
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: Benchmarking | |
on: | |
# uncomment to run on push for debugging your PR | |
# push: | |
# branches: [ your branch ] | |
schedule: | |
# * is a special character in YAML so you have to quote this string | |
# ┌───────────── minute (0 - 59) | |
# │ ┌───────────── hour (0 - 23) | |
# │ │ ┌───────────── day of the month (1 - 31) | |
# │ │ │ ┌───────────── month (1 - 12 or JAN-DEC) | |
# │ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT) | |
- cron: '0 3 * * *' # run once a day, timezone is utc | |
workflow_dispatch: # adds ability to run this manually | |
inputs: | |
region_id: | |
description: 'Project region id. If not set, the default region will be used' | |
required: false | |
default: 'aws-us-east-2' | |
save_perf_report: | |
type: boolean | |
description: 'Publish perf report. If not set, the report will be published only for the main branch' | |
required: false | |
collect_olap_explain: | |
type: boolean | |
description: 'Collect EXPLAIN ANALYZE for OLAP queries. If not set, EXPLAIN ANALYZE will not be collected' | |
required: false | |
default: false | |
collect_pg_stat_statements: | |
type: boolean | |
description: 'Collect pg_stat_statements for OLAP queries. If not set, pg_stat_statements will not be collected' | |
required: false | |
default: false | |
run_AWS_RDS_AND_AURORA: | |
type: boolean | |
description: 'AWS-RDS and AWS-AURORA normally only run on Saturday. Set this to true to run them on every workflow_dispatch' | |
required: false | |
default: false | |
run_only_pgvector_tests: | |
type: boolean | |
description: 'Run pgvector tests but no other tests. If not set, all tests including pgvector tests will be run' | |
required: false | |
default: false | |
defaults: | |
run: | |
shell: bash -euxo pipefail {0} | |
concurrency: | |
# Allow only one workflow per any non-`main` branch. | |
group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.ref_name == 'main' && github.sha || 'anysha' }} | |
cancel-in-progress: true | |
jobs: | |
replication-tests: | |
if: ${{ github.event.inputs.run_only_pgvector_tests == 'false' || github.event.inputs.run_only_pgvector_tests == null }} | |
env: | |
POSTGRES_DISTRIB_DIR: /tmp/neon/pg_install | |
DEFAULT_PG_VERSION: 16 | |
TEST_OUTPUT: /tmp/test_output | |
BUILD_TYPE: remote | |
SAVE_PERF_REPORT: ${{ github.event.inputs.save_perf_report || ( github.ref_name == 'main' ) }} | |
PLATFORM: "neon-staging" | |
runs-on: [ self-hosted, us-east-2, x64 ] | |
container: | |
image: 369495373322.dkr.ecr.eu-central-1.amazonaws.com/build-tools:pinned | |
options: --init | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download Neon artifact | |
uses: ./.github/actions/download | |
with: | |
name: neon-${{ runner.os }}-${{ runner.arch }}-release-artifact | |
path: /tmp/neon/ | |
prefix: latest | |
- name: Run Logical Replication benchmarks | |
uses: ./.github/actions/run-python-test-set | |
with: | |
build_type: ${{ env.BUILD_TYPE }} | |
test_selection: performance/test_logical_replication.py | |
run_in_parallel: false | |
save_perf_report: ${{ env.SAVE_PERF_REPORT }} | |
extra_params: -m remote_cluster --timeout 5400 | |
pg_version: ${{ env.DEFAULT_PG_VERSION }} | |
env: | |
VIP_VAP_ACCESS_TOKEN: "${{ secrets.VIP_VAP_ACCESS_TOKEN }}" | |
PERF_TEST_RESULT_CONNSTR: "${{ secrets.PERF_TEST_RESULT_CONNSTR }}" | |
NEON_API_KEY: ${{ secrets.NEON_STAGING_API_KEY }} | |
BENCHMARK_PROJECT_ID_PUB: ${{ vars.BENCHMARK_PROJECT_ID_PUB }} | |
BENCHMARK_PROJECT_ID_SUB: ${{ vars.BENCHMARK_PROJECT_ID_SUB }} | |
- name: Run Physical Replication benchmarks | |
uses: ./.github/actions/run-python-test-set | |
with: | |
build_type: ${{ env.BUILD_TYPE }} | |
test_selection: performance/test_physical_replication.py | |
run_in_parallel: false | |
save_perf_report: ${{ env.SAVE_PERF_REPORT }} | |
extra_params: -m remote_cluster --timeout 5400 | |
pg_version: ${{ env.DEFAULT_PG_VERSION }} | |
env: | |
VIP_VAP_ACCESS_TOKEN: "${{ secrets.VIP_VAP_ACCESS_TOKEN }}" | |
PERF_TEST_RESULT_CONNSTR: "${{ secrets.PERF_TEST_RESULT_CONNSTR }}" | |
NEON_API_KEY: ${{ secrets.NEON_STAGING_API_KEY }} | |
- name: Create Allure report | |
if: ${{ !cancelled() }} | |
uses: ./.github/actions/allure-report-generate | |
- name: Post to a Slack channel | |
if: ${{ github.event.schedule && failure() }} | |
uses: slackapi/slack-github-action@v1 | |
with: | |
channel-id: "C033QLM5P7D" # dev-staging-stream | |
slack-message: "Periodic replication testing: ${{ job.status }}\n${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
env: | |
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} |