name: Cloud Regression Test on: 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: '45 1 * * *' # run once a day, timezone is utc workflow_dispatch: # adds ability to run this manually defaults: run: shell: bash -euxo pipefail {0} concurrency: # Allow only one workflow group: ${{ github.workflow }} cancel-in-progress: true jobs: regress: env: POSTGRES_DISTRIB_DIR: /tmp/neon/pg_install DEFAULT_PG_VERSION: 16 TEST_OUTPUT: /tmp/test_output BUILD_TYPE: remote AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_DEV }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_KEY_DEV }} runs-on: us-east-2 container: image: neondatabase/build-tools:pinned-bookworm options: --init steps: - uses: actions/checkout@v4 with: submodules: true - name: Patch the test run: | cd "vendor/postgres-v${DEFAULT_PG_VERSION}" patch -p1 < "../../compute/patches/cloud_regress_pg${DEFAULT_PG_VERSION}.patch" - name: Generate a random password id: pwgen run: | set +x DBPASS=$(dd if=/dev/random bs=48 count=1 2>/dev/null | base64) echo "::add-mask::${DBPASS//\//}" echo DBPASS="${DBPASS//\//}" >> "${GITHUB_OUTPUT}" - name: Change tests according to the generated password env: DBPASS: ${{ steps.pwgen.outputs.DBPASS }} run: | cd vendor/postgres-v"${DEFAULT_PG_VERSION}"/src/test/regress for fname in sql/*.sql expected/*.out; do sed -i.bak s/NEON_PASSWORD_PLACEHOLDER/"'${DBPASS}'"/ "${fname}" done for ph in $(grep NEON_MD5_PLACEHOLDER expected/password.out | awk '{print $3;}' | sort | uniq); do USER=$(echo "${ph}" | cut -c 22-) MD5=md5$(echo -n "${DBPASS}${USER}" | md5sum | awk '{print $1;}') sed -i.bak "s/${ph}/${MD5}/" expected/password.out done - name: Download Neon artifact uses: ./.github/actions/download with: name: neon-${{ runner.os }}-${{ runner.arch }}-release-artifact path: /tmp/neon/ prefix: latest - name: Run the regression tests uses: ./.github/actions/run-python-test-set with: build_type: ${{ env.BUILD_TYPE }} test_selection: cloud_regress pg_version: ${{ env.DEFAULT_PG_VERSION }} extra_params: -m remote_cluster env: BENCHMARK_CONNSTR: ${{ secrets.PG_REGRESS_CONNSTR }} - name: Create Allure report id: 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" # on-call-staging-stream slack-message: | Periodic pg_regress on staging: ${{ job.status }} <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|GitHub Run> <${{ steps.create-allure-report.outputs.report-url }}|Allure report> env: SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}