Skip to content

Commit da8c660

Browse files
authored
chore(): GitHub action revamp (#2701)
* Github Actions for releases and more pure tests * Randomize filenames in storage tests * Test Node 10, 12, and 14
1 parent 37d1437 commit da8c660

26 files changed

+175
-114
lines changed

.github/workflows/test.yml

+111-24
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,120 @@
1-
name: Unit tests
1+
name: Test and publish
22

33
on:
44
push:
55
branches:
6-
- master
7-
pull_request:
6+
- "**"
7+
paths-ignore:
8+
- "**/*.md"
9+
release:
10+
types:
11+
- published
812

913
jobs:
1014
build:
1115
runs-on: ubuntu-latest
16+
name: Build
1217
steps:
13-
- uses: actions/checkout@v2
14-
- uses: actions/setup-node@v2-beta
15-
with:
16-
node-version: '12'
17-
check-latest: true
18-
- name: yarn cache dir
19-
id: yarn-cache-dir-path
20-
run: echo "::set-output name=dir::$(yarn cache dir)"
21-
- uses: actions/cache@v2
22-
with:
23-
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
24-
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
25-
restore-keys: |
26-
${{ runner.os }}-yarn-
27-
${{ runner.os }}-
28-
- name: yarn test
29-
run: |
30-
yarn install --frozen-lockfile --prefer-offline
31-
yarn lint
32-
yarn build
33-
yarn test:all
18+
- name: Checkout
19+
uses: actions/checkout@v2
20+
- name: Setup node
21+
uses: actions/setup-node@v2-beta
22+
with:
23+
node-version: '14'
24+
- name: Get cache directory
25+
id: yarn-cache-dir-path
26+
run: echo "::set-output name=dir::$(yarn cache dir)"
27+
- name: Use yarn cache
28+
uses: actions/cache@v2
29+
with:
30+
path: |
31+
${{ steps.yarn-cache-dir-path.outputs.dir }}
32+
~/.npm-packages-offline-cache
33+
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
34+
restore-keys: |
35+
${{ runner.os }}-yarn-
36+
${{ runner.os }}-
37+
- name: Install deps
38+
run: |
39+
yarn config set yarn-offline-mirror ~/.npm-packages-offline-cache
40+
yarn config set yarn-offline-mirror-pruning true
41+
yarn install --frozen-lockfile --prefer-offline
42+
- name: Build
43+
id: yarn-pack-dir
44+
run: ./tools/build.sh
45+
- name: 'Upload Artifact'
46+
uses: actions/upload-artifact@v2
47+
with:
48+
name: angularfire-${{ github.run_id }}
49+
path: |
50+
angularfire.tgz
51+
publish.sh
52+
unpack.sh
53+
retention-days: 1
54+
test:
55+
runs-on: ubuntu-latest
56+
needs: build
57+
strategy:
58+
matrix:
59+
node: ["10", "12", "14"]
60+
name: Test Node.js ${{ matrix.node }} (Ubuntu)
61+
steps:
62+
- name: Checkout
63+
uses: actions/checkout@v2
64+
- name: Setup node
65+
uses: actions/setup-node@v2-beta
66+
with:
67+
node-version: ${{ matrix.node }}
68+
check-latest: true
69+
- name: Get cache directory
70+
id: yarn-cache-dir-path
71+
run: echo "::set-output name=dir::$(yarn cache dir)"
72+
- name: Use yarn cache
73+
uses: actions/cache@v2
74+
with:
75+
path: |
76+
${{ steps.yarn-cache-dir-path.outputs.dir }}
77+
~/.npm-packages-offline-cache
78+
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
79+
restore-keys: |
80+
${{ runner.os }}-yarn-
81+
${{ runner.os }}-
82+
- name: Use Firebase emulator cache
83+
uses: actions/cache@v2
84+
with:
85+
path: ~/.cache/firebase/emulators
86+
key: firebase_emulators
87+
- name: Install deps
88+
run: |
89+
yarn config set yarn-offline-mirror ~/.npm-packages-offline-cache
90+
yarn config set yarn-offline-mirror-pruning true
91+
yarn install --frozen-lockfile --prefer-offline
92+
- name: 'Download Artifacts'
93+
uses: actions/download-artifact@v2
94+
- name: Expand Artifact
95+
run: |
96+
mkdir -p dist/packages-dist
97+
chmod +x angularfire-${{ github.run_id }}/unpack.sh
98+
./angularfire-${{ github.run_id }}/unpack.sh
99+
- name: Run tests
100+
run: yarn test:all
101+
publish:
102+
runs-on: ubuntu-latest
103+
name: Publish (NPM)
104+
needs: test
105+
if: ${{ github.ref == 'refs/heads/master' || github.event_name == 'release' }}
106+
steps:
107+
- name: Setup node
108+
uses: actions/setup-node@v2-beta
109+
with:
110+
node-version: '14'
111+
registry-url: 'https://registry.npmjs.org'
112+
- name: 'Download Artifacts'
113+
uses: actions/download-artifact@v2
114+
- name: Publish
115+
run: |
116+
cd ./angularfire-${{ github.run_id }}/
117+
chmod +x publish.sh
118+
./publish.sh
119+
env:
120+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

.gitignore

+4-1
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,7 @@ tools/build.js
1919
coverage
2020
*.log
2121
api-*.json
22-
src/**/base.ts
22+
src/**/base.ts
23+
angularfire.tgz
24+
unpack.sh
25+
publish.sh

cloudbuild.yaml

-29
This file was deleted.

src/analytics/analytics.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { TestBed } from '@angular/core/testing';
22
import { AngularFireModule, FirebaseApp } from '@angular/fire';
3-
import { AngularFireAnalytics, AngularFireAnalyticsModule } from './public_api';
3+
import { AngularFireAnalytics, AngularFireAnalyticsModule } from '@angular/fire/analytics';
44
import { COMMON_CONFIG } from '../test-config';
55
import { rando } from '../firestore/utils.spec';
66

src/analytics/analytics.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -144,10 +144,11 @@ export class AngularFireAnalytics {
144144

145145
const analytics = of(undefined).pipe(
146146
observeOn(new ɵAngularFireSchedulers(zone).outsideAngular),
147-
switchMap(() => import('firebase/analytics')),
148-
switchMap(() => firebase.analytics.isSupported().then(it => it, () => false)),
147+
switchMap(() => isPlatformBrowser(platformId) ? zone.runOutsideAngular(() => import('firebase/analytics')) : EMPTY),
148+
// SEMVER can switch to isSupported() when we only target v8
149+
// switchMap(() => firebase.analytics.isSupported().then(it => it, () => false)),
149150
// TODO server-side investigate use of the Universal Analytics API
150-
switchMap(supported => supported ? of(undefined) : EMPTY),
151+
// switchMap(supported => supported ? of(undefined) : EMPTY),
151152
map(() => {
152153
return ɵfetchInstance(`analytics`, 'AngularFireAnalytics', app, () => {
153154
const analytics = app.analytics();

src/auth-guard/auth-guard.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { TestBed } from '@angular/core/testing';
22
import { AngularFireModule, FirebaseApp } from '@angular/fire';
33
import { COMMON_CONFIG } from '../test-config';
4-
import { AngularFireAuthGuard, AngularFireAuthGuardModule } from './public_api';
4+
import { AngularFireAuthGuard, AngularFireAuthGuardModule } from '@angular/fire/auth-guard';
55
import { Router, RouterModule } from '@angular/router';
66
import { APP_BASE_HREF } from '@angular/common';
77
import { rando } from '../firestore/utils.spec';

src/auth/auth.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import firebase from 'firebase/app';
22
import { Observable, Subject } from 'rxjs';
33
import { TestBed } from '@angular/core/testing';
44
import { AngularFireModule, FIREBASE_APP_NAME, FIREBASE_OPTIONS, FirebaseApp } from '@angular/fire';
5-
import { AngularFireAuth, AngularFireAuthModule } from './public_api';
5+
import { AngularFireAuth, AngularFireAuthModule } from '@angular/fire/auth';
66
import { COMMON_CONFIG } from '../test-config';
77
import 'firebase/auth';
88
import { rando } from '../firestore/utils.spec';

src/core/angularfire2.spec.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import { TestBed } from '@angular/core/testing';
22
import { CompilerFactory, NgModule, NgZone, PlatformRef } from '@angular/core';
3-
import { AngularFireModule, FirebaseApp } from './public_api';
3+
import { AngularFireModule, FirebaseApp, ɵAngularFireSchedulers, ɵkeepUnstableUntilFirstFactory, ɵZoneScheduler } from '@angular/fire';
44
import { Observable, of, Subject } from 'rxjs';
55
import { COMMON_CONFIG } from '../test-config';
66
import { BrowserModule } from '@angular/platform-browser';
77
import firebase from 'firebase/app';
8-
import { ɵAngularFireSchedulers, ɵkeepUnstableUntilFirstFactory, ɵZoneScheduler } from './angularfire2';
98
import { tap } from 'rxjs/operators';
109
import { TestScheduler } from 'rxjs/testing';
1110
import { rando } from '../firestore/utils.spec';

src/database/database.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { AngularFireModule, FIREBASE_APP_NAME, FIREBASE_OPTIONS, FirebaseApp } from '@angular/fire';
2-
import { AngularFireDatabase, AngularFireDatabaseModule, URL } from './public_api';
2+
import { AngularFireDatabase, AngularFireDatabaseModule, URL } from '@angular/fire/database';
33
import { TestBed } from '@angular/core/testing';
44
import { COMMON_CONFIG } from '../test-config';
55
import { NgZone } from '@angular/core';

src/database/list/audit-trail.spec.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
import { DatabaseReference } from '../interfaces';
21
import { AngularFireModule, FirebaseApp } from '@angular/fire';
3-
import { AngularFireDatabase, AngularFireDatabaseModule, auditTrail, ChildEvent, URL } from '../public_api';
2+
import { AngularFireDatabase, AngularFireDatabaseModule, auditTrail, ChildEvent, URL } from '@angular/fire/database';
43
import { TestBed } from '@angular/core/testing';
54
import { COMMON_CONFIG } from '../../test-config';
65
import { skip } from 'rxjs/operators';
76
import 'firebase/database';
7+
import firebase from 'firebase/app';
88
import { rando } from '../../firestore/utils.spec';
99

1010
describe('auditTrail', () => {
1111
let app: FirebaseApp;
1212
let db: AngularFireDatabase;
13-
let createRef: (path: string) => DatabaseReference;
13+
let createRef: (path: string) => firebase.database.Reference;
1414
let batch = {};
1515
const items = [{ name: 'zero' }, { name: 'one' }, { name: 'two' }].map((item, i) => ({ key: i.toString(), ...item }));
1616
Object.keys(items).forEach((key, i) => {

src/database/list/snapshot-changes.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import firebase from 'firebase/app';
22
import { AngularFireModule, FirebaseApp } from '@angular/fire';
3-
import { AngularFireDatabase, AngularFireDatabaseModule, ChildEvent, snapshotChanges, URL } from '../public_api';
3+
import { AngularFireDatabase, AngularFireDatabaseModule, ChildEvent, snapshotChanges, URL } from '@angular/fire/database';
44
import { TestBed } from '@angular/core/testing';
55
import { COMMON_CONFIG } from '../../test-config';
66
import { BehaviorSubject } from 'rxjs';

src/database/list/state-changes.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import firebase from 'firebase/app';
22
import { AngularFireModule, FirebaseApp } from '@angular/fire';
3-
import { AngularFireDatabase, AngularFireDatabaseModule, ChildEvent, stateChanges, URL } from '../public_api';
3+
import { AngularFireDatabase, AngularFireDatabaseModule, ChildEvent, stateChanges, URL } from '@angular/fire/database';
44
import { TestBed } from '@angular/core/testing';
55
import { COMMON_CONFIG } from '../../test-config';
66
import { skip } from 'rxjs/operators';

src/database/observable/fromRef.spec.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
import { DatabaseReference } from '../interfaces';
21
import { AngularFireModule, FirebaseApp, ɵZoneScheduler } from '@angular/fire';
3-
import { AngularFireDatabase, AngularFireDatabaseModule, fromRef } from '../public_api';
2+
import { AngularFireDatabase, AngularFireDatabaseModule, fromRef } from '@angular/fire/database';
43
import { TestBed } from '@angular/core/testing';
54
import { COMMON_CONFIG } from '../../test-config';
65
import { take } from 'rxjs/operators';
76
import { TestScheduler } from 'rxjs/testing';
87
import { rando } from '../../firestore/utils.spec';
8+
import firebase from 'firebase/app';
99

1010
describe('fromRef', () => {
1111
let app: FirebaseApp;
1212
let db: AngularFireDatabase;
13-
let ref: (path: string) => DatabaseReference;
13+
let ref: (path: string) => firebase.database.Reference;
1414
let batch = {};
1515
const items = [{ name: 'one' }, { name: 'two' }, { name: 'three' }].map(item => ({ key: rando(), ...item }));
1616
Object.keys(items).forEach((key) => {

src/firestore/collection-group/collection-group.spec.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { AngularFireModule, FirebaseApp } from '@angular/fire';
2-
import { AngularFirestore, AngularFirestoreCollectionGroup, AngularFirestoreModule, SETTINGS } from '../public_api';
3-
import { QueryGroupFn, Query } from '../interfaces';
2+
import { QueryGroupFn, Query , AngularFirestore, AngularFirestoreCollectionGroup, AngularFirestoreModule, SETTINGS } from '@angular/fire/firestore';
43
import { BehaviorSubject } from 'rxjs';
54
import { skip, switchMap, take } from 'rxjs/operators';
65
import { TestBed } from '@angular/core/testing';

src/firestore/collection/collection.spec.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
import { AngularFireModule, FirebaseApp } from '@angular/fire';
2-
import { AngularFirestore, SETTINGS } from '../firestore';
3-
import { AngularFirestoreModule } from '../firestore.module';
4-
import { AngularFirestoreCollection } from './collection';
5-
import { QueryFn, CollectionReference } from '../interfaces';
2+
import { AngularFirestore, SETTINGS, AngularFirestoreModule, AngularFirestoreCollection, QueryFn, CollectionReference } from '@angular/fire/firestore';
63
import { BehaviorSubject } from 'rxjs';
74
import { skip, switchMap, take } from 'rxjs/operators';
85
import 'firebase/firestore';

src/firestore/document/document.spec.ts

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
import { AngularFireModule, FirebaseApp } from '@angular/fire';
2-
import { AngularFirestore, SETTINGS } from '../firestore';
3-
import { AngularFirestoreModule } from '../firestore.module';
4-
import { Subscription } from 'rxjs';
5-
import { AngularFirestoreDocument } from './document';
6-
import { DocumentReference } from '../interfaces';
2+
import { AngularFirestore, SETTINGS, AngularFirestoreModule, AngularFirestoreDocument, DocumentReference } from '@angular/fire/firestore';
73
import { take } from 'rxjs/operators';
84

95
import { TestBed } from '@angular/core/testing';

src/firestore/firestore.spec.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
import { AngularFireModule, FIREBASE_APP_NAME, FIREBASE_OPTIONS, FirebaseApp } from '@angular/fire';
2-
import { AngularFirestore, SETTINGS } from './firestore';
3-
import { AngularFirestoreModule } from './firestore.module';
4-
import { AngularFirestoreDocument } from './document/document';
5-
import { AngularFirestoreCollection } from './collection/collection';
2+
import { AngularFirestore, SETTINGS, AngularFirestoreModule, AngularFirestoreDocument, AngularFirestoreCollection } from '@angular/fire/firestore';
63

74
import { TestBed } from '@angular/core/testing';
85
import { COMMON_CONFIG } from '../test-config';

src/firestore/utils.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import firebase from 'firebase/app';
2-
import { AngularFirestoreCollection } from './collection/collection';
2+
import { AngularFirestoreCollection } from '@angular/fire/firestore';
33

44
export interface Stock {
55
name: string;

src/functions/functions.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { TestBed } from '@angular/core/testing';
22
import { AngularFireModule, FIREBASE_APP_NAME, FIREBASE_OPTIONS, FirebaseApp } from '@angular/fire';
3-
import { AngularFireFunctions, AngularFireFunctionsModule, ORIGIN, REGION } from './public_api';
3+
import { AngularFireFunctions, AngularFireFunctionsModule, ORIGIN, REGION } from '@angular/fire/functions';
44
import { COMMON_CONFIG } from '../test-config';
55
import 'firebase/functions';
66
import { rando } from '../firestore/utils.spec';

src/messaging/messaging.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { TestBed } from '@angular/core/testing';
22
import { AngularFireModule, FIREBASE_APP_NAME, FIREBASE_OPTIONS, FirebaseApp } from '@angular/fire';
3-
import { AngularFireMessaging, AngularFireMessagingModule } from './public_api';
3+
import { AngularFireMessaging, AngularFireMessagingModule } from '@angular/fire/messaging';
44
import { COMMON_CONFIG } from '../test-config';
55
import { rando } from '../firestore/utils.spec';
66

src/performance/performance.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { TestBed } from '@angular/core/testing';
22
import { AngularFireModule, FirebaseApp } from '@angular/fire';
3-
import { AngularFirePerformance, AngularFirePerformanceModule } from './public_api';
3+
import { AngularFirePerformance, AngularFirePerformanceModule } from '@angular/fire/performance';
44
import { COMMON_CONFIG } from '../test-config';
55
import { rando } from '../firestore/utils.spec';
66

src/remote-config/remote-config.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { TestBed } from '@angular/core/testing';
22
import { AngularFireModule, FIREBASE_APP_NAME, FIREBASE_OPTIONS, FirebaseApp } from '@angular/fire';
3-
import { AngularFireRemoteConfig, AngularFireRemoteConfigModule, DEFAULTS, SETTINGS } from './public_api';
3+
import { AngularFireRemoteConfig, AngularFireRemoteConfigModule, DEFAULTS, SETTINGS } from '@angular/fire/remote-config';
44
import { COMMON_CONFIG } from '../test-config';
55
import { rando } from '../firestore/utils.spec';
66

0 commit comments

Comments
 (0)