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: [20.04] env: UBUNTU: ${{ matrix.ubuntu }} steps: - name: Checkout uses: actions/checkout@v2 - name: "Generate CCache Hash" env: CORE_HASH: ${{ hashFiles( 'internal/core/**/*.cpp', 'internal/core/**/*.cc', 'internal/core/**/*.c', 'internal/core/**/*.h', 'internal/core/**/*.hpp', 'internal/core/**/CMakeLists.txt') }} run: | echo "corehash=${CORE_HASH}" >> $GITHUB_ENV echo "Set CCache hash to ${CORE_HASH}" - name: Cache CCache Volumes uses: actions/cache@v3 with: path: .docker/amd64-ubuntu${{ matrix.ubuntu }}-ccache key: ubuntu${{ matrix.ubuntu }}-ccache-${{ env.corehash }} restore-keys: ubuntu${{ matrix.ubuntu }}-ccache- - name: Cache Go Mod Volumes uses: actions/cache@v3 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 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: Upload coverage to Codecov if: "github.repository == 'milvus-io/milvus'" uses: codecov/codecov-action@v3.1.1 id: upload_cov with: token: ${{ secrets.CODECOV_TOKEN }} files: ./go_coverage.txt,./lcov_output.info name: ubuntu-${{ matrix.ubuntu }}-unittests fail_ci_if_error: true - name: Retry Upload coverage to Codecov if: "steps.upload_cov.outcome=='failure' && github.repository == 'milvus-io/milvus'" uses: codecov/codecov-action@v3.1.1 id: retry_upload_cov with: token: ${{ secrets.CODECOV_TOKEN }} files: ./go_coverage.txt,./lcov_output.info name: ubuntu-${{ matrix.ubuntu }}-unittests fail_ci_if_error: true