vitess.io/vitess@v0.16.2/.github/workflows/e2e_race.yml (about)

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