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