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