-
Notifications
You must be signed in to change notification settings - Fork 120
141 lines (116 loc) · 3.5 KB
/
lint-and-test.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
name: CI Lint And Test
on:
push:
branches: [ main ]
pull_request:
env:
GITHUB_SHA: ${{ github.event.pull_request.head.sha }}
TARBALL_PATH: test/e2e/spectaql.tgz
jobs:
prepare-node:
name: Prepare Node
runs-on: ubuntu-latest
outputs:
build-node-version: ${{ steps.setup-node.outputs.node-version }}
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
id: setup-node
uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
cache: 'yarn'
- run: yarn install
lint:
name: Lint
runs-on: ubuntu-latest
needs: prepare-node
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
cache: 'yarn'
- run: yarn install
- run: yarn lint:quiet
build-e2e-package:
name: Build E2E Package
runs-on: ubuntu-latest
needs: prepare-node
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
id: setup-node
uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
cache: 'yarn'
- name: Cache Package Build
uses: actions/cache@v3
with:
# We'll cache this file
path: ${{ env.TARBALL_PATH }}
key: ${{ runner.os }}-node-${{ needs.prepare-node.outputs.build-node-version }}-${{ env.GITHUB_SHA }}
- run: yarn install
- run: npm run test-e2e:build
unit-test-and-package-test:
name: Unit Test & Package Test
runs-on: ubuntu-latest
needs:
- prepare-node
- build-e2e-package
strategy:
fail-fast: false
matrix:
node-version: [16, 18, 20, 22]
# Not needed anymore/right now:
# include:
# - node-version: 14
# npm-version: 7
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
id: setup-node
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: 'yarn'
- name: Test vendor package grunt-compile-handlebars
uses: ./.github/actions/test-vendor-package
with:
package_name: grunt-compile-handlebars
- name: Test vendor package grunt-prettify
uses: ./.github/actions/test-vendor-package
with:
package_name: grunt-prettify
- name: Test vendor package reorient-css
uses: ./.github/actions/test-vendor-package
with:
package_name: reorient-css
# MUST GO AFTER reorient-css
- name: Test vendor package resource-embedder
uses: ./.github/actions/test-vendor-package
with:
package_name: resource-embedder
# MUST GO AFTER resource-embedder
- name: Test vendor package grunt-embed
uses: ./.github/actions/test-vendor-package
with:
package_name: grunt-embed
- name: Restore Cached Package Build
uses: actions/cache@v3
with:
# This is the file to cache / restore
path: ${{ env.TARBALL_PATH }}
key: ${{ runner.os }}-node-${{ needs.prepare-node.outputs.build-node-version }}-${{ env.GITHUB_SHA }}
# Some versions of Node (like Node 14) ships with a version of NPM that does not work for us
# so we need to install a specific version
- name: Optionally update NPM if needed
if: ${{ matrix.npm-version }}
run: npm i -g npm@${{ matrix.npm-version }}
- run: yarn test-e2e:install-and-test
- run: yarn install
- run: yarn test
- name: Make sure things install using NPM
run: rm -rf node_modules && npm install