Skip to content

evalengine, sqlparser: MySQL comparison domains; nested BETWEEN parentheses #46721

evalengine, sqlparser: MySQL comparison domains; nested BETWEEN parentheses

evalengine, sqlparser: MySQL comparison domains; nested BETWEEN parentheses #46721

name: Backups - E2E - Upgrade Downgrade Testing
on:
push:
branches:
- "main"
- "release-[0-9]+.[0-9]"
tags: '**'
pull_request:
branches: '**'
concurrency:
group: format('{0}-{1}', ${{ github.ref }}, 'Upgrade Downgrade Testing - Backups - E2E')
cancel-in-progress: true
permissions: read-all
jobs:
upgrade_downgrade_test_e2e:
timeout-minutes: 60
name: Run Upgrade Downgrade Test - Backups - E2E
runs-on: ${{ github.repository == 'vitessio/vitess' && 'oracle-vm-16cpu-64gb-x86-64' || 'ubuntu-24.04' }}
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@b09bb98e06d4d774595224525879c09bc6e98c40 # v2.20.1
with:
egress-policy: audit
- name: Skip CI
run: |
if [[ "${{contains( github.event.pull_request.labels.*.name, 'Skip CI')}}" == "true" ]]; then
echo "skipping CI due to the 'Skip CI' label"
exit 1
fi
- name: Check out commit's code
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
persist-credentials: 'false'
- name: Set output with latest release branch
id: output-previous-release-ref
env:
BASE_REF: ${{ github.base_ref }}
REF: ${{ github.ref }}
run: |
previous_release_ref=$(./tools/get_previous_release.sh "$BASE_REF" "$REF")
echo $previous_release_ref
echo "previous_release_ref=${previous_release_ref}" >> $GITHUB_OUTPUT
- name: Check for changes in relevant files
uses: dorny/paths-filter@7b450fff21473bca461d4b92ce414b9d0420d706 # v4.0.2
id: changes
with:
token: ''
filters: |
end_to_end:
- 'test/config.json'
- 'go/**/!(*_test).go'
- 'go/**/*.s'
- 'go/test/endtoend/**'
- 'go/vt/sidecardb/**/*.sql'
- 'go/mysql/collations/colldata/**'
- 'go/mysql/icuregex/internal/icudata/**'
- 'test.go'
- 'Makefile'
- 'build.env'
- 'go.sum'
- 'go.mod'
- 'proto/*.proto'
- 'tools/**'
- 'config/**'
- 'bootstrap.sh'
- '.github/workflows/upgrade_downgrade_test_backups_e2e.yml'
- '.github/actions/setup-mysql/action.yml'
- name: Tune the OS
if: steps.changes.outputs.end_to_end == 'true'
timeout-minutes: 5
uses: ./.github/actions/tune-os
- name: Set up python
if: steps.changes.outputs.end_to_end == 'true'
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
- name: Setup MySQL
if: steps.changes.outputs.end_to_end == 'true'
timeout-minutes: 8
uses: ./.github/actions/setup-mysql
with:
flavor: mysql-8.4
- name: Setup Percona Apt repository
if: steps.changes.outputs.end_to_end == 'true'
timeout-minutes: 5
uses: ./.github/actions/setup-percona-repo
- name: Get base dependencies
timeout-minutes: 10
if: steps.changes.outputs.end_to_end == 'true'
run: |
sudo DEBIAN_FRONTEND="noninteractive" apt-get update
sudo percona-release setup pxb-80
# Install everything else we need, and configure
sudo apt-get install -y make unzip g++ etcd-client etcd-server curl git wget grep
sudo service etcd stop
sudo apt-get install -y gnupg2 lz4
sudo apt-get update
sudo apt-get install -y percona-xtrabackup-80
# Checkout to the last release of Vitess
- name: Check out other version's code (${{ steps.output-previous-release-ref.outputs.previous_release_ref }})
if: steps.changes.outputs.end_to_end == 'true'
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ steps.output-previous-release-ref.outputs.previous_release_ref }}
persist-credentials: 'false'
- name: Set up Go
if: steps.changes.outputs.end_to_end == 'true'
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
with:
go-version-file: go.mod
cache: false
- name: Get dependencies for the last release
if: steps.changes.outputs.end_to_end == 'true'
timeout-minutes: 5
run: |
go mod download
- name: Building last release's binaries
if: steps.changes.outputs.end_to_end == 'true'
timeout-minutes: 10
run: |
source build.env
NOVTADMINBUILD=1 make build
mkdir -p /tmp/vitess-build-other/
cp -R bin /tmp/vitess-build-other/
rm -Rf bin/*
# Checkout to this build's commit
- name: Check out commit's code
if: steps.changes.outputs.end_to_end == 'true'
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: 'false'
- name: Set up Go
if: steps.changes.outputs.end_to_end == 'true'
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
with:
go-version-file: go.mod
cache: false
- name: Get dependencies for this commit
if: steps.changes.outputs.end_to_end == 'true'
timeout-minutes: 5
run: |
go mod download
- name: Building the binaries for this commit
if: steps.changes.outputs.end_to_end == 'true'
timeout-minutes: 10
run: |
source build.env
NOVTADMINBUILD=1 make build
mkdir -p /tmp/vitess-build-current/
cp -R bin /tmp/vitess-build-current/
# Swap binaries, use last release's VTTablet
- name: Use last release's VTTablet
if: steps.changes.outputs.end_to_end == 'true'
run: |
source build.env
rm -f $PWD/bin/vttablet $PWD/bin/mysqlctl $PWD/bin/mysqlctld
cp /tmp/vitess-build-other/bin/vttablet $PWD/bin/vttablet
cp /tmp/vitess-build-other/bin/mysqlctl $PWD/bin/mysqlctl
cp /tmp/vitess-build-other/bin/mysqlctld $PWD/bin/mysqlctld
vttablet --version
# Run test with VTTablet at version N-1 and VTBackup at version N
- name: Run backups tests (vttablet=N-1, vtbackup=N)
if: steps.changes.outputs.end_to_end == 'true'
run: |
rm -rf /tmp/vtdataroot
mkdir -p /tmp/vtdataroot
set -x
source build.env
go run test.go -skip-build -docker=false -print-log -follow -tag upgrade_downgrade_backups
# Swap binaries again, use current version's VTTablet, and last release's VTBackup
- name: Use current version VTTablet, and other version VTBackup
if: steps.changes.outputs.end_to_end == 'true'
run: |
source build.env
rm -f $PWD/bin/vtbackup $PWD/bin/vttablet $PWD/bin/mysqlctl $PWD/bin/mysqlctld
cp /tmp/vitess-build-current/bin/vtbackup $PWD/bin/vtbackup
cp /tmp/vitess-build-other/bin/vttablet $PWD/bin/vttablet
cp /tmp/vitess-build-other/bin/mysqlctl $PWD/bin/mysqlctl
cp /tmp/vitess-build-other/bin/mysqlctld $PWD/bin/mysqlctld
vtbackup --version
vttablet --version
# Run test again with VTTablet at version N, and VTBackup at version N-1
- name: Run backups tests (vttablet=N, vtbackup=N-1)
if: steps.changes.outputs.end_to_end == 'true'
run: |
rm -rf /tmp/vtdataroot
mkdir -p /tmp/vtdataroot
set -x
source build.env
go run test.go -skip-build -keep-data -docker=false -print-log -follow -tag upgrade_downgrade_backups