Merge remote-tracking branch 'origin/master' into ClientSideIndexAuto… #17611
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 All Packages | |
on: | |
push: | |
branches: ['**'] | |
env: | |
# make chromedriver detect installed Chrome version and download the corresponding driver | |
DETECT_CHROMEDRIVER_VERSION: true | |
artifactRetentionDays: 14 | |
jobs: | |
build: | |
name: Build the SDK | |
runs-on: ubuntu-latest | |
steps: | |
# Install Chrome so the correct version of webdriver can be installed by chromedriver when | |
# setting up the repo. This must be done to build and execute Auth properly. | |
- name: install Chrome stable | |
# Pin Chrome version 114.0.5735.90-1 to avoid install failures like "No such object: chromedriver/LATEST_RELEASE_115.0.5790". | |
# The failure happens because https://chromedriver.chromium.org/downloads only goes up to version 114. | |
# TODO(b/297380444) Update script to install the latest Chrome and ChromeDriver. | |
run: | | |
sudo apt-get update | |
sudo apt-get install wget | |
sudo wget http://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_114.0.5735.90-1_amd64.deb | |
sudo apt-get install -f ./google-chrome-stable_114.0.5735.90-1_amd64.deb --allow-downgrades | |
- uses: actions/checkout@v3 | |
- name: Set up Node (16) | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16.x | |
- name: Bump Node memory limit | |
run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV | |
- name: Test setup and yarn install | |
run: | | |
cp config/ci.config.json config/project.json | |
yarn | |
- name: yarn build | |
run: yarn build | |
- name: Archive build | |
if: ${{ !cancelled() }} | |
run: | | |
tar -cf build.tar . | |
gzip build.tar | |
- name: Upload build archive | |
if: ${{ !cancelled() }} | |
uses: actions/upload-artifact@v3 | |
with: | |
name: build.tar.gz | |
path: build.tar.gz | |
retention-days: ${{ env.artifactRetentionDays }} | |
# Auth and Firestore are built and executed in their own jobs in an attempt to reduce flakiness. | |
test-the-rest: | |
name: (bulk) Node.js and Browser (Chrome) Tests | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
# install Chrome first, so the correct version of webdriver can be installed by chromedriver when setting up the repo | |
- name: install Chrome stable | |
run: | | |
sudo apt-get update | |
sudo apt-get install google-chrome-stable | |
- name: Download build archive | |
uses: actions/download-artifact@v3 | |
with: | |
name: build.tar.gz | |
- name: Unzip build artifact | |
run: tar xf build.tar.gz | |
- name: Set up Node (16) | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16.x | |
- name: Bump Node memory limit | |
run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV | |
- name: Test setup and yarn install | |
run: | | |
cp config/ci.config.json config/project.json | |
yarn | |
- name: Set start timestamp env var | |
run: echo "FIREBASE_CI_TEST_START_TIME=$(date +%s)" >> $GITHUB_ENV | |
- name: Run unit tests | |
# Ignore auth and firestore since they're handled in their own separate jobs. | |
run: | | |
xvfb-run yarn lerna run --ignore '{firebase-messaging-integration-test,@firebase/auth*,@firebase/firestore*,firebase-firestore-integration-test}' --concurrency 4 test:ci | |
node scripts/print_test_logs.js | |
env: | |
FIREBASE_TOKEN: ${{ secrets.FIREBASE_CLI_TOKEN }} | |
- name: Generate coverage file | |
run: yarn ci:coverage | |
- name: Run coverage | |
uses: coverallsapp/github-action@master | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
path-to-lcov: ./lcov-all.info | |
continue-on-error: true | |
test-auth: | |
name: (Auth) Node.js and Browser (Chrome) Tests | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
# install Chrome so the correct version of webdriver can be installed by chromedriver when setting up the repo | |
- name: install Chrome stable | |
# Pin Chrome version 114.0.5735.90-1 to avoid install failures like "No such object: chromedriver/LATEST_RELEASE_115.0.5790". | |
# The failure happens because https://chromedriver.chromium.org/downloads only goes up to version 114. | |
# TODO(b/297380444) Update script to install the latest Chrome and ChromeDriver. | |
run: | | |
sudo apt-get update | |
sudo apt-get install wget | |
sudo wget http://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_114.0.5735.90-1_amd64.deb | |
sudo apt-get install -f ./google-chrome-stable_114.0.5735.90-1_amd64.deb --allow-downgrades | |
- name: Download build archive | |
uses: actions/download-artifact@v3 | |
with: | |
name: build.tar.gz | |
- name: Unzip build artifact | |
run: tar xf build.tar.gz | |
- name: Set up Node (16) | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16.x | |
- name: Bump Node memory limit | |
run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV | |
- name: Test setup and yarn install | |
run: | | |
cp config/ci.config.json config/project.json | |
yarn | |
- name: Set start timestamp env var | |
run: echo "FIREBASE_CI_TEST_START_TIME=$(date +%s)" >> $GITHUB_ENV | |
- name: Run unit tests | |
run: | | |
xvfb-run yarn lerna run --concurrency 4 test:ci --scope '@firebase/auth*' | |
node scripts/print_test_logs.js | |
env: | |
FIREBASE_TOKEN: ${{ secrets.FIREBASE_CLI_TOKEN }} | |
- name: Generate coverage file | |
run: yarn ci:coverage | |
- name: Run coverage | |
uses: coverallsapp/github-action@master | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
path-to-lcov: ./lcov-all.info | |
continue-on-error: true | |
test-firestore: | |
name: (Firestore) Node.js and Browser (Chrome) Tests | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
# install Chrome so the correct version of webdriver can be installed by chromedriver when setting up the repo | |
- name: install Chrome stable | |
run: | | |
sudo apt-get update | |
sudo apt-get install google-chrome-stable | |
- name: Download build archive | |
uses: actions/download-artifact@v3 | |
with: | |
name: build.tar.gz | |
- name: Unzip build artifact | |
run: tar xf build.tar.gz | |
- name: Set up Node (16) | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16.x | |
- name: Bump Node memory limit | |
run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV | |
- name: Test setup and yarn install | |
run: | | |
cp config/ci.config.json config/project.json | |
yarn | |
- name: Set start timestamp env var | |
run: echo "FIREBASE_CI_TEST_START_TIME=$(date +%s)" >> $GITHUB_ENV | |
- name: Run unit tests | |
run: | | |
xvfb-run yarn lerna run --concurrency 4 test:ci --scope '@firebase/firestore*' | |
node scripts/print_test_logs.js | |
env: | |
FIREBASE_TOKEN: ${{ secrets.FIREBASE_CLI_TOKEN }} | |
- name: Generate coverage file | |
run: yarn ci:coverage | |
- name: Run coverage | |
uses: coverallsapp/github-action@master | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
path-to-lcov: ./lcov-all.info | |
continue-on-error: true | |
test-firestore-integration: | |
strategy: | |
fail-fast: false | |
matrix: | |
persistence: ['memory', 'persistence'] | |
name: Firestore Integration Tests (${{ matrix.persistence }}) | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
# install Chrome so the correct version of webdriver can be installed by chromedriver when setting up the repo | |
- name: install Chrome stable | |
run: | | |
sudo apt-get update | |
sudo apt-get install google-chrome-stable | |
- name: Download build archive | |
uses: actions/download-artifact@v3 | |
with: | |
name: build.tar.gz | |
- name: Unzip build artifact | |
run: tar xf build.tar.gz | |
- name: Set up Node (16) | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16.x | |
- name: Bump Node memory limit | |
run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV | |
- run: cp config/ci.config.json config/project.json | |
- run: yarn | |
- run: yarn build:${{ matrix.persistence }} | |
working-directory: integration/firestore | |
- run: xvfb-run yarn karma:singlerun | |
working-directory: integration/firestore | |
env: | |
FIREBASE_TOKEN: ${{ secrets.FIREBASE_CLI_TOKEN }} |