vitess.io/vitess@v0.16.2/.github/workflows/unit_test_mysql57.yml (about) 1 # DO NOT MODIFY: THIS FILE IS GENERATED USING "make generate_ci_workflows" 2 3 name: Unit Test (mysql57) 4 on: [push, pull_request] 5 concurrency: 6 group: format('{0}-{1}', ${{ github.ref }}, 'Unit Test (mysql57)') 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_mysql57.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 # mysql57 97 wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.24-1_all.deb 98 # Bionic packages are still compatible for Jammy since there's no MySQL 5.7 99 # packages for Jammy. 100 echo mysql-apt-config mysql-apt-config/repo-codename select bionic | sudo debconf-set-selections 101 echo mysql-apt-config mysql-apt-config/select-server select mysql-5.7 | sudo debconf-set-selections 102 sudo DEBIAN_FRONTEND="noninteractive" dpkg -i mysql-apt-config* 103 sudo apt-get update 104 sudo DEBIAN_FRONTEND="noninteractive" apt-get install -y mysql-client=5.7* mysql-community-server=5.7* mysql-server=5.7* libncurses5 105 106 sudo apt-get install -y make unzip g++ curl git wget ant openjdk-11-jdk eatmydata 107 sudo service mysql stop 108 sudo bash -c "echo '/usr/sbin/mysqld { }' > /etc/apparmor.d/usr.sbin.mysqld" # https://bugs.launchpad.net/ubuntu/+source/mariadb-10.1/+bug/1806263 109 sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ 110 sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile" 111 112 mkdir -p dist bin 113 curl -L https://github.com/coreos/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz | tar -zxC dist 114 mv dist/etcd-v3.3.10-linux-amd64/{etcd,etcdctl} bin/ 115 116 go mod download 117 go install golang.org/x/tools/cmd/goimports@latest 118 119 # install JUnit report formatter 120 go install github.com/vitessio/go-junit-report@HEAD 121 122 - name: Run make tools 123 if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true' 124 run: | 125 make tools 126 127 - name: Setup launchable dependencies 128 if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true' && github.base_ref == 'main' 129 run: | 130 # Get Launchable CLI installed. If you can, make it a part of the builder image to speed things up 131 pip3 install --user launchable~=1.0 > /dev/null 132 133 # verify that launchable setup is all correct. 134 launchable verify || true 135 136 # Tell Launchable about the build you are producing and testing 137 launchable record build --name "$GITHUB_RUN_ID" --source . 138 139 - name: Run test 140 if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true' 141 timeout-minutes: 30 142 run: | 143 eatmydata -- make unit_test | tee -a output.txt | go-junit-report -set-exit-code > report.xml 144 145 - name: Print test output and Record test result in launchable 146 if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true' && always() 147 run: | 148 # send recorded tests to launchable 149 launchable record tests --build "$GITHUB_RUN_ID" go-test . || true 150 151 # print test output 152 cat output.txt