-
Notifications
You must be signed in to change notification settings - Fork 0
/
circle.yml
184 lines (159 loc) · 6.14 KB
/
circle.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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
# Check https://circleci.com/docs/2.0/ for more details
# for config.yml syntax see https://circleci.com/docs/2.0/configuration-reference/
version: 2.1
# for testing on Windows
# https://circleci.com/docs/2.0/hello-world-windows/
orbs:
win: circleci/windows@1
executors:
mac:
macos:
xcode: "10.1.0"
commands:
early-stop:
description: |
Early halt if this commit is for testing binaries for different platform
Place this command AFTER checkout command because we need to look
at the commit subject text
parameters:
substring:
type: string
description: String to search for in the commit subject to skip build
steps:
- run:
name: Checking OS platform for "<< parameters.substring >>"
command: node ./early-stop "<< parameters.substring >>" || circleci step halt
jobs:
mac-test:
executor: mac
working_directory: ~/repo
steps:
- checkout
- early-stop:
substring: Testing new win32
- early-stop:
substring: Testing new linux
# Download and cache dependencies for the app and for tests
- restore_cache:
keys:
- v{{ .Environment.CACHE_VERSION }}-dependencies-v2-{{ arch }}-{{ .Branch }}-{{ checksum "package.json" }}
# fallback to using the latest cache if no exact match is found
- v{{ .Environment.CACHE_VERSION }}-dependencies-v2-{{ arch }}-{{ .Branch }}-
- run: npm ci
- run: npm install @cypress/commit-message-install
- run: $(npm bin)/commit-message-install --else "npm install cypress"
- run: npx cypress cache path
- save_cache:
paths:
# local NPM modules
- node_modules
# all NPM modules
- ~/.npm
# Cypress binary (or yarn dependencies) on Linux
- ~/Library/Caches/Cypress
key: v{{ .Environment.CACHE_VERSION }}-dependencies-v2-{{ arch }}-{{ .Branch }}-{{ checksum "package.json" }}
- run: $(npm bin)/commit-message-install --else "npm install cypress"
- run: $(npm bin)/run-if npm run cypress:info
- run: $(npm bin)/run-if npm run cypress:version
- run: $(npm bin)/run-if npm run cypress:run
- run: $(npm bin)/run-if npm run check-videos
- run: $(npm bin)/run-if npm run cypress:cache:list
- run:
when: on_success
name: Set status check
command: $(npm bin)/set-status --state success --description "on CircleCI"
- run:
when: on_fail
name: Set status check
command: $(npm bin)/set-status --state failure --description "on CircleCI"
linux-test:
docker:
# find Docker image at https://github.com/cypress-io/cypress-docker-images
- image: cypress/base:10
working_directory: ~/repo
steps:
- checkout
- early-stop:
substring: Testing new win32
- early-stop:
substring: Testing new darwin
# Download and cache dependencies for the app and for tests
- restore_cache:
keys:
- v{{ .Environment.CACHE_VERSION }}-dependencies-{{ arch }}-{{ .Branch }}-{{ checksum "package.json" }}
# fallback to using the latest cache if no exact match is found
- v{{ .Environment.CACHE_VERSION }}-dependencies-{{ arch }}-{{ .Branch }}-
- run: npm ci
- save_cache:
paths:
# local NPM modules
- node_modules
# all NPM modules
- ~/.npm
# Cypress binary (or yarn dependencies) on Linux
- ~/.cache
key: v{{ .Environment.CACHE_VERSION }}-dependencies-{{ arch }}-{{ .Branch }}-{{ checksum "package.json" }}
- run: npm install @cypress/commit-message-install
- run: $(npm bin)/commit-message-install --else "npm install cypress"
- run: $(npm bin)/run-if npm run cypress:version
- run: $(npm bin)/run-if npm run cypress:run
- run: $(npm bin)/run-if npm run check-videos
- run: $(npm bin)/run-if npm run cypress:info
- run: $(npm bin)/run-if npm run cypress:cache:list
- run:
when: on_success
name: Set status check
command: $(npm bin)/set-status --state success --description "on CircleCI"
- run:
when: on_fail
name: Set status check
command: $(npm bin)/set-status --state failure --description "on CircleCI"
win-test:
working_directory: ~/app
executor:
name: win/vs2019
shell: bash.exe
steps:
- checkout
- early-stop:
substring: Testing new linux
- early-stop:
substring: Testing new darwin
- restore_cache:
key: v{{ .Environment.CACHE_VERSION }}-dependencies-{{ arch }}-{{ .Branch }}-{{ checksum "package.json" }}
- run: npm ci
- save_cache:
key: v{{ .Environment.CACHE_VERSION }}-dependencies-{{ arch }}-{{ .Branch }}-{{ checksum "package.json" }}
paths:
# could not use environment variables for some reason
- C:\Users\circleci\AppData\Local\Cypress\Cache
- C:\Users\circleci\AppData\Roaming\npm-cache
- run: npm install @cypress/commit-message-install
- run: $(npm bin)/commit-message-install --else "npm install cypress"
- run: $(npm bin)/run-if npm run cypress:version
- run: $(npm bin)/run-if npm run cypress:run
- run: $(npm bin)/run-if npm run cypress:info
- run: $(npm bin)/run-if npm run cypress:cache:list
- run:
name: check videos
command: $(npm bin)/run-if npm run check-videos
environment:
DEBUG: ok-file
- run:
when: on_success
name: Set status check
command: $(npm bin)/set-status --state success --description "on CircleCI"
- run:
when: on_fail
name: Set status check
command: $(npm bin)/set-status --state failure --description "on CircleCI"
workflows:
version: 2
tests:
jobs:
- win-test:
context: test-runner:commit-status-checks
- linux-test:
context: test-runner:commit-status-checks
- mac-test:
context: test-runner:commit-status-checks