-
Notifications
You must be signed in to change notification settings - Fork 20
144 lines (123 loc) · 3.26 KB
/
test.yml
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
name: test
on:
push:
branches: [ "main" ]
paths-ignore:
- "site/**"
- "**/*.md"
pull_request:
branches: [ "main" ]
paths-ignore:
- "site/**"
- "**/*.md"
concurrency:
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/main' && github.run_number || github.ref }}
cancel-in-progress: true
env:
IN_CI: true
jobs:
unit-test:
timeout-minutes: 10
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.21'
- name: Test
run: make unit-test
- name: Upload artifact
if: always() # always upload coverage, so the coverage percents won't affect by the failed tests
uses: actions/upload-artifact@v4
with:
name: unit-test-cover
path: ./cover.out
plugins-integration-test:
timeout-minutes: 10
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.21'
- name: Set up services
run: |
make start-service
- name: Build
run: make build-test-so
- name: Test
run: make plugins-integration-test
- name: Upload logs
uses: actions/upload-artifact@v4
if: failure()
with:
# upload artifact can be found in https://github.com/mosn/htnn/actions/runs/$id
name: ci-logs
path: ./test-envoy
- name: Generate coverage
if: always()
run: |
go tool covdata textfmt -i=/tmp/htnn_coverage -o plugins/tests/integration/cover.out -v 2
- name: Upload artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: plugins-integration-test-cover
path: plugins/tests/integration/cover.out
controller-test:
timeout-minutes: 10
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./controller
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.21'
- name: binary cache
uses: actions/cache@v4
with:
path: ./controller/bin
key: ${{ runner.os }}-${{ hashFiles('./controller/Makefile') }}
- name: Set up services
run: |
make start-controller-service
- name: Test
run: make test
- name: Upload artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: controller-test-cover
path: ./controller/cover.out
coverage:
timeout-minutes: 10
runs-on: ubuntu-latest
needs: [unit-test, plugins-integration-test, controller-test]
if: always()
steps:
- uses: actions/checkout@v4
- name: Download artifact
uses: actions/download-artifact@v4
- name: Upload to codecov
uses: codecov/[email protected]
with:
fail_ci_if_error: true
file: ./cover.out,plugins/tests/integration/cover.out,./controller/cover.out
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
misc-test:
timeout-minutes: 10
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.21'
- name: Test
run: make verify-example