-
Notifications
You must be signed in to change notification settings - Fork 781
129 lines (114 loc) · 4 KB
/
CI.yaml
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: CI
on:
- push
- pull_request
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
main-test:
strategy:
fail-fast: false
matrix:
include:
- name: "Linux: Node 18"
os: ubuntu-20.04
node: 18.x
script: npm run test-nolint
- name: "Linux: Node 16"
# Includes 'firefox', 'chromium', and more.
# https://github.com/actions/virtual-environments/blob/ubuntu20/20220410.2/images/linux/Ubuntu2004-Readme.md
os: ubuntu-20.04
node: 16.x
# Run the lint step only once because, in March 2022, GitHub began
# automatically extracting ESLint warnings from build logs and turning them into
# checks shown inline in PR diffs, but doesn't de-duplicate these.
script: npm test
- name: "Linux: Node 14"
os: ubuntu-20.04
node: 14.x
script: npm run test-nolint
- name: "Linux: Node 12"
os: ubuntu-20.04
node: 12.x
script: npm run test-nolint
- name: "Linux: Node 10"
os: ubuntu-20.04
node: 10.x
script: npm run test-nolint
- name: "Integration"
os: ubuntu-20.04
node: 16.x
script: npm run test-integration
- name: "Windows: Node 16"
os: windows-latest
node: 16.x
script: npm run test-nolint
# use macos-12 instead of macos-latest
# as proxy for Intel instead of ARM
# because the older Puppeteer/Chromr for Node 10 compat
# didn't support ARM yet.
- name: "macOS: Node 16"
os: macos-12
node: 16.x
script: npm run test-nolint
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
env:
PUPPETEER_DOWNLOAD_PATH: "${{ github.workspace }}/.puppeteer_download"
FORCE_COLOR: "1"
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
if: ${{ runner.os != 'Windows' }}
with:
path: |
~/.npm
${{ github.workspace }}/.puppeteer_download
key: ${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
- name: Use Node.js ${{ matrix.node }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- run: npm ci
- name: Tests
run: ${{ matrix.script }}
# To reproduce SpiderMonkey builds locally:
#
# 1. Run the build the same way you normally do.
# ```
# nobody@nodejs-isolated:/qunit$ npm run build
# ```
# 2. Start a temporary Docker container using the official Ubuntu image from DockerHub,
# and mount the current working directory in it:
# ```
# you@host:/qunit$ MNT=$(basename "$PWD"); docker run --rm --interactive --tty --mount type=bind,source="$PWD",target="/$MNT",readonly --entrypoint /bin/sh ubuntu:focal -c "cd /$MNT;bash"
# ```
# 3. Run the following from the Docker container's bash prompt:
# ```
# root@ubuntu-tmp/qunit$ apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libmozjs-68-dev
# root@ubuntu-tmp/qunit$ js68 test/mozjs.js
# root@ubuntu-tmp/qunit$ js68 test/benchmark/index-mozjs.js
# ```
sm-test:
name: SpiderMonkey
runs-on: ubuntu-20.04
env:
PUPPETEER_DOWNLOAD_PATH: "${{ github.workspace }}/.puppeteer_download"
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
~/.npm
${{ github.workspace }}/.puppeteer_download
key: ${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
- name: Use Node.js 16
uses: actions/setup-node@v4
with:
node-version: 16.x
- name: Install mozjs
run: |
sudo apt-fast install -y libmozjs-68-dev
- run: npm ci
- run: npm run build
- name: Tests
run: js68 test/mozjs.js