Skip to content

Commit 92d28e9

Browse files
committed
Use dynamic jobs to run examples
This way I no longer need to remember to add an example.
1 parent 9d173e2 commit 92d28e9

File tree

2 files changed

+23
-242
lines changed

2 files changed

+23
-242
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
uses: actions/cache@v2
3131
with:
3232
path: ~/.npm
33-
key: npm
33+
key: npm@${{ matrix.cypress-version }}
3434
- name: Cache TypeScript installs
3535
uses: actions/cache@v2
3636
with:

.github/workflows/examples.yml

Lines changed: 22 additions & 241 deletions
Original file line numberDiff line numberDiff line change
@@ -10,272 +10,53 @@ defaults:
1010
shell: bash
1111

1212
jobs:
13-
browserify-cjs:
13+
find-examples:
1414
runs-on: ubuntu-20.04
15-
container:
16-
image: cypress/base:17.3.0
17-
steps:
18-
- name: Checkout
19-
uses: actions/checkout@v2
20-
- name: Cache NPM modules
21-
uses: actions/cache@v2
22-
with:
23-
path: ~/.npm
24-
key: npm
25-
- name: Cache Cypress binaries
26-
uses: actions/cache@v2
27-
with:
28-
path: ~/.cache/Cypress
29-
key: cypress
30-
# In lack of native support, https://github.com/actions/checkout/issues/172.
31-
- name: Make checkout sparse
32-
run: |
33-
shopt -s extglob
34-
rm -rf examples/!(browserify-cjs)
35-
rm -rf !(examples)
36-
- name: Install NPM modules
37-
working-directory: examples/browserify-cjs
38-
run: npm install
39-
- name: Run Cypress
40-
working-directory: examples/browserify-cjs
41-
run: npx cypress run
42-
43-
browserify-esm:
44-
runs-on: ubuntu-20.04
45-
container:
46-
image: cypress/base:17.3.0
47-
steps:
48-
- name: Checkout
49-
uses: actions/checkout@v2
50-
- name: Cache NPM modules
51-
uses: actions/cache@v2
52-
with:
53-
path: ~/.npm
54-
key: npm
55-
- name: Cache Cypress binaries
56-
uses: actions/cache@v2
57-
with:
58-
path: ~/.cache/Cypress
59-
key: cypress
60-
# In lack of native support, https://github.com/actions/checkout/issues/172.
61-
- name: Make checkout sparse
62-
run: |
63-
shopt -s extglob
64-
rm -rf examples/!(browserify-esm)
65-
rm -rf !(examples)
66-
- name: Install NPM modules
67-
working-directory: examples/browserify-esm
68-
run: npm install
69-
- name: Run Cypress
70-
working-directory: examples/browserify-esm
71-
run: npx cypress run
72-
73-
browserify-ts:
74-
runs-on: ubuntu-20.04
75-
container:
76-
image: cypress/base:17.3.0
77-
steps:
78-
- name: Checkout
79-
uses: actions/checkout@v2
80-
- name: Cache NPM modules
81-
uses: actions/cache@v2
82-
with:
83-
path: ~/.npm
84-
key: npm
85-
- name: Cache Cypress binaries
86-
uses: actions/cache@v2
87-
with:
88-
path: ~/.cache/Cypress
89-
key: cypress
90-
# In lack of native support, https://github.com/actions/checkout/issues/172.
91-
- name: Make checkout sparse
92-
run: |
93-
shopt -s extglob
94-
rm -rf examples/!(browserify-ts)
95-
rm -rf !(examples)
96-
- name: Install NPM modules
97-
working-directory: examples/browserify-ts
98-
run: npm install
99-
- name: Run Cypress
100-
working-directory: examples/browserify-ts
101-
run: npx cypress run
102-
103-
webpack-cjs:
104-
runs-on: ubuntu-20.04
105-
container:
106-
image: cypress/base:17.3.0
107-
steps:
108-
- name: Checkout
109-
uses: actions/checkout@v2
110-
- name: Cache NPM modules
111-
uses: actions/cache@v2
112-
with:
113-
path: ~/.npm
114-
key: npm
115-
- name: Cache Cypress binaries
116-
uses: actions/cache@v2
117-
with:
118-
path: ~/.cache/Cypress
119-
key: cypress
120-
# In lack of native support, https://github.com/actions/checkout/issues/172.
121-
- name: Make checkout sparse
122-
run: |
123-
shopt -s extglob
124-
rm -rf examples/!(webpack-cjs)
125-
rm -rf !(examples)
126-
- name: Install NPM modules
127-
working-directory: examples/webpack-cjs
128-
run: npm install
129-
- name: Run Cypress
130-
working-directory: examples/webpack-cjs
131-
run: npx cypress run
132-
133-
webpack-esm:
134-
runs-on: ubuntu-20.04
135-
container:
136-
image: cypress/base:17.3.0
15+
outputs:
16+
matrix: ${{ steps.set-matrix.outputs.matrix }}
13717
steps:
13818
- name: Checkout
13919
uses: actions/checkout@v2
140-
- name: Cache NPM modules
141-
uses: actions/cache@v2
142-
with:
143-
path: ~/.npm
144-
key: npm
145-
- name: Cache Cypress binaries
146-
uses: actions/cache@v2
147-
with:
148-
path: ~/.cache/Cypress
149-
key: cypress
150-
# In lack of native support, https://github.com/actions/checkout/issues/172.
151-
- name: Make checkout sparse
152-
run: |
153-
shopt -s extglob
154-
rm -rf examples/!(webpack-esm)
155-
rm -rf !(examples)
156-
- name: Install NPM modules
157-
working-directory: examples/webpack-esm
158-
run: npm install
159-
- name: Run Cypress
160-
working-directory: examples/webpack-esm
161-
run: npx cypress run
20+
- id: set-matrix
21+
name: Prepare
22+
run: echo "::set-output name=matrix::$(node -p "JSON.stringify(fs.readdirSync('examples').filter(f => f !== 'readme.md'))")"
23+
- run: npm -v
16224

