vitess.io/vitess@v0.16.2/.github/workflows/unit_race.yml (about) 1 name: unit_race 2 on: [push, pull_request] 3 concurrency: 4 group: format('{0}-{1}', ${{ github.ref }}, 'unit_race') 5 cancel-in-progress: true 6 7 jobs: 8 9 build: 10 name: Unit Test (Race) 11 runs-on: ubuntu-22.04 12 steps: 13 - name: Skip CI 14 run: | 15 if [[ "${{contains( github.event.pull_request.labels.*.name, 'Skip CI')}}" == "true" ]]; then 16 echo "skipping CI due to the 'Skip CI' label" 17 exit 1 18 fi 19 20 - name: Check if workflow needs to be skipped 21 id: skip-workflow 22 run: | 23 skip='false' 24 if [[ "${{github.event.pull_request}}" == "" ]] && [[ "${{github.ref}}" != "refs/heads/main" ]] && [[ ! "${{github.ref}}" =~ ^refs/heads/release-[0-9]+\.[0-9]$ ]] && [[ ! "${{github.ref}}" =~ "refs/tags/.*" ]]; then 25 skip='true' 26 fi 27 echo Skip ${skip} 28 echo "skip-workflow=${skip}" >> $GITHUB_OUTPUT 29 30 - name: Check out code 31 if: steps.skip-workflow.outputs.skip-workflow == 'false' 32 uses: actions/checkout@v3 33 34 - name: Check for changes in relevant files 35 if: steps.skip-workflow.outputs.skip-workflow == 'false' 36 uses: frouioui/paths-filter@main 37 id: changes 38 with: 39 token: '' 40 filters: | 41 unit_tests: 42 - 'go/**' 43 - 'test.go' 44 - 'Makefile' 45 - 'build.env' 46 - 'go.sum' 47 - 'go.mod' 48 - 'proto/*.proto' 49 - 'tools/**' 50 - 'config/**' 51 - 'bootstrap.sh' 52 - '.github/workflows/unit_race.yml' 53 54 - name: Set up Go 55 if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true' 56 uses: actions/setup-go@v3 57 with: 58 go-version: 1.20.3 59 60 - name: Tune the OS 61 if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true' 62 run: | 63 sudo sysctl -w net.ipv4.ip_local_port_range="22768 65535" 64 65 - name: Get dependencies 66 if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true' 67 run: | 68 export DEBIAN_FRONTEND="noninteractive" 69 sudo apt-get update 70 71 # mysql80 72 sudo apt-get install -y mysql-server mysql-client 73 74 sudo apt-get install -y make unzip g++ curl git wget ant openjdk-11-jdk eatmydata 75 sudo service mysql stop 76 sudo bash -c "echo '/usr/sbin/mysqld { }' > /etc/apparmor.d/usr.sbin.mysqld" # https://bugs.launchpad.net/ubuntu/+source/mariadb-10.1/+bug/1806263 77 sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ 78 sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile" 79 80 mkdir -p dist bin 81 curl -L https://github.com/coreos/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz | tar -zxC dist 82 mv dist/etcd-v3.3.10-linux-amd64/{etcd,etcdctl} bin/ 83 84 go mod download 85 go install golang.org/x/tools/cmd/goimports@latest 86 87 - name: Run make tools 88 if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true' 89 run: | 90 make tools 91 92 - name: unit_race 93 if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true' 94 timeout-minutes: 30 95 run: | 96 eatmydata -- make unit_test_race