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