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