name: Build and test # TODO: do not trigger action for some document file update # This workflow is triggered on pushes or pull request to the repository. on: push: # file paths to consider in the event. Optional; defaults to all. paths: - 'scripts/**' - 'internal/**' - 'cmd/**' - 'build/**' - '.github/workflows/main.yaml' - '.env' - docker-compose.yml - Makefile - go.mod - '!**.md' - '!build/ci/jenkins/**' pull_request: # file paths to consider in the event. Optional; defaults to all. paths: - 'scripts/**' - 'internal/**' - 'cmd/**' - 'build/**' - '.github/workflows/main.yaml' - '.env' - docker-compose.yml - Makefile - go.mod - '!**.md' - '!build/ci/jenkins/**' jobs: ubuntu: name: Build and test AMD64 Ubuntu ${{ matrix.ubuntu }} runs-on: ubuntu-${{ matrix.ubuntu }} timeout-minutes: 90 strategy: fail-fast: false matrix: ubuntu: [18.04] env: UBUNTU: ${{ matrix.ubuntu }} steps: - name: Checkout uses: actions/checkout@v2 - name: Cache CCache Volumes uses: actions/cache@v1 with: path: .docker/amd64-ubuntu${{ matrix.ubuntu }}-ccache key: ubuntu${{ matrix.ubuntu }}-ccache-${{ hashFiles('/internal/core/**') }} restore-keys: ubuntu${{ matrix.ubuntu }}-ccache- - name: Cache Go Mod Volumes uses: actions/cache@v1 with: path: .docker/amd64-ubuntu${{ matrix.ubuntu }}-go-mod key: ubuntu${{ matrix.ubuntu }}-go-mod-${{ hashFiles('**/go.sum') }} restore-keys: ubuntu${{ matrix.ubuntu }}-go-mod- - name: Start Service shell: bash run: | docker-compose up -d pulsar etcd minio - name: Build and UnitTest env: CHECK_BUILDER: "1" run: | ./build/builder.sh /bin/bash -c "make check-proto-product && make codecov" - name: Get the status & restart count for containers when ut failed if: ${{ failure() }} run: | echo "----show current status for each container---" docker ps --format "table {{.Names}}\t\t{{.Image}}\t\t{{.Status}}" for container in $(docker ps --format "table {{.Names}}" | grep -v "NAMES"); do echo "restart count for ${container} is $(docker inspect ${container} --format '{{json .RestartCount}}')" done - name: Get pulsar/minio/etcd logs when ut failed if: ${{ failure() }} run: | echo "-------------logs for pulsar ---------------" docker logs milvus_pulsar_1 echo "-------------logs for minio ----------------" docker logs milvus_minio_1 echo "-------------logs for etcd ----------------" docker logs milvus_etcd_1 - name: Upload coverage to Codecov if: "github.repository == 'milvus-io/milvus'" uses: codecov/codecov-action@v2 with: token: ${{ secrets.CODECOV_TOKEN }} files: ./go_coverage.txt,./lcov_output.info name: ubuntu-${{ matrix.ubuntu }}-unittests fail_ci_if_error: true