vitess.io/vitess@v0.16.2/.github/workflows/e2e_race.yml (about) 1 name: e2e_race 2 on: [push, pull_request] 3 jobs: 4 5 build: 6 name: End-to-End Test (Race) 7 runs-on: ubuntu-22.04 8 steps: 9 - name: Skip CI 10 run: | 11 if [[ "${{contains( github.event.pull_request.labels.*.name, 'Skip CI')}}" == "true" ]]; then 12 echo "skipping CI due to the 'Skip CI' label" 13 exit 1 14 fi 15 16 - name: Check if workflow needs to be skipped 17 id: skip-workflow 18 run: | 19 skip='false' 20 if [[ "${{github.event.pull_request}}" == "" ]] && [[ "${{github.ref}}" != "refs/heads/main" ]] && [[ ! "${{github.ref}}" =~ ^refs/heads/release-[0-9]+\.[0-9]$ ]] && [[ ! "${{github.ref}}" =~ "refs/tags/.*" ]]; then 21 skip='true' 22 fi 23 echo Skip ${skip} 24 echo "skip-workflow=${skip}" >> $GITHUB_OUTPUT 25 26 - name: Check out code 27 if: steps.skip-workflow.outputs.skip-workflow == 'false' 28 uses: actions/checkout@v3 29 30 - name: Check for changes in relevant files 31 if: steps.skip-workflow.outputs.skip-workflow == 'false' 32 uses: frouioui/paths-filter@main 33 id: changes 34 with: 35 token: '' 36 filters: | 37 end_to_end: 38 - 'go/**/*.go' 39 - 'test.go' 40 - 'Makefile' 41 - 'build.env' 42 - 'go.sum' 43 - 'go.mod' 44 - 'proto/*.proto' 45 - 'tools/**' 46 - 'config/**' 47 - 'bootstrap.sh' 48 - '.github/workflows/e2e_race.yml' 49 50 - name: Set up Go 51 if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true' 52 uses: actions/setup-go@v3 53 with: 54 go-version: 1.20.3 55 56 - name: Tune the OS 57 if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true' 58 run: | 59 sudo sysctl -w net.ipv4.ip_local_port_range="22768 65535" 60 61 - name: Get dependencies 62 if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true' 63 run: | 64 # Get key to latest MySQL repo 65 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29 66 # Setup MySQL 8.0 67 wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.24-1_all.deb 68 echo mysql-apt-config mysql-apt-config/select-server select mysql-8.0 | sudo debconf-set-selections 69 sudo DEBIAN_FRONTEND="noninteractive" dpkg -i mysql-apt-config* 70 sudo apt-get update 71 72 # Install everything else we need, and configure 73 sudo apt-get install -y mysql-server mysql-client make unzip g++ etcd curl git wget eatmydata xz-utils 74 sudo service mysql stop 75 sudo service etcd stop 76 sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ 77 sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld 78 go mod download 79 80 - name: Run make minimaltools 81 if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true' 82 run: | 83 make minimaltools 84 85 - name: e2e_race 86 if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true' 87 timeout-minutes: 30 88 run: | 89 make e2e_test_race