vitess.io/vitess@v0.16.2/test/templates/unit_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    test:
     9      runs-on: self-hosted
    10  
    11      steps:
    12        - name: Skip CI
    13          run: |
    14            if [[ "{{"${{contains( github.event.pull_request.labels.*.name, 'Skip CI')}}"}}" == "true" ]]; then
    15              echo "skipping CI due to the 'Skip CI' label"
    16              exit 1
    17            fi
    18  
    19        - name: Check if workflow needs to be skipped
    20          id: skip-workflow
    21          run: |
    22            skip='false'
    23            if [[ "{{"${{github.event.pull_request}}"}}" ==  "" ]] && [[ "{{"${{github.ref}}"}}" != "refs/heads/main" ]] && [[ ! "{{"${{github.ref}}"}}" =~ ^refs/heads/release-[0-9]+\.[0-9]$ ]] && [[ ! "{{"${{github.ref}}"}}" =~ "refs/tags/.*" ]]; then
    24              skip='true'
    25            fi
    26            echo Skip ${skip}
    27            echo "skip-workflow=${skip}" >> $GITHUB_OUTPUT
    28  
    29        - name: Check out code
    30          if: steps.skip-workflow.outputs.skip-workflow == 'false'
    31          uses: actions/checkout@v3
    32  
    33        - name: Check for changes in relevant files
    34          if: steps.skip-workflow.outputs.skip-workflow == 'false'
    35          uses: frouioui/paths-filter@main
    36          id: changes
    37          with:
    38            token: ''
    39            filters: |
    40              unit_tests:
    41                - 'go/**'
    42                - 'test.go'
    43                - 'Makefile'
    44                - 'build.env'
    45                - 'go.sum'
    46                - 'go.mod'
    47                - 'proto/*.proto'
    48                - 'tools/**'
    49                - 'config/**'
    50                - 'bootstrap.sh'
    51                - '.github/workflows/{{.FileName}}'
    52  
    53        - name: Build Docker Image
    54          if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true'
    55          run: docker build -f {{.Dockerfile}} -t {{.ImageName}}:$GITHUB_SHA  .
    56  
    57        - name: Run test
    58          if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true'
    59          timeout-minutes: 30
    60          run: docker run --name "{{.ImageName}}_$GITHUB_SHA" {{.ImageName}}:$GITHUB_SHA /bin/bash -c 'make unit_test'
    61  
    62        - name: Print Volume Used
    63          if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true'
    64          if: ${{"{{ always() }}"}}
    65          run: |
    66            docker inspect -f '{{"{{ (index .Mounts 0).Name }}"}}' {{.ImageName}}_$GITHUB_SHA
    67  
    68        - name: Cleanup Docker Volume
    69          if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true'
    70          run: |
    71            docker rm -v {{.ImageName}}_$GITHUB_SHA
    72  
    73        - name: Cleanup Docker Container
    74          if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true'
    75          if: ${{"{{ always() }}"}}
    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.unit_tests == 'true'
    81          run: |
    82            docker image rm {{.ImageName}}:$GITHUB_SHA