forked from milvus-io/milvus
-
Notifications
You must be signed in to change notification settings - Fork 0
129 lines (126 loc) · 4.32 KB
/
main.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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:
UT:
name: Build and test AMD64 Ubuntu ${{ matrix.ubuntu }}
runs-on: ubuntu-${{ matrix.ubuntu }}
timeout-minutes: 120
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: Cache Conan Packages
uses: actions/cache@v3
with:
path: .docker/amd64-ubuntu${{ matrix.ubuntu }}-conan
key: ubuntu${{ matrix.ubuntu }}-conan-${{ hashFiles('internal/core/conanfile.*') }}
restore-keys: ubuntu${{ matrix.ubuntu }}-conan-
- 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 ci-ut"
- 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: Archive code coverage results
uses: actions/upload-artifact@v3
with:
name: code-coverage-result
path: |
./go_coverage.txt
./lcov_output.info
*.info
*.out
.git
codecov:
name: Upload Code Coverage
needs: UT
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Download code coverage results
uses: actions/download-artifact@v3.0.1
with:
name: code-coverage-result
- name: Display structure of code coverage results
run: |
ls -lah
- 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-20.04-unittests
fail_ci_if_error: true
- name: Retry Upload coverage to Codecov
if: "${{ 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