1212 release :
1313 types :
1414 - published
15+ schedule :
16+ - cron : 0 0 * * 1-5
1517
1618jobs :
1719 build :
@@ -29,10 +31,12 @@ jobs:
2931 id : node_modules_cache
3032 with :
3133 path : ./node_modules
32- key : ${{ runner.os }}-14-9-9-node_modules-${{ hashFiles('yarn.lock') }}
34+ key : ${{ runner.os }}-14-9-9-6- node_modules-${{ hashFiles('yarn.lock') }}
3335 restore-keys : |
34- ${{ runner.os }}-14-9-9-node_modules-
35- ${{ runner.os }}-14-9-
36+ ${{ runner.os }}-14-12-9-9-6-node_modules-
37+ ${{ runner.os }}-14-12-9-9-
38+ ${{ runner.os }}-14-12-9-
39+ ${{ runner.os }}-14-12-
3640 ${{ runner.os }}-14-
3741 - name : Yarn offline cache
3842 if : steps.node_modules_cache.outputs.cache-hit != 'true'
@@ -62,12 +66,14 @@ jobs:
6266 needs : build
6367 strategy :
6468 matrix :
65- os : [ ubuntu-latest, macos-latest, windows-latest]
69+ os : [ ubuntu-latest, macos-latest, windows-latest ]
6670 node : ["12", "14", "16"]
6771 firebase : ["9"]
6872 firebaseTools : ["9"]
73+ rxjs : ["6", "7"]
74+ ng : ["12"]
6975 fail-fast : false
70- name : Test firebase@${{ matrix.firebase }} firebase-tools@${{ matrix.firebaseTools }} on ${{ matrix.os }} Node.js ${{ matrix.node }}
76+ name : Test firebase@${{ matrix.firebase }} firebase-tools@${{ matrix.firebaseTools }} ng@${{ matrix.ng }} rxjs@${{ matrix.rxjs}} on ${{ matrix.os }} Node.js ${{ matrix.node }}
7177 steps :
7278 - name : Checkout
7379 uses : actions/checkout@v2
@@ -81,49 +87,68 @@ jobs:
8187 uses : actions/cache@v2
8288 with :
8389 path : ./node_modules
84- key : ${{ runner.os }}-${{ matrix.node }}-${{ matrix.firebase }}-${{ matrix.firebaseTools }}-node_modules-${{ hashFiles('yarn.lock') }}
90+ key : ${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}-${{ matrix. firebase }}-${{ matrix.firebaseTools }}-${{ matrix.rxjs }}-node_modules-${{ hashFiles('yarn.lock') }}
8591 restore-keys : |
86- ${{ runner.os }}-${{ matrix.node }}-${{ matrix.firebase }}-${{ matrix.firebaseTools }}-node_modules-
87- ${{ runner.os }}-${{ matrix.node }}-${{ matrix.firebase }}-
92+ ${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}-${{ matrix.firebase }}-${{ matrix.firebaseTools }}-${{ matrix.rxjs }}-node_modules-
93+ ${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}-${{ matrix.firebase }}-${{ matrix.firebaseTools }}-
94+ ${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}-${{ matrix.firebase }}-
95+ ${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}-
8896 ${{ runner.os }}-${{ matrix.node }}-
8997 - name : Yarn offline cache
90- if : steps.node_modules_cache.outputs.cache-hit != 'true'
9198 uses : actions/cache@v2
9299 with :
93100 path : ~/.npm-packages-offline-cache
94101 key : yarn-offline-${{ hashFiles('**/yarn.lock') }}
95102 restore-keys : yarn-offline
96- - name : Install deps
97- if : steps.node_modules_cache.outputs.cache-hit != 'true'
103+ - name : Configure yarn
98104 run : |
99105 yarn config set yarn-offline-mirror ~/.npm-packages-offline-cache
100- yarn install --frozen-lockfile --prefer-offline --ignore-engines
101- yarn add firebase@${{ matrix.firebase }} --prefer-offline --ignore-engines
102- yarn add firebase-tools@${{ matrix.firebaseTools }} --prefer-offline --ignore-engines
106+ yarn config set ignore-engines true
107+ - name : Yarn install
108+ if : steps.node_modules_cache.outputs.cache-hit != 'true'
109+ run : yarn install --frozen-lockfile --prefer-offline
110+ - name : Bump deps
111+ run : |
112+ yarn add firebase@${{ matrix.firebase }}
113+ yarn add firebase-tools@${{ matrix.firebaseTools }}
114+ yarn add rxjs@${{ matrix.rxjs }} --prefer-offline
115+ npx ng update @angular/core@${{ matrix.ng }} @angular/cli@${{ matrix.ng }} --allow-dirty --force || true
103116 - name : Firebase emulator cache
104117 uses : actions/cache@v2
105118 with :
106119 path : ~/.cache/firebase/emulators
107120 key : firebase_emulators
108- - name : ' Download Artifacts'
121+ - name : Download Artifacts
109122 uses : actions/download-artifact@v2
110- - name : Run tests
123+ - name : Relocate Artifacts
124+ run : mv angularfire-${{ github.run_id }} dist
125+ - name : Test node
111126 run : |
112- mv angularfire-${{ github.run_id }} dist
127+ yarn build:jasmine
113128 yarn test:node
129+ - name : Test browser
130+ if : matrix.os == 'ubuntu-latest' && matrix.node == '14' && matrix.firebaseTools == '9'
131+ run : yarn test:chrome-headless
114132
115- contribute :
133+ # TODO dry up
134+ canary :
116135 runs-on : ${{ matrix.os }}
117- name : Contribute ${{ matrix.os }} on Node.js ${{ matrix.node }}
136+ if : ${{ github.ref == 'refs/heads/master' }}
137+ needs : [ 'build', 'test' ]
118138 strategy :
119139 matrix :
120- os : [ ubuntu-latest, macos-latest, windows-latest ]
121- node : ["12", "14", "16"]
140+ os : [ ubuntu-latest ]
141+ node : ["14"]
142+ firebase : ["9", "canary"]
143+ firebaseTools : ["9"]
144+ rxjs : ["7"]
145+ ng : ["12", "next"]
122146 exclude :
123- # we build with this combination, safely skip
124- - os : ubuntu-latest
125- node : 14
147+ # standard configuration
148+ - firebase : 9
149+ ng : 12
126150 fail-fast : false
151+ name : Canary firebase@${{ matrix.firebase }} firebase-tools@${{ matrix.firebaseTools }} ng@${{ matrix.ng }} rxjs@${{ matrix.rxjs}} on ${{ matrix.os }} Node.js ${{ matrix.node }}
127152 steps :
128153 - name : Checkout
129154 uses : actions/checkout@v2
@@ -133,64 +158,85 @@ jobs:
133158 node-version : ${{ matrix.node }}
134159 check-latest : true
135160 - name : node_modules cache
136- uses : actions/cache@v2
137161 id : node_modules_cache
162+ uses : actions/cache@v2
138163 with :
139164 path : ./node_modules
140- key : ${{ runner.os }}-${{ matrix.node }}-9-9 -node_modules-${{ hashFiles('yarn.lock') }}
165+ key : ${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}-${{ matrix.firebase }}-${{ matrix.firebaseTools }}-${{ matrix.rxjs }} -node_modules-${{ hashFiles('yarn.lock') }}
141166 restore-keys : |
142- ${{ runner.os }}-${{ matrix.node }}-9-9-node_modules-
143- ${{ runner.os }}-${{ matrix.node }}-9-
167+ ${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}-${{ matrix.firebase }}-${{ matrix.firebaseTools }}-${{ matrix.rxjs }}-node_modules-
168+ ${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}-${{ matrix.firebase }}-${{ matrix.firebaseTools }}-
169+ ${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}-${{ matrix.firebase }}-
170+ ${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}-
144171 ${{ runner.os }}-${{ matrix.node }}-
145172 - name : Yarn offline cache
146- if : steps.node_modules_cache.outputs.cache-hit != 'true'
147173 uses : actions/cache@v2
148174 with :
149175 path : ~/.npm-packages-offline-cache
150176 key : yarn-offline-${{ hashFiles('**/yarn.lock') }}
151177 restore-keys : yarn-offline
152- - name : Install deps
153- if : steps.node_modules_cache.outputs.cache-hit != 'true'
178+ - name : Configure yarn
154179 run : |
155180 yarn config set yarn-offline-mirror ~/.npm-packages-offline-cache
156- yarn install --frozen-lockfile --prefer-offline --ignore-engines
157- - name : Build
158- run : yarn build
159- # Seeing some flakes on windows, skip for now
160- # https://github.com/angular/angularfire/runs/3593478229
161- # not just windows
162- # https://github.com/angular/angularfire/runs/3593535123
163- # - name: Test
164- # if: runner.os != 'windows'
165- # run: yarn test
181+ yarn config set ignore-engines true
182+ - name : Yarn install
183+ if : steps.node_modules_cache.outputs.cache-hit != 'true'
184+ run : yarn install --frozen-lockfile --prefer-offline
185+ - name : Bump deps
186+ run : |
187+ yarn add firebase@${{ matrix.firebase }}
188+ yarn add firebase-tools@${{ matrix.firebaseTools }}
189+ yarn add rxjs@${{ matrix.rxjs }} --prefer-offline
190+ npx ng update @angular/core@${{ matrix.ng }} @angular/cli@${{ matrix.ng }} --allow-dirty --force || true
191+ - name : Firebase emulator cache
192+ uses : actions/cache@v2
193+ with :
194+ path : ~/.cache/firebase/emulators
195+ key : firebase_emulators
196+ - name : Download Artifacts
197+ uses : actions/download-artifact@v2
198+ - name : Relocate Artifacts
199+ run : mv angularfire-${{ github.run_id }} dist
200+ - name : Test node
201+ run : |
202+ yarn build:jasmine
203+ yarn test:node
204+ - name : Test browser
205+ if : matrix.os == 'ubuntu-latest' && matrix.node == '14' && matrix.firebaseTools == '9'
206+ run : yarn test:chrome-headless
166207
167- headless :
168- runs-on : ubuntu-latest
169- needs : build
170- name : Test firebase@${{ matrix.firebase }} on ${{ matrix.browser }}
208+ contribute :
209+ runs-on : ${{ matrix.os }}
210+ name : Contribute ${{ matrix.os }} on Node.js ${{ matrix.node }}
171211 strategy :
172212 matrix :
173- firebase : ["9"]
174- browser : ["chrome", "firefox"]
213+ os : [ ubuntu-latest, macos-latest, windows-latest ]
214+ node : ["12", "14", "16"]
215+ exclude :
216+ # we build with this combination, safely skip
217+ - os : ubuntu-latest
218+ node : 14
175219 fail-fast : false
176220 steps :
177221 - name : Checkout
178222 uses : actions/checkout@v2
179223 - name : Setup node
180224 uses : actions/setup-node@v2-beta
181225 with :
182- node-version : ' 14 '
226+ node-version : ${{ matrix.node }}
183227 check-latest : true
184228 - name : node_modules cache
185- id : node_modules_cache
186229 uses : actions/cache@v2
230+ id : node_modules_cache
187231 with :
188232 path : ./node_modules
189- key : ${{ runner.os }}-14- ${{ matrix.firebase }}-9 -node_modules-${{ hashFiles('yarn.lock') }}
233+ key : ${{ runner.os }}-${{ matrix.node }}-12-9-9-6 -node_modules-${{ hashFiles('yarn.lock') }}
190234 restore-keys : |
191- ${{ runner.os }}-14-${{ matrix.firebase }}-9-node_modules-
192- ${{ runner.os }}-14-9-
193- ${{ runner.os }}-14-
235+ ${{ runner.os }}-${{ matrix.node }}-12-9-9-6-node_modules-
236+ ${{ runner.os }}-${{ matrix.node }}-12-9-9-
237+ ${{ runner.os }}-${{ matrix.node }}-12-9-
238+ ${{ runner.os }}-${{ matrix.node }}-12-
239+ ${{ runner.os }}-${{ matrix.node }}-
194240 - name : Yarn offline cache
195241 if : steps.node_modules_cache.outputs.cache-hit != 'true'
196242 uses : actions/cache@v2
@@ -202,75 +248,27 @@ jobs:
202248 if : steps.node_modules_cache.outputs.cache-hit != 'true'
203249 run : |
204250 yarn config set yarn-offline-mirror ~/.npm-packages-offline-cache
251+ yarn config set ignore-engines true
205252 yarn install --frozen-lockfile --prefer-offline
206- yarn add firebase@${{ matrix.firebase }} --prefer-offline
207- - name : Firebase emulator cache
208- uses : actions/cache@v2
209- with :
210- path : ~/.cache/firebase/emulators
211- key : firebase_emulators
212- - name : ' Download Artifacts'
213- uses : actions/download-artifact@v2
214- - name : Run tests
215- run : |
216- mv angularfire-${{ github.run_id }} dist
217- yarn test:${{ matrix.browser }}-headless
253+ - name : Build
254+ run : yarn build
255+ - name : Test
256+ # TODO figure out why tests are flaking
257+ continue-on-error : true
258+ run : yarn test
218259
219- # safari:
220- # runs-on: macos-latest
221- # needs: build
222- # name: Test firebase@${{ matrix.firebase }} on safari
223- # strategy:
224- # matrix:
225- # firebase: ["beta"]
226- # fail-fast: false
227- # steps:
228- # - name: Checkout
229- # uses: actions/checkout@v2
230- # - name: Setup node
231- # uses: actions/setup-node@v2-beta
232- # with:
233- # node-version: '14'
234- # check-latest: true
235- # - name: node_modules cache
236- # id: node_modules_cache
237- # uses: actions/cache@v2
238- # with:
239- # path: ./node_modules
240- # key: ${{ runner.os }}-14-${{ matrix.firebase }}-9-node_modules-${{ hashFiles('yarn.lock') }}
241- # restore-keys: |
242- # ${{ runner.os }}-14-${{ matrix.firebase }}-9-node_modules-
243- # ${{ runner.os }}-14-${{ matrix.firebase }}-
244- # ${{ runner.os }}-14-
245- # - name: Yarn offline cache
246- # if: steps.node_modules_cache.outputs.cache-hit != 'true'
247- # uses: actions/cache@v2
248- # with:
249- # path: ~/.npm-packages-offline-cache
250- # key: yarn-offline-${{ hashFiles('**/yarn.lock') }}
251- # restore-keys: yarn-offline
252- # - name: Install deps
253- # if: steps.node_modules_cache.outputs.cache-hit != 'true'
254- # run: |
255- # yarn config set yarn-offline-mirror ~/.npm-packages-offline-cache
256- # yarn install --frozen-lockfile --prefer-offline
257- # yarn add firebase@${{ matrix.firebase }} --prefer-offline
258- # - name: Firebase emulator cache
259- # uses: actions/cache@v2
260- # with:
261- # path: ~/.cache/firebase/emulators
262- # key: firebase_emulators
263- # - name: 'Download Artifacts'
264- # uses: actions/download-artifact@v2
265- # - name: Run tests
266- # run: |
267- # mv angularfire-${{ github.run_id }} dist
268- # yarn test:safari
260+ # Break the branch protection test into a seperate step, so we can manage the matrix more easily
261+ test_and_contribute :
262+ runs-on : ubuntu-latest
263+ name : Branch protection
264+ needs : ['test', 'contribute']
265+ steps :
266+ - run : true
269267
270268 publish :
271269 runs-on : ubuntu-latest
272270 name : Publish (NPM)
273- needs : ['build', 'test', 'headless' ]
271+ needs : ['build', 'test']
274272 if : ${{ github.ref == 'refs/heads/master' || github.event_name == 'release' }}
275273 steps :
276274 - name : Setup node
0 commit comments