-
-
Notifications
You must be signed in to change notification settings - Fork 20
139 lines (114 loc) · 3.7 KB
/
Copy pathci.yml
File metadata and controls
139 lines (114 loc) · 3.7 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
name: Continuous Integration
on: pull_request
permissions:
id-token: write
contents: read
actions: read
checks: write
pull-requests: write
jobs:
build:
name: Build
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16.x, 18.x, 20.x, 22.x]
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Use Node ${{ matrix.node-version }}
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
- uses: actions/cache@v4
with:
path: '**/node_modules'
key: ${{ runner.os }}-modules-${{ hashFiles('**/pnpm-lock.yaml') }}
- name: Remove Vitest If Needed
if: ${{ matrix.node-version == '16.x' }}
run: rm -rf packages/doubles/vitest
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 8.15.9
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build
if: ${{ matrix.node-version != '16.x' }}
run: pnpm build
- name: Build (Node 16.x)
if: ${{ matrix.node-version == '16.x' }}
run: pnpm lerna run build --stream --ignore @suites/doubles.vitest
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Setup Node
uses: actions/setup-node@v6
with:
node-version: '22.x'
- uses: actions/cache@v4
with:
path: '**/node_modules'
key: ${{ runner.os }}-modules-${{ hashFiles('**/pnpm-lock.yaml') }}
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 8.15.9
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Lint
run: pnpm lint
- name: Check links
run: pnpm validate-tsdoc-links
test:
name: Test
runs-on: ubuntu-latest
strategy:
matrix:
project: ['doubles.jest', 'doubles.sinon', 'core.unit', 'doubles.vitest', 'di.nestjs', 'di.inversify', 'unit']
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Setup Node
uses: actions/setup-node@v6
- uses: actions/cache@v4
with:
path: '**/node_modules'
key: ${{ runner.os }}-modules-${{ hashFiles('**/pnpm-lock.yaml') }}
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 8.15.9
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Create Coverage Directory
run: mkdir -p ${{ github.workspace }}/coverage
- name: Test
run: pnpm lerna exec pnpm test --scope @suites/${{ matrix.project }}
env:
JEST_JUNIT_OUTPUT_NAME: ${{ matrix.project }}.xml
JEST_JUNIT_OUTPUT_DIR: ${{ github.workspace }}/test-reports
JUNIT_OUTPUT_NAME: ${{ matrix.project }}
JUNIT_OUTPUT_DIR: ${{ github.workspace }}/test-reports
COVERAGE_DIR: ${{ github.workspace }}/coverage
COVERAGE_FILE: coverage-${{ matrix.project }}.xml
- name: Tests Results
uses: dorny/test-reporter@v2
if: always()
with:
name: Tests Results (${{ matrix.project }})
path: ${{ github.workspace }}/test-reports/${{ matrix.project }}.xml
reporter: jest-junit
fail-on-error: false
- name: Upload Report to Codecov
uses: codecov/codecov-action@v5
with:
name: codecov-umbrella
flags: ${{ matrix.project }}
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true
files: ${{ github.workspace }}/coverage/coverage-${{ matrix.project }}.xml
verbose: true