vitess.io/vitess@v0.16.2/test/templates/cluster_endtoend_test_self_hosted.tpl (about)

     1  name: {{.Name}}
     2  on: [push, pull_request]
     3  concurrency:
     4    group: format('{0}-{1}', ${{"{{"}} github.ref {{"}}"}}, '{{.Name}}')
     5    cancel-in-progress: true
     6  
     7  jobs:
     8    build:
     9      name: Run endtoend tests on {{.Name}}
    10      runs-on: self-hosted
    11  
    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              end_to_end:
    42                - 'go/**/*.go'
    43                - 'test.go'
    44                - 'Makefile'
    45                - 'build.env'
    46                - 'go.sum'
    47                - 'go.mod'
    48                - 'proto/*.proto'
    49                - 'tools/**'
    50                - 'config/**'
    51                - '.github/docker/**'
    52                - 'bootstrap.sh'
    53                - '.github/workflows/{{.FileName}}'
    54  
    55        - name: Build Docker Image
    56          if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
    57          run: docker build -f {{.Dockerfile}} -t {{.ImageName}}:$GITHUB_SHA  .
    58  
    59        - name: Run test
    60          if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
    61          timeout-minutes: 30
    62          run: docker run --name "{{.ImageName}}_$GITHUB_SHA" {{.ImageName}}:$GITHUB_SHA /bin/bash -c 'source build.env && go run test.go -keep-data=true -docker=false -print-log -follow -shard {{.Shard}} -- -- --keep-data=true'
    63  
    64        - name: Print Volume Used
    65          if: always() && steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
    66          run: |
    67            docker inspect -f '{{"{{ (index .Mounts 0).Name }}"}}' {{.ImageName}}_$GITHUB_SHA
    68  
    69        - name: Cleanup Docker Volume
    70          if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
    71          run: |
    72            docker rm -v {{.ImageName}}_$GITHUB_SHA
    73  
    74        - name: Cleanup Docker Container
    75          if: always() && steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
    76          run: |
    77            docker rm -f {{.ImageName}}_$GITHUB_SHA
    78  
    79        - name: Cleanup Docker Image
    80          if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
    81          run: |
    82            docker image rm {{.ImageName}}:$GITHUB_SHA