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

     1  name: unit_race
     2  on: [push, pull_request]
     3  concurrency:
     4    group: format('{0}-{1}', ${{ github.ref }}, 'unit_race')
     5    cancel-in-progress: true
     6  
     7  jobs:
     8  
     9    build:
    10      name: Unit Test (Race)
    11      runs-on: ubuntu-22.04
    12      steps:
    13      - name: Skip CI
    14        run: |
    15          if [[ "${{contains( github.event.pull_request.labels.*.name, 'Skip CI')}}" == "true" ]]; then
    16            echo "skipping CI due to the 'Skip CI' label"
    17            exit 1
    18          fi
    19  
    20      - name: Check if workflow needs to be skipped
    21        id: skip-workflow
    22        run: |
    23          skip='false'
    24          if [[ "${{github.event.pull_request}}" ==  "" ]] && [[ "${{github.ref}}" != "refs/heads/main" ]] && [[ ! "${{github.ref}}" =~ ^refs/heads/release-[0-9]+\.[0-9]$ ]] && [[ ! "${{github.ref}}" =~ "refs/tags/.*" ]]; then
    25            skip='true'
    26          fi
    27          echo Skip ${skip}
    28          echo "skip-workflow=${skip}" >> $GITHUB_OUTPUT
    29  
    30      - name: Check out code
    31        if: steps.skip-workflow.outputs.skip-workflow == 'false'
    32        uses: actions/checkout@v3
    33  
    34      - name: Check for changes in relevant files
    35        if: steps.skip-workflow.outputs.skip-workflow == 'false'
    36        uses: frouioui/paths-filter@main
    37        id: changes
    38        with:
    39          token: ''
    40          filters: |
    41            unit_tests:
    42              - 'go/**'
    43              - 'test.go'
    44              - 'Makefile'
    45              - 'build.env'
    46              - 'go.sum'
    47              - 'go.mod'
    48              - 'proto/*.proto'
    49              - 'tools/**'
    50              - 'config/**'
    51              - 'bootstrap.sh'
    52              - '.github/workflows/unit_race.yml'
    53  
    54      - name: Set up Go
    55        if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true'
    56        uses: actions/setup-go@v3
    57        with:
    58          go-version: 1.20.3
    59  
    60      - name: Tune the OS
    61        if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true'
    62        run: |
    63          sudo sysctl -w net.ipv4.ip_local_port_range="22768 65535"
    64  
    65      - name: Get dependencies
    66        if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true'
    67        run: |
    68          export DEBIAN_FRONTEND="noninteractive"
    69          sudo apt-get update
    70  
    71          # mysql80
    72          sudo apt-get install -y mysql-server mysql-client
    73  
    74          sudo apt-get install -y make unzip g++ curl git wget ant openjdk-11-jdk eatmydata
    75          sudo service mysql stop
    76          sudo bash -c "echo '/usr/sbin/mysqld { }' > /etc/apparmor.d/usr.sbin.mysqld" # https://bugs.launchpad.net/ubuntu/+source/mariadb-10.1/+bug/1806263
    77          sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
    78          sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile"
    79  
    80          mkdir -p dist bin
    81          curl -L https://github.com/coreos/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz | tar -zxC dist
    82          mv dist/etcd-v3.3.10-linux-amd64/{etcd,etcdctl} bin/
    83  
    84          go mod download
    85          go install golang.org/x/tools/cmd/goimports@latest
    86  
    87      - name: Run make tools
    88        if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true'
    89        run: |
    90          make tools
    91  
    92      - name: unit_race
    93        if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true'
    94        timeout-minutes: 30
    95        run: |
    96          eatmydata -- make unit_test_race