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

     1  name: Upgrade Downgrade Testing - Backups - E2E - Next Release
     2  on:
     3    push:
     4    pull_request:
     5  
     6  concurrency:
     7    group: format('{0}-{1}', ${{ github.ref }}, 'Upgrade Downgrade Testing - Backups - E2E - Next Release')
     8    cancel-in-progress: true
     9  
    10  jobs:
    11    get_next_release:
    12      if: always()
    13      name: Get Latest Release - Backups - E2E - Next Release
    14      runs-on: ubuntu-22.04
    15      outputs:
    16        next_release: ${{ steps.output-next-release-ref.outputs.next_release_ref }}
    17  
    18      steps:
    19        - name: Check out to HEAD
    20          uses: actions/checkout@v3
    21          with:
    22            fetch-depth: 0
    23  
    24        - name: Set output with latest release branch
    25          id: output-next-release-ref
    26          run: |
    27            next_release_ref=$(./tools/get_next_release.sh ${{github.base_ref}} ${{github.ref}})
    28            echo $next_release_ref
    29            echo "next_release_ref=${next_release_ref}" >> $GITHUB_OUTPUT
    30  
    31    upgrade_downgrade_test_e2e:
    32      timeout-minutes: 60
    33      if: always() && needs.get_next_release.result == 'success'
    34      name: Run Upgrade Downgrade Test - Backups - E2E - Next Release
    35      runs-on: ubuntu-22.04
    36      needs:
    37        - get_next_release
    38  
    39      steps:
    40      - name: Skip CI
    41        run: |
    42          if [[ "${{contains( github.event.pull_request.labels.*.name, 'Skip CI')}}" == "true" ]]; then
    43            echo "skipping CI due to the 'Skip CI' label"
    44            exit 1
    45          fi
    46  
    47      - name: Check if workflow needs to be skipped
    48        id: skip-workflow
    49        run: |
    50          skip='false'
    51          if [[ "${{github.event.pull_request}}" ==  "" ]] && [[ "${{github.ref}}" != "refs/heads/main" ]] && [[ ! "${{github.ref}}" =~ ^refs/heads/release-[0-9]+\.[0-9]$ ]] && [[ ! "${{github.ref}}" =~ "refs/tags/.*" ]]; then
    52            skip='true'
    53          fi
    54          if [[ "${{needs.get_next_release.outputs.next_release}}" == "" ]]; then
    55            skip='true'
    56          fi
    57          echo Skip ${skip}
    58          echo "skip-workflow=${skip}" >> $GITHUB_OUTPUT
    59  
    60      - name: Check out commit's code
    61        if: steps.skip-workflow.outputs.skip-workflow == 'false'
    62        uses: actions/checkout@v3
    63  
    64      - name: Check for changes in relevant files
    65        if: steps.skip-workflow.outputs.skip-workflow == 'false'
    66        uses: frouioui/paths-filter@main
    67        id: changes
    68        with:
    69          token: ''
    70          filters: |
    71            end_to_end:
    72              - 'go/**'
    73              - 'go/**/*.go'
    74              - 'test.go'
    75              - 'Makefile'
    76              - 'build.env'
    77              - 'go.sum'
    78              - 'go.mod'
    79              - 'proto/*.proto'
    80              - 'tools/**'
    81              - 'config/**'
    82              - 'bootstrap.sh'
    83              - '.github/workflows/upgrade_downgrade_test_backups_e2e_next_release.yml'
    84  
    85      - name: Set up Go
    86        if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
    87        uses: actions/setup-go@v3
    88        with:
    89          go-version: 1.20.3
    90  
    91      - name: Set up python
    92        if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
    93        uses: actions/setup-python@v4
    94  
    95      - name: Tune the OS
    96        if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
    97        run: |
    98          sudo sysctl -w net.ipv4.ip_local_port_range="22768 65535"
    99  
   100      - name: Get base dependencies
   101        if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
   102        run: |
   103          sudo apt-get update
   104          sudo apt-get install -y mysql-server mysql-client make unzip g++ etcd curl git wget eatmydata
   105          sudo service mysql stop
   106          sudo service etcd stop
   107          sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
   108          sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
   109          go mod download
   110  
   111          # install JUnit report formatter
   112          go install github.com/vitessio/go-junit-report@HEAD
   113  
   114          wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
   115          sudo apt-get install -y gnupg2
   116          sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
   117          sudo apt-get update
   118          sudo apt-get install percona-xtrabackup-24
   119  
   120      # Checkout to the next release of Vitess
   121      - name: Check out other version's code (${{ needs.get_next_release.outputs.next_release }})
   122        if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
   123        uses: actions/checkout@v3
   124        with:
   125          ref: ${{ needs.get_next_release.outputs.next_release }}
   126  
   127      - name: Get dependencies for the next release
   128        if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
   129        run: |
   130          go mod download
   131  
   132      - name: Building next release's binaries
   133        if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
   134        timeout-minutes: 10
   135        run: |
   136          source build.env
   137          make build
   138          mkdir -p /tmp/vitess-build-other/
   139          cp -R bin /tmp/vitess-build-other/
   140          rm -Rf bin/*
   141  
   142      # Checkout to this build's commit
   143      - name: Check out commit's code
   144        if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
   145        uses: actions/checkout@v3
   146  
   147      - name: Get dependencies for this commit
   148        if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
   149        run: |
   150          go mod download
   151  
   152      - name: Building the binaries for this commit
   153        if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
   154        timeout-minutes: 10
   155        run: |
   156          source build.env
   157          make build
   158          mkdir -p /tmp/vitess-build-current/
   159          cp -R bin /tmp/vitess-build-current/
   160  
   161      # Swap binaries, use next release's VTTablet
   162      - name: Use next release's VTTablet
   163        if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
   164        run: |
   165          source build.env
   166  
   167          rm -f $PWD/bin/vttablet
   168          cp /tmp/vitess-build-other/bin/vttablet $PWD/bin/vttablet
   169          vttablet --version
   170  
   171      # Run test with VTTablet at version N+1 and VTBackup at version N
   172      - name: Run backups tests (vttablet=N+1, vtbackup=N)
   173        if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
   174        run: |
   175          rm -rf /tmp/vtdataroot
   176          mkdir -p /tmp/vtdataroot
   177          set -x
   178          source build.env
   179          eatmydata -- go run test.go -skip-build -docker=false -print-log -follow -tag upgrade_downgrade_backups
   180  
   181      # Swap binaries again, use current version's VTTablet, and next release's VTBackup
   182      - name: Use current version VTTablet, and other version VTBackup
   183        if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
   184        run: |
   185          source build.env
   186  
   187          rm -f $PWD/bin/vtbackup $PWD/bin/vttablet
   188          cp /tmp/vitess-build-current/bin/vtbackup $PWD/bin/vtbackup
   189          cp /tmp/vitess-build-other/bin/vttablet $PWD/bin/vttablet
   190          vtbackup --version
   191          vttablet --version
   192  
   193      # Run test again with VTTablet at version N, and VTBackup at version N+1
   194      - name: Run backups tests (vttablet=N, vtbackup=N+1)
   195        if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
   196        run: |
   197          rm -rf /tmp/vtdataroot
   198          mkdir -p /tmp/vtdataroot
   199          set -x
   200          source build.env
   201          eatmydata -- go run test.go -skip-build -keep-data -docker=false -print-log -follow -tag upgrade_downgrade_backups