Skip to content

update tests

update tests #5318

name: Reparent New Vtctl - Upgrade Downgrade Testing

Check failure on line 1 in .github/workflows/upgrade_downgrade_test_reparent_new_vtctl.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/upgrade_downgrade_test_reparent_new_vtctl.yml

Invalid workflow file

(Line: 10, Col: 5): you may only define one of `branches` and `branches-ignore` for a single event
on:
push:
branches:
- "main"
- "release-[0-9]+.[0-9]"
tags: '**'
pull_request:
branches: '**'
branches-ignore:
- 'slack-[0-9]+.[0-9]'
concurrency:
group: format('{0}-{1}', ${{ github.ref }}, 'Upgrade Downgrade Testing Reparent New Vtctl')
cancel-in-progress: true
permissions: read-all
# This test ensures that our end-to-end tests work using Vitess components
# (vtctl, vttablet, etc) built on different versions.
jobs:
upgrade_downgrade_test:
timeout-minutes: 60
name: Run Upgrade Downgrade Test - Reparent New Vtctl
runs-on: vitess-ubuntu24-16cpu-1
env:
GOPRIVATE: github.com/slackhq/vitess-addons
GH_ACCESS_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }}
steps:
- 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@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
persist-credentials: 'false'
- name: Set output with latest release branch
id: output-next-release-ref
run: |
next_release_ref=$(./tools/get_next_release.sh ${{github.base_ref}} ${{github.ref}})
echo $next_release_ref
echo "next_release_ref=${next_release_ref}" >> $GITHUB_OUTPUT
- name: Check for changes in relevant files
uses: dorny/paths-filter@ebc4d7e9ebcb0b1eb21480bb8f43113e996ac77a # v3.0.1
id: changes
with:
token: ''
filters: |
end_to_end:
- 'test/config.json'
- 'go/**'
- 'go/**/*.go'
- 'test.go'
- 'Makefile'
- 'build.env'
- 'go.sum'
- 'go.mod'
- 'proto/*.proto'
- 'tools/**'
- 'config/**'
- 'bootstrap.sh'
- '.github/workflows/upgrade_downgrade_test_reparent_new_vtctl.yml'
- name: Tune the OS
if: steps.output-next-release-ref.outputs.next_release_ref != '' && steps.changes.outputs.end_to_end == 'true'
uses: ./.github/actions/tune-os
- name: Setup GitHub access token
if: steps.changes.outputs.end_to_end == 'true'
run: git config --global url.https://${{ secrets.GH_ACCESS_TOKEN }}@github.com/.insteadOf https://github.com/
- name: Set up python
if: steps.changes.outputs.end_to_end == 'true'
uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1
- name: Setup MySQL
if: steps.output-next-release-ref.outputs.next_release_ref != '' && steps.changes.outputs.end_to_end == 'true'
uses: ./.github/actions/setup-mysql
with:
flavor: mysql-8.0
- name: Get base dependencies
timeout-minutes: 10
if: steps.changes.outputs.end_to_end == 'true'
run: |
sudo DEBIAN_FRONTEND="noninteractive" apt-get update
# Install everything else we need, and configure
sudo apt-get install -y make unzip g++ etcd-client etcd-server curl git wget
sudo service etcd stop
# Checkout to the next release of Vitess
- name: Check out other version's code (${{ steps.output-next-release-ref.outputs.next_release_ref }})
if: steps.changes.outputs.end_to_end == 'true'
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ steps.output-next-release-ref.outputs.next_release_ref }}
persist-credentials: 'false'
- name: Set up Go
if: steps.output-next-release-ref.outputs.next_release_ref != '' && steps.changes.outputs.end_to_end == 'true'
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
with:
go-version-file: go.mod
cache: false
- name: Get dependencies for the next release
if: steps.changes.outputs.end_to_end == 'true'
run: |
go mod download
- name: Building next 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@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: 'false'
- name: Set up Go
if: steps.output-next-release-ref.outputs.next_release_ref != '' && steps.changes.outputs.end_to_end == 'true'
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
with:
go-version-file: go.mod
cache: false
- name: Get dependencies for this commit
if: steps.changes.outputs.end_to_end == 'true'
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 the binaries in the bin. Use vtctl version n+1 and keep vttablet at version n
- name: Use next release's Vtctl
if: steps.changes.outputs.end_to_end == 'true'
run: |
source build.env
rm -f $PWD/bin/vtctl $PWD/bin/vtctld $PWD/bin/vtctlclient $PWD/bin/vtctldclient
cp /tmp/vitess-build-other/bin/vtctl $PWD/bin/vtctl
cp /tmp/vitess-build-other/bin/vtctld $PWD/bin/vtctld
cp /tmp/vitess-build-other/bin/vtctlclient $PWD/bin/vtctlclient
cp /tmp/vitess-build-other/bin/vtctldclient $PWD/bin/vtctldclient
vtctl --version
vttablet --version
# Running a test with vtctl at version n+1 and vttablet at version n
- name: Run reparent tests (vtctl=N+1, vttablet=N)
if: steps.changes.outputs.end_to_end == 'true'
run: |
rm -rf /tmp/vtdataroot
mkdir -p /tmp/vtdataroot
source build.env
go run test.go -skip-build -keep-data=false -docker=false -print-log -follow -tag upgrade_downgrade_reparent