-
Notifications
You must be signed in to change notification settings - Fork 256
150 lines (144 loc) · 5.55 KB
/
ci.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
145
146
147
148
149
150
name: ci
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
env:
NODE_LATEST: 23.x
PLATFORM: ubuntu-latest
CI: true
# the LANG (used by the Intl API, which we use for some of the number
# formatting) is set in the run scripts. This works everywhere, except on
# windows. So, especially for windows ...
LANG: en_US.UTF-8
# Same for NODE_OPTIONS, just for windows:
NODE_OPTIONS: --no-warnings
defaults:
run:
shell: bash
jobs:
check-linux:
strategy:
fail-fast: false
matrix:
node-version: [18.x, 23.x]
platform: [ubuntu-latest]
runs-on: ${{matrix.platform}}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2
if: github.event_name == 'pull_request' && matrix.node-version == env.NODE_LATEST
- uses: actions/checkout@v4
with:
fetch-depth: 1
if: github.event_name != 'pull_request' || matrix.node-version != env.NODE_LATEST
- uses: actions/cache@v4
with:
path: node_modules
key: ${{matrix.node-version}}@${{matrix.platform}}-build-${{hashFiles('package-lock.json')}}
restore-keys: |
${{matrix.node-version}}@${{matrix.platform}}-build-
- uses: actions/setup-node@v4
with:
node-version: ${{matrix.node-version}}
- name: install & build
run: |
sudo apt-get update
sudo apt-get install graphviz
npm install
npm run build
- name: lint (run on node ${{env.NODE_LATEST}} only)
if: matrix.node-version == env.NODE_LATEST
run: npm run lint
- name: forbidden dependency check
run: npm run depcruise
- name: test coverage (run on node ${{env.NODE_LATEST}} only)
if: matrix.node-version == env.NODE_LATEST
run: npm run test:cover
- name: emit coverage results & depcruise result to step summary
if: always() && matrix.node-version == env.NODE_LATEST
run: |
echo '## Code coverage' >> $GITHUB_STEP_SUMMARY
node tools/istanbul-json-summary-to-markdown.mjs < coverage/coverage-summary.json >> $GITHUB_STEP_SUMMARY
yarn --silent depcruise --output-type markdown >> $GITHUB_STEP_SUMMARY
- name: on pushes to the default branch emit graph to the step summary
if: always() && matrix.node-version == env.NODE_LATEST && github.event_name == 'push' && github.ref_name == github.event.repository.default_branch
run: |
echo '## Visual overview' >> $GITHUB_STEP_SUMMARY
echo '```mermaid' >> $GITHUB_STEP_SUMMARY
yarn --silent depcruise:graph:mermaid >> $GITHUB_STEP_SUMMARY
echo '' >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
- name: on pull requests emit depcruise graph to step summary with changed modules highlighted
if: always() && matrix.node-version == env.NODE_LATEST && github.event_name == 'pull_request' && github.ref_name != github.event.repository.default_branch
run: |
echo '## Visual diff' >> $GITHUB_STEP_SUMMARY
echo Modules changed in this PR have a fluorescent green color. All other modules in the graph are those directly or indirectly affected by changes in the green modules. >> $GITHUB_STEP_SUMMARY
echo '```mermaid' >> $GITHUB_STEP_SUMMARY
SHA=${{github.event.pull_request.base.sha}} yarn --silent depcruise:graph:mermaid:diff >> $GITHUB_STEP_SUMMARY
echo '' >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
- name: regular test (run on node != ${{env.NODE_LATEST}} only)
if: matrix.node-version != env.NODE_LATEST
run: npm test
check-windows:
env:
PLATFORM: windows-latest
NO_COLOR: 1
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: node_modules
key: ${{env.NODE_LATEST}}@${{env.PLATFORM}}-build-${{hashFiles('package.json')}}
restore-keys: |
${{env.NODE_LATEST}}@${{env.PLATFORM}}-build-
- uses: actions/setup-node@v4
with:
node-version: ${{env.NODE_LATEST}}
- name: install & build
run: |
choco install graphviz
npm install
npm run build
- run: npm run depcruise
- run: npx mocha --invert --fgrep "#do-not-run-on-windows"
# for #reasons the run step takes forever to complete on the ci - while
# running fine locally. Something to figure out another time.
# check-berry-integration:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - uses: actions/cache@v4
# with:
# path: |
# .yarn
# .yarnrc.yml
# .pnp.js
# yarn.lock
# key: ${{env.NODE_LATEST}}@${{env.PLATFORM}}-build-${{hashFiles('package.json')}}
# restore-keys: |
# ${{env.NODE_LATEST}}@${{env.PLATFORM}}-build-
# - uses: actions/setup-node@v4
# with:
# node-version: ${{env.NODE_LATEST}}
# - name: install & build
# run: |
# rm -f .npmrc
# yarn set version berry
# YARN_ENABLE_IMMUTABLE_INSTALLS=false yarn
# - name: forbidden dependency check
# run: |
# yarn --version
# yarn depcruise
# # testing doesn't work as the tests are esm and berry, with pnp enabled,
# # doesn't support esm yet.
# # - name: test coverage
# # run: |
# # node --version
# # yarn --version
# # yarn test:cover