-
Notifications
You must be signed in to change notification settings - Fork 260
155 lines (148 loc) · 4.45 KB
/
test.yml
File metadata and controls
155 lines (148 loc) · 4.45 KB
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
145
146
147
148
149
150
151
152
153
154
155
---
# This workflow is triggered by ci.yml workflow or manually
name: Tests / Code Coverage
permissions:
contents: read
"on":
workflow_call:
workflow_dispatch:
jobs:
build_all-apps:
name: Build All ev-node Binaries
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6.0.2
- name: set up go
uses: actions/setup-go@v6.3.0
with:
go-version-file: ./go.mod
- name: Install just
uses: extractions/setup-just@v3
- name: Build all ev-node binaries
run: just build-all
go_mod_tidy_check:
name: Go Mod Tidy Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/setup-go@v6.3.0
with:
go-version-file: ./go.mod
- uses: extractions/setup-just@v3
- run: just deps
- name: check for diff
run: git diff --exit-code
unit_test:
name: Run Unit Tests
runs-on: ubuntu-latest
permissions:
contents: read
packages: read
steps:
- uses: actions/checkout@v6.0.2
- name: set up go
uses: actions/setup-go@v6.3.0
with:
go-version-file: ./go.mod
- name: Install just
uses: extractions/setup-just@v3
- name: Run unit test
run: just test-cover
- name: Upload unit test coverage report
uses: actions/upload-artifact@v7.0.0
with:
name: unit-test-coverage-report-${{ github.sha }}
path: ./coverage.txt
integration_test:
name: Run Integration Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6.0.2
- name: set up go
uses: actions/setup-go@v6.3.0
with:
go-version-file: ./go.mod
- name: Install just
uses: extractions/setup-just@v3
- name: Run integration test
run: just test-integration-cover
- name: Upload integration test coverage report
uses: actions/upload-artifact@v7.0.0
with:
name: integration-test-coverage-report-${{ github.sha }}
path: ./node/coverage.txt
e2e-tests:
name: Run E2E System Tests
needs: build_all-apps
runs-on: ubuntu-latest
permissions:
contents: read
packages: read
steps:
- uses: actions/checkout@v6.0.2
- name: set up go
uses: actions/setup-go@v6.3.0
with:
go-version-file: ./go.mod
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
- name: Build evstack:local-dev (cached)
uses: docker/build-push-action@v7
with:
context: .
file: apps/testapp/Dockerfile
load: true
tags: evstack:local-dev
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Install just
uses: extractions/setup-just@v3
- name: E2E Tests
run: |
mkdir -p .artifacts/e2e-server-logs
EV_E2E_LOG_DIR="${{ github.workspace }}/.artifacts/e2e-server-logs" just test-e2e
- name: Upload E2E server logs
if: failure()
uses: actions/upload-artifact@v7.0.0
with:
name: e2e-server-logs-${{ github.sha }}
path: ./.artifacts/e2e-server-logs
if-no-files-found: warn
evm-tests:
name: Run EVM Execution Tests
needs: build_all-apps
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6.0.2
- name: set up go
uses: actions/setup-go@v6.3.0
with:
go-version-file: ./go.mod
- name: Install just
uses: extractions/setup-just@v3
- name: EVM Tests
run: just test-evm
combine_and_upload_coverage:
name: Combine and Upload Coverage
needs: [unit_test, integration_test]
runs-on: ubuntu-latest
permissions:
actions: read
steps:
- uses: actions/checkout@v6.0.2
- name: Download unit test coverage report
uses: actions/download-artifact@v8.0.1
with:
name: unit-test-coverage-report-${{ github.sha }}
path: ./unit-coverage
- name: Download integration test coverage report
uses: actions/download-artifact@v8.0.1
with:
name: integration-test-coverage-report-${{ github.sha }}
path: ./integration-coverage
- name: Upload combined coverage report
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./unit-coverage/coverage.txt,./integration-coverage/coverage.txt
flags: combined