-
Notifications
You must be signed in to change notification settings - Fork 25
130 lines (112 loc) · 3.17 KB
/
tests.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
name: Tests
on:
push:
branches:
- master
pull_request:
permissions:
contents: write
checks: write
pull-requests: read
jobs:
build-ui:
name: Build Web UI
uses: ./.github/workflows/build-webui.yml
secrets:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
lint:
name: Lint code
runs-on: ubuntu-latest
steps:
- name: Checkout Actions Repository
uses: actions/checkout@v4
- name: Run golangci-lint
uses: golangci/golangci-lint-action@v6
with:
version: latest
tests:
name: Tests
needs: build-ui
strategy:
matrix:
os: [ ubuntu-latest, windows-latest, macos-13, macos-14 ]
test: [ unit, integration-example, integration-real ]
profile: [ main, other ]
include:
- test: unit
test_type: unit
- test: integration-example
test_type: integration
- test: integration-real
test_type: integration
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version-file: "go.mod"
cache: true
check-latest: true
- uses: actions/setup-python@v5
with:
python-version: '3.12'
check-latest: true
cache: 'pip'
cache-dependency-path: 'scripts/requirements.txt'
- name: Add python dependencies
run: |
pip install -r scripts/requirements.txt
- name: Download UI file
uses: actions/download-artifact@v4
with:
name: ui
- name: Move UI file
run: mv index.html internal/webui/index.html
- name: Cache test binaries
uses: actions/cache@v4
with:
path: scripts/bins
key: testbins-${{ hashFiles('scripts/binaries.csv') }}-${{ matrix.test }}
enableCrossOsArchive: true
- name: Download deps
run: go mod download
- name: Run tests
run: python scripts/tests.py --${{ matrix.test }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PROFILE: ${{ matrix.profile }}
- name: Upload coverage
if: ${{ matrix.profile == 'main' }}
uses: codecov/[email protected]
with:
disable_search: true
token: ${{ secrets.CODECOV_TOKEN }}
file: ${{ matrix.test_type }}.profile
flags: ${{ matrix.test_type }}
- name: Upload results
uses: actions/upload-artifact@v4
if: always()
with:
name: ${{ matrix.os }}-${{ matrix.test }}-${{ matrix.profile }}-results
path: results/
merge:
name: Merge results
needs: tests
runs-on: ubuntu-latest
strategy:
matrix:
os: [ ubuntu-latest, windows-latest, macos-13, macos-14 ]
steps:
- name: Merge
uses: actions/upload-artifact/merge@v4
with:
name: ${{ matrix.os }}-results
compression-level: '9'
pattern: ${{ matrix.os }}-*-results
delete-merged: true
retention-days: 7