vitess.io/vitess@v0.16.2/.github/workflows/unit_test_mysql80.yml (about) 1 # DO NOT MODIFY: THIS FILE IS GENERATED USING "make generate_ci_workflows" 2 3 name: Unit Test (mysql80) 4 on: [push, pull_request] 5 concurrency: 6 group: format('{0}-{1}', ${{ github.ref }}, 'Unit Test (mysql80)') 7 cancel-in-progress: true 8 9 env: 10 LAUNCHABLE_ORGANIZATION: "vitess" 11 LAUNCHABLE_WORKSPACE: "vitess-app" 12 GITHUB_PR_HEAD_SHA: "${{ github.event.pull_request.head.sha }}" 13 14 jobs: 15 test: 16 runs-on: ubuntu-22.04 17 18 steps: 19 - name: Skip CI 20 run: | 21 if [[ "${{contains( github.event.pull_request.labels.*.name, 'Skip CI')}}" == "true" ]]; then 22 echo "skipping CI due to the 'Skip CI' label" 23 exit 1 24 fi 25 26 - name: Check if workflow needs to be skipped 27 id: skip-workflow 28 run: | 29 skip='false' 30 if [[ "${{github.event.pull_request}}" == "" ]] && [[ "${{github.ref}}" != "refs/heads/main" ]] && [[ ! "${{github.ref}}" =~ ^refs/heads/release-[0-9]+\.[0-9]$ ]] && [[ ! "${{github.ref}}" =~ "refs/tags/.*" ]]; then 31 skip='true' 32 fi 33 echo Skip ${skip} 34 echo "skip-workflow=${skip}" >> $GITHUB_OUTPUT 35 36 - name: Check out code 37 if: steps.skip-workflow.outputs.skip-workflow == 'false' 38 uses: actions/checkout@v3 39 40 - name: Check for changes in relevant files 41 if: steps.skip-workflow.outputs.skip-workflow == 'false' 42 uses: frouioui/paths-filter@main 43 id: changes 44 with: 45 token: '' 46 filters: | 47 unit_tests: 48 - 'go/**' 49 - 'test.go' 50 - 'Makefile' 51 - 'build.env' 52 - 'go.sum' 53 - 'go.mod' 54 - 'proto/*.proto' 55 - 'tools/**' 56 - 'config/**' 57 - 'bootstrap.sh' 58 - '.github/workflows/unit_test_mysql80.yml' 59 60 - name: Set up Go 61 if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true' 62 uses: actions/setup-go@v3 63 with: 64 go-version: 1.20.3 65 66 - name: Set up python 67 if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true' 68 uses: actions/setup-python@v4 69 70 - name: Tune the OS 71 if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true' 72 run: | 73 sudo sysctl -w net.ipv4.ip_local_port_range="22768 65535" 74 # 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 75 echo "fs.aio-max-nr = 1048576" | sudo tee -a /etc/sysctl.conf 76 sudo sysctl -p /etc/sysctl.conf 77 78 - name: Get dependencies 79 if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true' 80 run: | 81 export DEBIAN_FRONTEND="noninteractive" 82 sudo apt-get update 83 84 # Uninstall any previously installed MySQL first 85 sudo systemctl stop apparmor 86 sudo DEBIAN_FRONTEND="noninteractive" apt-get remove -y --purge mysql-server mysql-client mysql-common 87 sudo apt-get -y autoremove 88 sudo apt-get -y autoclean 89 sudo deluser mysql 90 sudo rm -rf /var/lib/mysql 91 sudo rm -rf /etc/mysql 92 93 # Get key to latest MySQL repo 94 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29 95 96 # mysql80 97 wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.24-1_all.deb 98 echo mysql-apt-config mysql-apt-config/select-server select mysql-8.0 | sudo debconf-set-selections 99 sudo DEBIAN_FRONTEND="noninteractive" dpkg -i mysql-apt-config* 100 sudo apt-get update 101 sudo DEBIAN_FRONTEND="noninteractive" apt-get install -y mysql-server mysql-client 102 103 sudo apt-get install -y make unzip g++ curl git wget ant openjdk-11-jdk eatmydata 104 sudo service mysql stop 105 sudo bash -c "echo '/usr/sbin/mysqld { }' > /etc/apparmor.d/usr.sbin.mysqld" # https://bugs.launchpad.net/ubuntu/+source/mariadb-10.1/+bug/1806263 106 sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ 107 sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile" 108 109 mkdir -p dist bin 110 curl -L https://github.com/coreos/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz | tar -zxC dist 111 mv dist/etcd-v3.3.10-linux-amd64/{etcd,etcdctl} bin/ 112 113 go mod download 114 go install golang.org/x/tools/cmd/goimports@latest 115 116 # install JUnit report formatter 117 go install github.com/vitessio/go-junit-report@HEAD 118 119 - name: Run make tools 120 if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true' 121 run: | 122 make tools 123 124 - name: Setup launchable dependencies 125 if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true' && github.base_ref == 'main' 126 run: | 127 # Get Launchable CLI installed. If you can, make it a part of the builder image to speed things up 128 pip3 install --user launchable~=1.0 > /dev/null 129 130 # verify that launchable setup is all correct. 131 launchable verify || true 132 133 # Tell Launchable about the build you are producing and testing 134 launchable record build --name "$GITHUB_RUN_ID" --source . 135 136 - name: Run test 137 if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true' 138 timeout-minutes: 30 139 run: | 140 eatmydata -- make unit_test | tee -a output.txt | go-junit-report -set-exit-code > report.xml 141 142 - name: Print test output and Record test result in launchable 143 if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true' && always() 144 run: | 145 # send recorded tests to launchable 146 launchable record tests --build "$GITHUB_RUN_ID" go-test . || true 147 148 # print test output 149 cat output.txt