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

     1  name: endtoend
     2  on: [push, pull_request]
     3  jobs:
     4  
     5    build:
     6      name: End-to-End Test
     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/endtoend.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          sudo apt-get update
    65          sudo apt-get install -y mysql-server mysql-client make unzip g++ etcd curl git wget
    66          sudo service mysql stop
    67          sudo service etcd stop
    68          sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
    69          sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
    70          go mod download
    71  
    72      - name: Run make minimaltools
    73        if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
    74        run: |
    75          make minimaltools
    76  
    77      - name: Build
    78        if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
    79        run: |
    80          make build
    81  
    82      - name: endtoend
    83        if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
    84        timeout-minutes: 30
    85        run: |
    86          eatmydata -- tools/e2e_test_runner.sh