@@ -17,12 +17,264 @@ concurrency:
1717 group : ${{ github.workflow }}-${{ github.event_name }}-${{ github.event_name == 'push' && github.sha || github.ref }}
1818 cancel-in-progress : true
1919
20+ defaults :
21+ run :
22+ shell : bash
23+
2024jobs :
21- js-test-and-release :
22- uses : ipdxco/unified-github-workflows/.github/workflows/js-test-and-release.yml@v1.0
23- secrets :
24- DOCKER_TOKEN : ${{ secrets.DOCKER_TOKEN }}
25- DOCKER_USERNAME : ${{ secrets.DOCKER_USERNAME }}
26- NPM_TOKEN : ${{ secrets.NPM_TOKEN }}
27- UCI_GITHUB_TOKEN : ${{ secrets.UCI_GITHUB_TOKEN }}
28- CODECOV_TOKEN : ${{ secrets.CODECOV_TOKEN }}
25+
26+ build :
27+ runs-on : ubuntu-latest
28+ steps :
29+ - uses : actions/checkout@v5
30+ - uses : pnpm/action-setup@v4
31+ - uses : actions/setup-node@v4
32+ with :
33+ node-version : lts/*
34+ - uses : ipfs/aegir/actions/cache-node-modules@main
35+
36+ check :
37+ needs : build
38+ runs-on : ubuntu-latest
39+ steps :
40+ - uses : actions/checkout@v5
41+ - uses : pnpm/action-setup@v4
42+ - uses : actions/setup-node@v4
43+ with :
44+ node-version : lts/*
45+ - uses : ipfs/aegir/actions/cache-node-modules@main
46+ - run : pnpm run --if-present lint
47+ - run : pnpm run --if-present dep-check
48+ - run : pnpm run --if-present doc-check
49+ - run : pnpm run --if-present spell-check
50+
51+ test-node :
52+ needs : build
53+ runs-on : ${{ matrix.os }}
54+ strategy :
55+ matrix :
56+ os : [windows-latest, ubuntu-latest, macos-latest]
57+ node : [lts/*]
58+ fail-fast : true
59+ steps :
60+ - uses : actions/checkout@v5
61+ - uses : pnpm/action-setup@v4
62+ - uses : actions/setup-node@v4
63+ with :
64+ node-version : ${{ matrix.node }}
65+ - uses : ipfs/aegir/actions/cache-node-modules@main
66+ - run : pnpm run --if-present test:node
67+ - uses : codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0
68+ with :
69+ flags : node
70+ files : .coverage/*,packages/*/.coverage/*
71+ token : ${{ secrets.CODECOV_TOKEN }}
72+ fail_ci_if_error : false
73+ disable_safe_directory : ${{ runner.os == 'Windows' }} # NOTE: The workspace on Windows runners is on the C: drive and the codecov action is unable to lock the git directory on it
74+
75+ test-chrome :
76+ needs : build
77+ runs-on : ubuntu-latest
78+ steps :
79+ - uses : actions/checkout@v5
80+ - uses : pnpm/action-setup@v4
81+ - uses : actions/setup-node@v4
82+ with :
83+ node-version : lts/*
84+ - uses : ipfs/aegir/actions/cache-node-modules@main
85+ - run : pnpm run --if-present test:chrome
86+ - uses : codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0
87+ with :
88+ flags : chrome
89+ files : .coverage/*,packages/*/.coverage/*
90+ token : ${{ secrets.CODECOV_TOKEN }}
91+ fail_ci_if_error : false
92+
93+ test-chrome-webworker :
94+ needs : build
95+ runs-on : ubuntu-latest
96+ steps :
97+ - uses : actions/checkout@v5
98+ - uses : pnpm/action-setup@v4
99+ - uses : actions/setup-node@v4
100+ with :
101+ node-version : lts/*
102+ - uses : ipfs/aegir/actions/cache-node-modules@main
103+ - run : pnpm run --if-present test:chrome-webworker
104+ - uses : codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0
105+ with :
106+ flags : chrome-webworker
107+ files : .coverage/*,packages/*/.coverage/*
108+ token : ${{ secrets.CODECOV_TOKEN }}
109+ fail_ci_if_error : false
110+
111+ test-firefox :
112+ needs : build
113+ runs-on : ubuntu-latest
114+ steps :
115+ - uses : actions/checkout@v5
116+ - uses : pnpm/action-setup@v4
117+ - uses : actions/setup-node@v4
118+ with :
119+ node-version : lts/*
120+ - uses : ipfs/aegir/actions/cache-node-modules@main
121+ - run : pnpm run --if-present test:firefox
122+ - uses : codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0
123+ with :
124+ flags : firefox
125+ files : .coverage/*,packages/*/.coverage/*
126+ token : ${{ secrets.CODECOV_TOKEN }}
127+ fail_ci_if_error : false
128+
129+ test-firefox-webworker :
130+ needs : build
131+ runs-on : ubuntu-latest
132+ steps :
133+ - uses : actions/checkout@v5
134+ - uses : pnpm/action-setup@v4
135+ - uses : actions/setup-node@v4
136+ with :
137+ node-version : lts/*
138+ - uses : ipfs/aegir/actions/cache-node-modules@main
139+ - run : pnpm run --if-present test:firefox-webworker
140+ - uses : codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0
141+ with :
142+ flags : firefox-webworker
143+ files : .coverage/*,packages/*/.coverage/*
144+ token : ${{ secrets.CODECOV_TOKEN }}
145+ fail_ci_if_error : false
146+
147+ test-webkit :
148+ needs : build
149+ runs-on : ${{ matrix.os }}
150+ strategy :
151+ matrix :
152+ os : [ubuntu-latest, macos-latest]
153+ node : [lts/*]
154+ fail-fast : true
155+ steps :
156+ - uses : actions/checkout@v5
157+ - uses : pnpm/action-setup@v4
158+ - uses : actions/setup-node@v4
159+ with :
160+ node-version : lts/*
161+ - uses : ipfs/aegir/actions/cache-node-modules@main
162+ - run : npx playwright install-deps
163+ - run : pnpm run --if-present test:webkit
164+ - uses : codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0
165+ with :
166+ flags : webkit
167+ files : .coverage/*,packages/*/.coverage/*
168+ token : ${{ secrets.CODECOV_TOKEN }}
169+ fail_ci_if_error : false
170+ disable_safe_directory : ${{ runner.os == 'Windows' }} # NOTE: The workspace on Windows runners is on the C: drive and the codecov action is unable to lock the git directory on it
171+
172+ test-webkit-webworker :
173+ needs : build
174+ runs-on : ${{ matrix.os }}
175+ strategy :
176+ matrix :
177+ os : [ubuntu-latest, macos-latest]
178+ node : [lts/*]
179+ fail-fast : true
180+ steps :
181+ - uses : actions/checkout@v5
182+ - uses : pnpm/action-setup@v4
183+ - uses : actions/setup-node@v4
184+ with :
185+ node-version : lts/*
186+ - uses : ipfs/aegir/actions/cache-node-modules@main
187+ - run : npx playwright install-deps
188+ - run : pnpm run --if-present test:webkit-webworker
189+ - uses : codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0
190+ with :
191+ flags : webkit-webworker
192+ files : .coverage/*,packages/*/.coverage/*
193+ token : ${{ secrets.CODECOV_TOKEN }}
194+ fail_ci_if_error : false
195+ disable_safe_directory : ${{ runner.os == 'Windows' }} # NOTE: The workspace on Windows runners is on the C: drive and the codecov action is unable to lock the git directory on it
196+
197+ test-electron-main :
198+ needs : build
199+ runs-on : ubuntu-latest
200+ steps :
201+ - uses : actions/checkout@v5
202+ - uses : pnpm/action-setup@v4
203+ - uses : actions/setup-node@v4
204+ with :
205+ node-version : lts/*
206+ - uses : ipfs/aegir/actions/cache-node-modules@main
207+ - run : npx xvfb-maybe pnpm run --if-present test:electron-main
208+ - uses : codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0
209+ with :
210+ flags : electron-main
211+ files : .coverage/*,packages/*/.coverage/*
212+ token : ${{ secrets.CODECOV_TOKEN }}
213+ fail_ci_if_error : false
214+
215+ test-electron-renderer :
216+ needs : build
217+ runs-on : ubuntu-latest
218+ steps :
219+ - uses : actions/checkout@v5
220+ - uses : pnpm/action-setup@v4
221+ - uses : actions/setup-node@v4
222+ with :
223+ node-version : lts/*
224+ - uses : ipfs/aegir/actions/cache-node-modules@main
225+ - run : npx xvfb-maybe pnpm run --if-present test:electron-renderer
226+ - uses : codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0
227+ with :
228+ flags : electron-renderer
229+ files : .coverage/*,packages/*/.coverage/*
230+ token : ${{ secrets.CODECOV_TOKEN }}
231+ fail_ci_if_error : false
232+
233+ release-check :
234+ needs : [test-node, test-chrome, test-chrome-webworker, test-firefox, test-firefox-webworker, test-webkit, test-webkit-webworker, test-electron-main, test-electron-renderer]
235+ runs-on : ubuntu-latest
236+ if : github.event_name == 'push' || github.event_name == 'workflow_dispatch'
237+ outputs :
238+ release : ${{ steps.branch.outputs.release }}
239+ steps :
240+ - id : branch
241+ name : Check if the branch is a release branch
242+ env :
243+ BRANCHES : ${{ inputs.branches }}
244+ REF : ${{ github.ref }}
245+ uses : actions/github-script@v7
246+ with :
247+ script : |
248+ const branches = JSON.parse(process.env.BRANCHES);
249+ const ref = process.env.REF.replace(/^refs\/heads\//, '');
250+ const release = branches.some(b => {
251+ const regexPattern = b.replace(/\*/g, '.*');
252+ const regex = new RegExp(`^${regexPattern}$`);
253+ return regex.test(ref);
254+ });
255+ console.log(`This is a release branch: ${release}`);
256+ core.setOutput('release', release);
257+
258+ release :
259+ needs : [release-check]
260+ runs-on : ubuntu-latest
261+ if : needs.release-check.outputs.release == 'true'
262+ steps :
263+ - uses : actions/checkout@v5
264+ with :
265+ fetch-depth : 0
266+ persist-credentials : false
267+ - uses : pnpm/action-setup@v4
268+ - uses : actions/setup-node@v4
269+ with :
270+ node-version : lts/*
271+ - uses : ipfs/aegir/actions/cache-node-modules@main
272+ - uses : ipfs/aegir/actions/docker-login@main
273+ with :
274+ docker-token : ${{ secrets.DOCKER_TOKEN }}
275+ docker-username : ${{ secrets.DOCKER_USERNAME }}
276+ docker-registry : ${{ inputs.docker-registry }}
277+ - run : pnpm run --if-present release
278+ env :
279+ GITHUB_TOKEN : ${{ secrets.UCI_GITHUB_TOKEN || github.token }}
280+ NPM_TOKEN : ${{ secrets.NPM_TOKEN }}
0 commit comments