зеркало из https://github.com/github/vitess-gh.git
128 строки
5.0 KiB
YAML
128 строки
5.0 KiB
YAML
# DO NOT MODIFY: THIS FILE IS GENERATED USING "make generate_ci_workflows"
|
|
|
|
name: Cluster (vtgate_vschema)
|
|
on: [push, pull_request]
|
|
concurrency:
|
|
group: format('{0}-{1}', ${{ github.ref }}, 'Cluster (vtgate_vschema)')
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
LAUNCHABLE_ORGANIZATION: "vitess"
|
|
LAUNCHABLE_WORKSPACE: "vitess-app"
|
|
GITHUB_PR_HEAD_SHA: "${{ github.event.pull_request.head.sha }}"
|
|
|
|
jobs:
|
|
build:
|
|
name: Run endtoend tests on Cluster (vtgate_vschema)
|
|
runs-on: ubuntu-20.04
|
|
|
|
steps:
|
|
- name: Check if workflow needs to be skipped
|
|
id: skip-workflow
|
|
run: |
|
|
skip='false'
|
|
if [[ "${{github.event.pull_request}}" == "" ]] && [[ "${{github.ref}}" != "refs/heads/main" ]] && [[ ! "${{github.ref}}" =~ ^refs/heads/release-[0-9]+\.[0-9]$ ]] && [[ ! "${{github.ref}}" =~ "refs/tags/.*" ]]; then
|
|
skip='true'
|
|
fi
|
|
echo Skip ${skip}
|
|
echo "::set-output name=skip-workflow::${skip}"
|
|
|
|
- name: Check out code
|
|
if: steps.skip-workflow.outputs.skip-workflow == 'false'
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Check for changes in relevant files
|
|
if: steps.skip-workflow.outputs.skip-workflow == 'false'
|
|
uses: frouioui/paths-filter@main
|
|
id: changes
|
|
with:
|
|
token: ''
|
|
filters: |
|
|
end_to_end:
|
|
- 'go/**/*.go'
|
|
- 'test.go'
|
|
- 'Makefile'
|
|
- 'build.env'
|
|
- 'go.[sumod]'
|
|
- 'proto/*.proto'
|
|
- 'tools/**'
|
|
- 'config/**'
|
|
- 'bootstrap.sh'
|
|
- '.github/workflows/cluster_endtoend_vtgate_vschema.yml'
|
|
|
|
- name: Set up Go
|
|
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: 1.18.7
|
|
|
|
- name: Set up python
|
|
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
|
|
uses: actions/setup-python@v2
|
|
|
|
- name: Tune the OS
|
|
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
|
|
run: |
|
|
echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
|
|
# Increase the asynchronous non-blocking I/O. More information at https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_use_native_aio
|
|
echo "fs.aio-max-nr = 1048576" | sudo tee -a /etc/sysctl.conf
|
|
sudo sysctl -p /etc/sysctl.conf
|
|
|
|
- name: Get dependencies
|
|
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
|
|
run: |
|
|
|
|
# Get key to latest MySQL repo
|
|
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29
|
|
# Setup MySQL 8.0
|
|
wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.20-1_all.deb
|
|
echo mysql-apt-config mysql-apt-config/select-server select mysql-8.0 | sudo debconf-set-selections
|
|
sudo DEBIAN_FRONTEND="noninteractive" dpkg -i mysql-apt-config*
|
|
sudo apt-get update
|
|
# Install everything else we need, and configure
|
|
sudo apt-get install -y mysql-server mysql-client make unzip g++ etcd curl git wget eatmydata xz-utils
|
|
|
|
sudo service mysql stop
|
|
sudo service etcd stop
|
|
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
|
|
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
|
|
go mod download
|
|
|
|
# install JUnit report formatter
|
|
go install github.com/vitessio/go-junit-report@HEAD
|
|
|
|
- name: Setup launchable dependencies
|
|
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
|
|
run: |
|
|
# Get Launchable CLI installed. If you can, make it a part of the builder image to speed things up
|
|
pip3 install --user launchable~=1.0 > /dev/null
|
|
|
|
# verify that launchable setup is all correct.
|
|
launchable verify || true
|
|
|
|
# Tell Launchable about the build you are producing and testing
|
|
launchable record build --name "$GITHUB_RUN_ID" --source .
|
|
|
|
- name: Run cluster endtoend test
|
|
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
|
|
timeout-minutes: 45
|
|
run: |
|
|
# We set the VTDATAROOT to the /tmp folder to reduce the file path of mysql.sock file
|
|
# which musn't be more than 107 characters long.
|
|
export VTDATAROOT="/tmp/"
|
|
source build.env
|
|
|
|
set -x
|
|
|
|
# run the tests however you normally do, then produce a JUnit XML file
|
|
eatmydata -- go run test.go -docker=false -follow -shard vtgate_vschema | tee -a output.txt | go-junit-report -set-exit-code > report.xml
|
|
|
|
- name: Print test output and Record test result in launchable
|
|
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true' && always()
|
|
run: |
|
|
# send recorded tests to launchable
|
|
launchable record tests --build "$GITHUB_RUN_ID" go-test . || true
|
|
|
|
# print test output
|
|
cat output.txt
|