163-
webpack-ts:
25+
example:
26+
needs: find-examples
16427
runs-on: ubuntu-20.04
16528
container:
16629
image: cypress/base:17.3.0
30+
strategy:
31+
matrix:
32+
example: ${{fromJson(needs.find-examples.outputs.matrix)}}
16733
steps:
16834
- name: Checkout
16935
uses: actions/checkout@v2
17036
- name: Cache NPM modules
17137
uses: actions/cache@v2
17238
with:
17339
path: ~/.npm
174-
key: npm
40+
key: npm@${{ matrix.example }}
17541
- name: Cache Cypress binaries
17642
uses: actions/cache@v2
17743
with:
17844
path: ~/.cache/Cypress
179-
key: cypress
45+
key: cypress-examples
18046
# In lack of native support, https://github.com/actions/checkout/issues/172.
18147
- name: Make checkout sparse
18248
run: |
18349
shopt -s extglob
184-
rm -rf examples/!(webpack-ts)
50+
rm -rf examples/!(${{ matrix.example }})
18551
rm -rf !(examples)
18652
- name: Install NPM modules
187-
working-directory: examples/webpack-ts
53+
working-directory: examples/${{ matrix.example }}
18854
run: npm install
18955
- name: Run Cypress
190-
working-directory: examples/webpack-ts
191-
run: npx cypress run
192-
193-
esbuild-cjs:
194-
runs-on: ubuntu-20.04
195-
container:
196-
image: cypress/base:17.3.0
197-
steps:
198-
- name: Checkout
199-
uses: actions/checkout@v2
200-
- name: Cache NPM modules
201-
uses: actions/cache@v2
202-
with:
203-
path: ~/.npm
204-
key: npm
205-
- name: Cache Cypress binaries
206-
uses: actions/cache@v2
207-
with:
208-
path: ~/.cache/Cypress
209-
key: cypress
210-
# In lack of native support, https://github.com/actions/checkout/issues/172.
211-
- name: Make checkout sparse
56+
working-directory: examples/${{ matrix.example }}
21257
run: |
213-
shopt -s extglob
214-
rm -rf examples/!(esbuild-cjs)
215-
rm -rf !(examples)
216-
- name: Install NPM modules
217-
working-directory: examples/esbuild-cjs
218-
run: npm install
219-
- name: Run Cypress
220-
working-directory: examples/esbuild-cjs
221-
run: npx cypress run
222-
223-
esbuild-esm:
224-
runs-on: ubuntu-20.04
225-
container:
226-
image: cypress/base:17.3.0
227-
steps:
228-
- name: Checkout
229-
uses: actions/checkout@v2
230-
- name: Cache NPM modules
231-
uses: actions/cache@v2
232-
with:
233-
path: ~/.npm
234-
key: npm
235-
- name: Cache Cypress binaries
236-
uses: actions/cache@v2
237-
with:
238-
path: ~/.cache/Cypress
239-
key: cypress
240-
# In lack of native support, https://github.com/actions/checkout/issues/172.
241-
- name: Make checkout sparse
242-
run: |
243-
shopt -s extglob
244-
rm -rf examples/!(esbuild-esm)
245-
rm -rf !(examples)
246-
- name: Install NPM modules
247-
working-directory: examples/esbuild-esm
248-
run: npm install
249-
- name: Run Cypress
250-
working-directory: examples/esbuild-esm
251-
run: npx cypress run
252-
253-
esbuild-ts:
254-
runs-on: ubuntu-20.04
255-
container:
256-
image: cypress/base:17.3.0
257-
steps:
258-
- name: Checkout
259-
uses: actions/checkout@v2
260-
- name: Cache NPM modules
261-
uses: actions/cache@v2
262-
with:
263-
path: ~/.npm
264-
key: npm
265-
- name: Cache Cypress binaries
266-
uses: actions/cache@v2
267-
with:
268-
path: ~/.cache/Cypress
269-
key: cypress
270-
# In lack of native support, https://github.com/actions/checkout/issues/172.
271-
- name: Make checkout sparse
272-
run: |
273-
shopt -s extglob
274-
rm -rf examples/!(esbuild-ts)
275-
rm -rf !(examples)
276-
- name: Install NPM modules
277-
working-directory: examples/esbuild-ts
278-
run: npm install
279-
- name: Run Cypress
280-
working-directory: examples/esbuild-ts
281-
run: npx cypress run
58+
if [[ "${{ matrix.example }}" == ct-* ]]; then
59+
npx cypress run --component
60+
else
61+
npx cypress run --e2e
62+
fi

0 commit comments

Comments
 (0)