Target ng16 #1448
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test and publish | |
on: | |
push: | |
branches: | |
- master | |
paths-ignore: | |
- "**/*.md" | |
pull_request: | |
branches: | |
- "**" | |
release: | |
types: | |
- published | |
schedule: | |
- cron: 0 0 * * 1-5 | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
name: Build | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Setup node | |
uses: actions/setup-node@v2-beta | |
with: | |
node-version: '16' | |
check-latest: true | |
- name: node_modules cache | |
uses: actions/cache@v2 | |
id: node_modules_cache | |
with: | |
path: ./node_modules | |
key: ${{ runner.os }}-16-12-9-9-6-node_modules-${{ hashFiles('yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-16-12-9-9-6-node_modules- | |
${{ runner.os }}-16-12-9-9- | |
${{ runner.os }}-16-12-9- | |
${{ runner.os }}-16-12- | |
${{ runner.os }}-16- | |
- name: Yarn offline cache | |
if: steps.node_modules_cache.outputs.cache-hit != 'true' | |
uses: actions/cache@v2 | |
with: | |
path: ~/.npm-packages-offline-cache | |
key: yarn-offline-${{ hashFiles('**/yarn.lock') }} | |
restore-keys: yarn-offline | |
- name: Install deps | |
if: steps.node_modules_cache.outputs.cache-hit != 'true' | |
run: | | |
yarn config set ignore-engines true | |
yarn config set yarn-offline-mirror ~/.npm-packages-offline-cache | |
yarn config set network-timeout 300000 | |
yarn config set yarn-offline-mirror-pruning true | |
yarn install --frozen-lockfile --prefer-offline | |
- name: Build | |
id: yarn-pack-dir | |
run: ./tools/build.sh | |
- name: 'Upload Artifact' | |
uses: actions/upload-artifact@v2 | |
with: | |
name: angularfire-${{ github.run_id }} | |
path: dist | |
retention-days: 1 | |
test: | |
runs-on: ${{ matrix.os }} | |
needs: build | |
strategy: | |
matrix: | |
os: [ ubuntu-latest, macos-latest, windows-latest ] | |
node: ["16", "18", "20"] | |
fail-fast: false | |
name: Test NodeJS ${{ matrix.node }} (${{ matrix.os }}) | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Setup node | |
uses: actions/setup-node@v2-beta | |
with: | |
node-version: ${{ matrix.node }} | |
check-latest: true | |
- name: node_modules cache | |
id: node_modules_cache | |
uses: actions/cache@v2 | |
with: | |
path: ./node_modules | |
key: ${{ runner.os }}-${{ matrix.node }}-16-9-12-7-node_modules-${{ hashFiles('yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-${{ matrix.node }}-16-9-12-7-node_modules- | |
${{ runner.os }}-${{ matrix.node }}-16-9-12- | |
${{ runner.os }}-${{ matrix.node }}-16-9- | |
${{ runner.os }}-${{ matrix.node }}-16- | |
${{ runner.os }}-${{ matrix.node }}- | |
- name: Yarn offline cache | |
uses: actions/cache@v2 | |
with: | |
path: ~/.npm-packages-offline-cache | |
key: yarn-offline-${{ hashFiles('**/yarn.lock') }} | |
restore-keys: yarn-offline | |
- name: Configure yarn | |
run: | | |
yarn config set yarn-offline-mirror ~/.npm-packages-offline-cache | |
yarn config set network-timeout 300000 | |
yarn config set ignore-engines true | |
- name: Yarn install | |
if: steps.node_modules_cache.outputs.cache-hit != 'true' | |
run: yarn install --frozen-lockfile --prefer-offline | |
- name: Firebase emulator cache | |
uses: actions/cache@v2 | |
with: | |
path: ~/.cache/firebase/emulators | |
key: firebase_emulators | |
- name: Download Artifacts | |
uses: actions/download-artifact@v2 | |
- name: Relocate Artifacts | |
run: mv angularfire-${{ github.run_id }} dist | |
- name: Test Node | |
run: | | |
yarn build:jasmine | |
yarn test:node | |
- name: Test browser | |
# only test on the default, maybe we should just make this a seperate test | |
if: matrix.os == 'ubuntu-latest' && matrix.node == '16' | |
run: yarn test:chrome-headless | |
- name: ng-build yarn install | |
run: | | |
cd ./test/ng-build | |
yarn --prefer-offline | |
- name: ng-build prerender | |
run: | | |
cd ./test/ng-build | |
yarn prerender | |
# TODO dry up | |
canary: | |
runs-on: ${{ matrix.os }} | |
# if: ${{ github.ref == 'refs/heads/master' }} | |
# needs: [ 'build', 'test' ] | |
needs: [ 'build' ] | |
strategy: | |
matrix: | |
os: [ ubuntu-latest ] | |
node: ["16", "18", "20"] | |
firebase: ["9", "canary", "next"] | |
firebaseTools: ["12"] | |
rxjs: ["7"] | |
ng: ["16", "next"] | |
exclude: | |
# standard configurations | |
- firebase: 9 | |
ng: 16 | |
fail-fast: false | |
name: Canary firebase@${{ matrix.firebase }} firebase-tools@${{ matrix.firebaseTools }} ng@${{ matrix.ng }} rxjs@${{ matrix.rxjs}} on ${{ matrix.os }} Node.js ${{ matrix.node }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Setup node | |
uses: actions/setup-node@v2-beta | |
with: | |
node-version: ${{ matrix.node }} | |
check-latest: true | |
- name: node_modules cache | |
id: node_modules_cache | |
uses: actions/cache@v2 | |
with: | |
path: ./node_modules | |
key: ${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}-${{ matrix.firebase }}-${{ matrix.firebaseTools }}-${{ matrix.rxjs }}-node_modules-${{ hashFiles('yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}-${{ matrix.firebase }}-${{ matrix.firebaseTools }}-${{ matrix.rxjs }}-node_modules- | |
${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}-${{ matrix.firebase }}-${{ matrix.firebaseTools }}- | |
${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}-${{ matrix.firebase }}- | |
${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}- | |
${{ runner.os }}-${{ matrix.node }}- | |
- name: Yarn offline cache | |
uses: actions/cache@v2 | |
with: | |
path: ~/.npm-packages-offline-cache | |
key: yarn-offline-${{ hashFiles('**/yarn.lock') }} | |
restore-keys: yarn-offline | |
- name: Configure yarn | |
run: | | |
yarn config set yarn-offline-mirror ~/.npm-packages-offline-cache | |
yarn config set network-timeout 300000 | |
yarn config set ignore-engines true | |
- name: Yarn install | |
if: steps.node_modules_cache.outputs.cache-hit != 'true' | |
run: yarn install --frozen-lockfile --prefer-offline | |
- name: Bump deps | |
run: | | |
yarn add firebase@${{ matrix.firebase }} | |
yarn add firebase-tools@${{ matrix.firebaseTools }} | |
yarn add rxjs@${{ matrix.rxjs }} --prefer-offline | |
- name: Firebase emulator cache | |
uses: actions/cache@v2 | |
with: | |
path: ~/.cache/firebase/emulators | |
key: firebase_emulators | |
- name: Download Artifacts | |
uses: actions/download-artifact@v2 | |
- name: Relocate Artifacts | |
run: mv angularfire-${{ github.run_id }} dist | |
- name: Test Node | |
run: | | |
yarn build:jasmine | |
yarn test:node | |
- name: Test browser | |
run: yarn test:chrome-headless | |
- name: ng-build yarn install | |
run: | | |
cd ./test/ng-build | |
yarn --prefer-offline | |
yarn add firebase@${{ matrix.firebase }} | |
# on @canary firebase-admin and firebase database-types conflict, skip the lib check for now | |
- name: ng-build skipLibCheck | |
run: | | |
cd ./test/ng-build | |
sed -i 's/"skipLibCheck": false,/"skipLibCheck": true,/g' tsconfig.json | |
if: matrix.firebase == 'canary' | |
- name: ng-build prerender | |
run: | | |
cd ./test/ng-build | |
yarn prerender | |
contribute: | |
runs-on: ${{ matrix.os }} | |
name: Contribute NodeJS ${{ matrix.node }} (${{ matrix.os }}) | |
strategy: | |
matrix: | |
os: [ ubuntu-latest, macos-latest, windows-latest ] | |
node: ["16"] | |
exclude: | |
# we build with this combination, safely skip | |
- os: ubuntu-latest | |
node: 16 | |
fail-fast: false | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Setup node | |
uses: actions/setup-node@v2-beta | |
with: | |
node-version: ${{ matrix.node }} | |
check-latest: true | |
- name: node_modules cache | |
uses: actions/cache@v2 | |
id: node_modules_cache | |
with: | |
path: ./node_modules | |
key: ${{ runner.os }}-${{ matrix.node }}-12-9-9-6-node_modules-${{ hashFiles('yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-${{ matrix.node }}-12-9-9-6-node_modules- | |
${{ runner.os }}-${{ matrix.node }}-12-9-9- | |
${{ runner.os }}-${{ matrix.node }}-12-9- | |
${{ runner.os }}-${{ matrix.node }}-12- | |
${{ runner.os }}-${{ matrix.node }}- | |
- name: Yarn offline cache | |
if: steps.node_modules_cache.outputs.cache-hit != 'true' | |
uses: actions/cache@v2 | |
with: | |
path: ~/.npm-packages-offline-cache | |
key: yarn-offline-${{ hashFiles('**/yarn.lock') }} | |
restore-keys: yarn-offline | |
- name: Install deps | |
if: steps.node_modules_cache.outputs.cache-hit != 'true' | |
run: | | |
yarn config set yarn-offline-mirror ~/.npm-packages-offline-cache | |
yarn config set network-timeout 300000 | |
yarn config set ignore-engines true | |
yarn install --frozen-lockfile --prefer-offline | |
- name: Build | |
run: yarn build | |
- name: Test Node | |
run: | | |
npm run build:jasmine | |
npm run test:node | |
- name: Test headless | |
run: yarn test:chrome-headless | |
continue-on-error: ${{ matrix.os == 'windows-latest' }} | |
# Break the branch protection test into a seperate step, so we can manage the matrix more easily | |
test_and_contribute: | |
runs-on: ubuntu-latest | |
name: Branch protection | |
needs: ['test', 'contribute'] | |
steps: | |
- run: true | |
publish: | |
runs-on: ubuntu-latest | |
name: Publish (NPM) | |
needs: ['build', 'test'] | |
if: ${{ github.ref == 'refs/heads/master' || github.event_name == 'release' }} | |
steps: | |
- name: Setup node | |
uses: actions/setup-node@v2-beta | |
with: | |
node-version: '16' | |
registry-url: 'https://registry.npmjs.org' | |
check-latest: true | |
- name: 'Download Artifacts' | |
uses: actions/download-artifact@v2 | |
- name: Publish | |
run: | | |
cd ./angularfire-${{ github.run_id }}/packages-dist | |
chmod +x publish.sh | |
./publish.sh | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
notify: | |
runs-on: ubuntu-latest | |
name: Notify | |
needs: ['build', 'test', 'contribute', 'canary'] | |
if: always() | |
steps: | |
- run: echo ${{ github.run_id }} |