mirror of
https://github.com/hanzoai/firebase-js-sdk.git
synced 2026-09-24 16:59:10 +00:00
Delete upstream workflows
This fork does not ship upstream's releases, and its hosted-runner jobs never start here. Claude-Session: https://claude.ai/code/session_01HuMDfgFssPUptYUzgZ6Cp8
This commit is contained in:
@@ -1,104 +0,0 @@
|
||||
# Copyright 2023 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: Check Changeset
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
|
||||
env:
|
||||
GITHUB_PULL_REQUEST_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
|
||||
GITHUB_PULL_REQUEST_BASE_SHA: ${{ github.event.pull_request.base.sha }}
|
||||
|
||||
jobs:
|
||||
check_changeset:
|
||||
name: Check changeset vs changed files
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
pull-requests: write
|
||||
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
# This makes Actions fetch all Git history so check_changeset script can diff properly.
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: Yarn install
|
||||
run: yarn
|
||||
- name: Run changeset script
|
||||
# pull main so changeset can diff against it
|
||||
run: |
|
||||
git pull -f --no-rebase origin main:main
|
||||
yarn ts-node-script scripts/ci/check_changeset.ts
|
||||
id: check-changeset
|
||||
- name: Print changeset checker output
|
||||
run: |
|
||||
cat << 'eof_delimiter_that_will_never_occur_in_CHANGESET_ERROR_MESSAGE'
|
||||
${STEPS_CHECK_CHANGESET_OUTPUTS_CHANGESET_ERROR_MESSAGE}
|
||||
eof_delimiter_that_will_never_occur_in_CHANGESET_ERROR_MESSAGE
|
||||
env:
|
||||
STEPS_CHECK_CHANGESET_OUTPUTS_CHANGESET_ERROR_MESSAGE: ${{steps.check-changeset.outputs.CHANGESET_ERROR_MESSAGE}}
|
||||
- name: Print blocking failure status
|
||||
run: echo "${STEPS_CHECK_CHANGESET_OUTPUTS_BLOCKING_FAILURE}"
|
||||
env:
|
||||
STEPS_CHECK_CHANGESET_OUTPUTS_BLOCKING_FAILURE: ${{steps.check-changeset.outputs.BLOCKING_FAILURE}}
|
||||
- name: Find Comment
|
||||
# This commit represents v3.1.0
|
||||
uses: peter-evans/find-comment@a4ef349b8c29f841860ce94ed82b20f0a39b6961
|
||||
id: fc
|
||||
with:
|
||||
issue-number: ${{github.event.number}}
|
||||
body-includes: Changeset File Check
|
||||
- name: Create comment (missing packages)
|
||||
if: ${{!steps.fc.outputs.comment-id && steps.check-changeset.outputs.CHANGESET_ERROR_MESSAGE}}
|
||||
# This commit represents v4.0.0
|
||||
uses: peter-evans/create-or-update-comment@e2426b4b1346fd5e8c731c0bbe368063ea0286ac
|
||||
with:
|
||||
issue-number: ${{github.event.number}}
|
||||
body: |
|
||||
### Changeset File Check :warning:
|
||||
${{steps.check-changeset.outputs.CHANGESET_ERROR_MESSAGE}}
|
||||
- name: Update comment (missing packages)
|
||||
if: ${{steps.fc.outputs.comment-id && steps.check-changeset.outputs.CHANGESET_ERROR_MESSAGE}}
|
||||
# This commit represents v4.0.0
|
||||
uses: peter-evans/create-or-update-comment@e2426b4b1346fd5e8c731c0bbe368063ea0286ac
|
||||
with:
|
||||
comment-id: ${{steps.fc.outputs.comment-id}}
|
||||
edit-mode: replace
|
||||
body: |
|
||||
### Changeset File Check :warning:
|
||||
${{steps.check-changeset.outputs.CHANGESET_ERROR_MESSAGE}}
|
||||
- name: Update comment (no missing packages)
|
||||
if: ${{steps.fc.outputs.comment-id && !steps.check-changeset.outputs.CHANGESET_ERROR_MESSAGE}}
|
||||
# This commit represents v4.0.0
|
||||
uses: peter-evans/create-or-update-comment@e2426b4b1346fd5e8c731c0bbe368063ea0286ac
|
||||
with:
|
||||
comment-id: ${{steps.fc.outputs.comment-id}}
|
||||
edit-mode: replace
|
||||
body: |
|
||||
### Changeset File Check :white_check_mark:
|
||||
- No modified packages are missing from the changeset file.
|
||||
- No changeset formatting errors detected.
|
||||
# Don't want it to throw before editing the comment.
|
||||
- name: Fail if checker script logged a blocking failure
|
||||
if: ${{steps.check-changeset.outputs.BLOCKING_FAILURE == 'true'}}
|
||||
run: exit 1
|
||||
@@ -1,59 +0,0 @@
|
||||
# Copyright 2023 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: Doc Change Check (Run "yarn docgen:all" if this fails)
|
||||
|
||||
on: pull_request
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
doc-check:
|
||||
name: Check if reference docs have changed
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
# get all history for the diff
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: Yarn install
|
||||
run: yarn
|
||||
- name: Run doc generation
|
||||
run: yarn docgen:all
|
||||
# Fail first if there are docs-devsite changes since running yarn docgen:all
|
||||
# will also regenerate any API report changes.
|
||||
- name: Check for changes in docs-devsite dir (fail if so)
|
||||
run: |
|
||||
if [[ -n "$(git status docs-devsite --porcelain)" ]]; then
|
||||
echo "Unstaged changes detected in docs-devsite/:"
|
||||
git status -s
|
||||
echo "Changes in this PR affect the reference docs or API reports. Run \`yarn docgen:all\` locally to regenerate the changed files and add them to this PR."
|
||||
exit 1
|
||||
fi
|
||||
- name: Check for changes in common/api-review dir (fail if so)
|
||||
run: |
|
||||
if [[ -n "$(git status common/api-review --porcelain)" ]]; then
|
||||
echo "Unstaged changes detected in api-report(s):"
|
||||
git status -s
|
||||
echo "Changes in this PR affect the API reports. Run \`yarn build\` locally to regenerate the API reports and add them to this PR."
|
||||
exit 1
|
||||
fi
|
||||
@@ -1,45 +0,0 @@
|
||||
# Copyright 2023 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: Test Package Paths
|
||||
|
||||
on: pull_request
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: Test Package Paths
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
# This makes Actions fetch all Git history so run-changed script can diff properly.
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: Yarn install
|
||||
run: yarn
|
||||
- name: Yarn build
|
||||
run: yarn build
|
||||
- name: Swap in public typings
|
||||
run: yarn release:prepare
|
||||
- name: Check paths
|
||||
run: yarn ts-node scripts/ci-test/check-paths.ts
|
||||
@@ -1,72 +0,0 @@
|
||||
# Copyright 2024 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: Check Vertex AI Responses
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'packages/ai/**'
|
||||
|
||||
jobs:
|
||||
check-version:
|
||||
runs-on: ubuntu-latest
|
||||
# Allow GITHUB_TOKEN to have write permissions
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
steps:
|
||||
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Clone mock responses
|
||||
run: scripts/update_vertexai_responses.sh
|
||||
- name: Find cloned and latest versions
|
||||
run: |
|
||||
CLONED=$(git describe --tags)
|
||||
LATEST=$(git tag --sort=v:refname | tail -n1)
|
||||
echo "cloned_tag=$CLONED" >> $GITHUB_ENV
|
||||
echo "latest_tag=$LATEST" >> $GITHUB_ENV
|
||||
working-directory: packages/ai/test-utils/vertexai-sdk-test-data
|
||||
- name: Find comment from previous run if exists
|
||||
# This commit represents v3.1.0
|
||||
uses: peter-evans/find-comment@a4ef349b8c29f841860ce94ed82b20f0a39b6961
|
||||
id: fc
|
||||
with:
|
||||
issue-number: ${{github.event.number}}
|
||||
body-includes: Vertex AI Mock Responses Check
|
||||
- name: Comment on PR if newer version is available
|
||||
if: ${{env.cloned_tag != env.latest_tag && !steps.fc.outputs.comment-id}}
|
||||
# This commit represents v4.0.0
|
||||
uses: peter-evans/create-or-update-comment@e2426b4b1346fd5e8c731c0bbe368063ea0286ac
|
||||
with:
|
||||
issue-number: ${{github.event.number}}
|
||||
body: >
|
||||
### Vertex AI Mock Responses Check :warning:
|
||||
|
||||
A newer major version of the mock responses for Vertex AI unit tests is available.
|
||||
[update_vertexai_responses.sh](https://github.com/firebase/firebase-js-sdk/blob/main/scripts/update_vertexai_responses.sh)
|
||||
should be updated to clone the latest version of the responses: `${{env.latest_tag}}`
|
||||
- name: Delete comment when version gets updated
|
||||
if: ${{env.cloned_tag == env.latest_tag && steps.fc.outputs.comment-id}}
|
||||
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # ratchet:actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
github.rest.issues.deleteComment({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
comment_id: Number(process.env.COMMENT_ID),
|
||||
})
|
||||
env:
|
||||
COMMENT_ID: ${{ steps.fc.outputs.comment-id }}
|
||||
@@ -1,57 +0,0 @@
|
||||
# Copyright 2023 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: Deploy Project Config
|
||||
|
||||
on: pull_request
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
# Detects if any project config files (rules or functions) have changed,
|
||||
# and deploys them to the test project used for CI if so.
|
||||
# Run this in its own workflow instead of as a step before each test
|
||||
# workflow to avoid too many deploys, possibly causing race conditions.
|
||||
# Since the build step of each test workflow takes a long time, this
|
||||
# this should finish before the tests begin running.
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: Deploy Firebase Project Rules and Functions
|
||||
runs-on: ubuntu-latest
|
||||
if: (github.actor != 'dependabot[bot]')
|
||||
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
# This makes Actions fetch all Git history so run-changed script can diff properly.
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
- name: Set up node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
# firebase-tools has a minimum java version requirement
|
||||
- name: Set up Java (22)
|
||||
uses: actions/setup-java@03ad4de0992f5dab5e18fcb136590ce7c4a0ac95 # v5.6.0
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '22'
|
||||
- name: Yarn install
|
||||
run: yarn
|
||||
- name: Deploy project config if needed
|
||||
run: yarn ts-node scripts/ci-test/deploy-if-needed.ts
|
||||
env:
|
||||
FIREBASE_CLI_TOKEN: ${{secrets.FIREBASE_CLI_TOKEN}}
|
||||
@@ -1,105 +0,0 @@
|
||||
# Copyright 2023 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: E2E Smoke Tests
|
||||
|
||||
# Allows REST trigger. Currently triggered by release-cli script during a staging run.
|
||||
on:
|
||||
repository_dispatch:
|
||||
types: [staging-tests,canary-tests]
|
||||
|
||||
env:
|
||||
# Bump Node memory limit
|
||||
NODE_OPTIONS: "--max_old_space_size=4096"
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: Run E2E Smoke Tests
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
defaults:
|
||||
run:
|
||||
# Run any command steps in the /e2e/smoke-tests subdir
|
||||
working-directory: './e2e/smoke-tests'
|
||||
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: install Chrome stable
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install google-chrome-stable
|
||||
- name: Write project config
|
||||
env:
|
||||
PROJECT_CONFIG: ${{ secrets.TEST_PROJECT_CONFIG }}
|
||||
TEST_ACCOUNT: ${{ secrets.TEST_ACCOUNT }}
|
||||
run: |
|
||||
echo "export const config = $PROJECT_CONFIG; export const testAccount = $TEST_ACCOUNT" > firebase-config.js
|
||||
- name: Poll npm until version to test is available for install
|
||||
run: |
|
||||
echo "Polling npm for firebase@${GITHUB_EVENT_CLIENT_PAYLOAD_VERSIONORTAG}"
|
||||
node ./scripts/release/poll-npm-publish.js
|
||||
# run in root
|
||||
working-directory: '.'
|
||||
env:
|
||||
VERSION: ${{ github.event.client_payload.versionOrTag }}
|
||||
GITHUB_EVENT_CLIENT_PAYLOAD_VERSIONORTAG: ${{ github.event.client_payload.versionOrTag }}
|
||||
- name: Yarn install
|
||||
run: |
|
||||
echo "Installing firebase@${GITHUB_EVENT_CLIENT_PAYLOAD_VERSIONORTAG}"
|
||||
yarn add firebase@${GITHUB_EVENT_CLIENT_PAYLOAD_VERSIONORTAG}
|
||||
yarn
|
||||
env:
|
||||
GITHUB_EVENT_CLIENT_PAYLOAD_VERSIONORTAG: ${{ github.event.client_payload.versionOrTag }}
|
||||
- name: Do modular build
|
||||
run: yarn build:modular
|
||||
- name: Do compat build
|
||||
run: yarn build:compat
|
||||
- name: Run modular tests
|
||||
env:
|
||||
APP_CHECK_DEBUG_TOKEN: ${{ secrets.APP_CHECK_DEBUG_TOKEN }}
|
||||
run: xvfb-run yarn test:modular
|
||||
- name: Run compat tests
|
||||
env:
|
||||
APP_CHECK_DEBUG_TOKEN: ${{ secrets.APP_CHECK_DEBUG_TOKEN }}
|
||||
run: xvfb-run yarn test:compat
|
||||
- name: Tests succeeded
|
||||
if: success()
|
||||
run: node scripts/ci/notify-test-result.js success
|
||||
# we don't want THIS step erroring to trigger the failure notification
|
||||
continue-on-error: true
|
||||
env:
|
||||
WEBHOOK_URL: ${{ secrets.JSCORE_CHAT_WEBHOOK_URL }}
|
||||
RELEASE_TRACKER_URL: ${{ secrets.RELEASE_TRACKER_URL }}
|
||||
VERSION_OR_TAG: ${{ github.event.client_payload.versionOrTag }}
|
||||
# run in root
|
||||
working-directory: '.'
|
||||
- name: Tests failed
|
||||
if: failure()
|
||||
run: node scripts/ci/notify-test-result.js fail
|
||||
env:
|
||||
WEBHOOK_URL: ${{ secrets.JSCORE_CHAT_WEBHOOK_URL }}
|
||||
RELEASE_TRACKER_URL: ${{ secrets.RELEASE_TRACKER_URL }}
|
||||
VERSION_OR_TAG: ${{ github.event.client_payload.versionOrTag }}
|
||||
# run in root
|
||||
working-directory: '.'
|
||||
@@ -1,50 +0,0 @@
|
||||
# Copyright 2023 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: Formatting Check (Run yarn format locally if this fails)
|
||||
|
||||
on: pull_request
|
||||
|
||||
env:
|
||||
GITHUB_PULL_REQUEST_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
|
||||
GITHUB_PULL_REQUEST_BASE_SHA: ${{ github.event.pull_request.base.sha }}
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
format:
|
||||
name: Run license and prettier formatting tasks
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
# get all history for the diff
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
- name: Set up node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: Yarn install
|
||||
run: yarn
|
||||
- name: Run formatting script
|
||||
run: yarn format
|
||||
- name: Check for changes (fail if so)
|
||||
run: git diff --exit-code
|
||||
- name: Formatting needs to be updated. See message below.
|
||||
if: ${{ failure() }}
|
||||
run: echo "Something was changed by formatting. Run \`yarn format\` locally to do a prettier/license pass. Use \`yarn format --help\` to see options."
|
||||
@@ -1,38 +0,0 @@
|
||||
# Copyright 2023 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: Lint All Packages
|
||||
|
||||
on: pull_request
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: Lint
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Set up node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: yarn install
|
||||
run: yarn
|
||||
- name: yarn lint
|
||||
run: yarn lint
|
||||
@@ -1,103 +0,0 @@
|
||||
# Copyright 2023 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: Prerelease manual deploy
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
prereleaseName:
|
||||
description: 'The prerelease name, as in 1.0.0-<prereleaseName>'
|
||||
required: true
|
||||
npmTag:
|
||||
description: 'The npm tag to publish to, as in npm install firebase@<npmTag>'
|
||||
required: true
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
environment: release
|
||||
name: Prerelease Deploy
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
# Canary release script requires git history and tags.
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
- name: Set up node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: Yarn install
|
||||
run: yarn
|
||||
- name: Deploy prerelease
|
||||
run: yarn release custom -p ${GITHUB_EVENT_INPUTS_PRERELEASENAME} -t ${GITHUB_EVENT_INPUTS_NPMTAG}
|
||||
env:
|
||||
NPM_TOKEN_ANALYTICS: ${{secrets.NPM_TOKEN_ANALYTICS}}
|
||||
NPM_TOKEN_ANALYTICS_INTEROP_TYPES: ${{secrets.NPM_TOKEN_ANALYTICS_INTEROP_TYPES}}
|
||||
NPM_TOKEN_ANALYTICS_TYPES: ${{secrets.NPM_TOKEN_ANALYTICS_TYPES}}
|
||||
NPM_TOKEN_APP: ${{secrets.NPM_TOKEN_APP}}
|
||||
NPM_TOKEN_APP_TYPES: ${{secrets.NPM_TOKEN_APP_TYPES}}
|
||||
NPM_TOKEN_APP_CHECK: ${{secrets.NPM_TOKEN_APP_CHECK}}
|
||||
NPM_TOKEN_APP_CHECK_INTEROP_TYPES: ${{secrets.NPM_TOKEN_APP_CHECK_INTEROP_TYPES}}
|
||||
NPM_TOKEN_APP_CHECK_TYPES: ${{secrets.NPM_TOKEN_APP_CHECK_TYPES}}
|
||||
NPM_TOKEN_AUTH: ${{secrets.NPM_TOKEN_AUTH}}
|
||||
NPM_TOKEN_AUTH_INTEROP_TYPES: ${{secrets.NPM_TOKEN_AUTH_INTEROP_TYPES}}
|
||||
NPM_TOKEN_AUTH_TYPES: ${{secrets.NPM_TOKEN_AUTH_TYPES}}
|
||||
NPM_TOKEN_COMPONENT: ${{secrets.NPM_TOKEN_COMPONENT}}
|
||||
NPM_TOKEN_DATA_CONNECT: ${{secrets.NPM_TOKEN_DATA_CONNECT}}
|
||||
NPM_TOKEN_DATABASE: ${{secrets.NPM_TOKEN_DATABASE}}
|
||||
NPM_TOKEN_DATABASE_TYPES: ${{secrets.NPM_TOKEN_DATABASE_TYPES}}
|
||||
NPM_TOKEN_FIRESTORE: ${{secrets.NPM_TOKEN_FIRESTORE}}
|
||||
NPM_TOKEN_FIRESTORE_TYPES: ${{secrets.NPM_TOKEN_FIRESTORE_TYPES}}
|
||||
NPM_TOKEN_FUNCTIONS: ${{secrets.NPM_TOKEN_FUNCTIONS}}
|
||||
NPM_TOKEN_FUNCTIONS_TYPES: ${{secrets.NPM_TOKEN_FUNCTIONS_TYPES}}
|
||||
NPM_TOKEN_INSTALLATIONS: ${{secrets.NPM_TOKEN_INSTALLATIONS}}
|
||||
NPM_TOKEN_INSTALLATIONS_TYPES: ${{secrets.NPM_TOKEN_INSTALLATIONS_TYPES}}
|
||||
NPM_TOKEN_LOGGER: ${{secrets.NPM_TOKEN_LOGGER}}
|
||||
NPM_TOKEN_MESSAGING: ${{secrets.NPM_TOKEN_MESSAGING}}
|
||||
NPM_TOKEN_PERFORMANCE: ${{secrets.NPM_TOKEN_PERFORMANCE}}
|
||||
NPM_TOKEN_PERFORMANCE_TYPES: ${{secrets.NPM_TOKEN_PERFORMANCE_TYPES}}
|
||||
NPM_TOKEN_REMOTE_CONFIG: ${{secrets.NPM_TOKEN_REMOTE_CONFIG}}
|
||||
NPM_TOKEN_REMOTE_CONFIG_TYPES: ${{secrets.NPM_TOKEN_REMOTE_CONFIG_TYPES}}
|
||||
NPM_TOKEN_RULES_UNIT_TESTING: ${{secrets.NPM_TOKEN_RULES_UNIT_TESTING}}
|
||||
NPM_TOKEN_STORAGE: ${{secrets.NPM_TOKEN_STORAGE}}
|
||||
NPM_TOKEN_STORAGE_TYPES: ${{secrets.NPM_TOKEN_STORAGE_TYPES}}
|
||||
NPM_TOKEN_UTIL: ${{secrets.NPM_TOKEN_UTIL}}
|
||||
NPM_TOKEN_AI: ${{secrets.NPM_TOKEN_AI}}
|
||||
NPM_TOKEN_VERTEXAI: ${{secrets.NPM_TOKEN_VERTEXAI}}
|
||||
NPM_TOKEN_WEBCHANNEL_WRAPPER: ${{secrets.NPM_TOKEN_WEBCHANNEL_WRAPPER}}
|
||||
NPM_TOKEN_FIREBASE: ${{secrets.NPM_TOKEN_FIREBASE}}
|
||||
NPM_TOKEN_APP_COMPAT: ${{ secrets.NPM_TOKEN_APP_COMPAT }}
|
||||
NPM_TOKEN_INSTALLATIONS_COMPAT: ${{ secrets.NPM_TOKEN_INSTALLATIONS_COMPAT }}
|
||||
NPM_TOKEN_ANALYTICS_COMPAT: ${{ secrets.NPM_TOKEN_ANALYTICS_COMPAT }}
|
||||
NPM_TOKEN_AUTH_COMPAT: ${{ secrets.NPM_TOKEN_AUTH_COMPAT }}
|
||||
NPM_TOKEN_MESSAGING_INTEROP_TYPES: ${{ secrets.NPM_TOKEN_MESSAGING_INTEROP_TYPES }}
|
||||
NPM_TOKEN_FUNCTIONS_COMPAT: ${{ secrets.NPM_TOKEN_FUNCTIONS_COMPAT }}
|
||||
NPM_TOKEN_MESSAGING_COMPAT: ${{ secrets.NPM_TOKEN_MESSAGING_COMPAT }}
|
||||
NPM_TOKEN_PERFORMANCE_COMPAT: ${{ secrets.NPM_TOKEN_PERFORMANCE_COMPAT }}
|
||||
NPM_TOKEN_REMOTE_CONFIG_COMPAT: ${{ secrets.NPM_TOKEN_REMOTE_CONFIG_COMPAT }}
|
||||
NPM_TOKEN_DATABASE_COMPAT: ${{ secrets.NPM_TOKEN_DATABASE_COMPAT }}
|
||||
NPM_TOKEN_FIRESTORE_COMPAT: ${{ secrets.NPM_TOKEN_FIRESTORE_COMPAT }}
|
||||
NPM_TOKEN_STORAGE_COMPAT: ${{ secrets.NPM_TOKEN_STORAGE_COMPAT }}
|
||||
NPM_TOKEN_APP_CHECK_COMPAT: ${{ secrets.NPM_TOKEN_APP_CHECK_COMPAT }}
|
||||
NPM_TOKEN_API_DOCUMENTER: ${{ secrets.NPM_TOKEN_API_DOCUMENTER }}
|
||||
CI: true
|
||||
GITHUB_EVENT_INPUTS_PRERELEASENAME: ${{ github.event.inputs.prereleaseName }}
|
||||
GITHUB_EVENT_INPUTS_NPMTAG: ${{ github.event.inputs.npmTag }}
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
# Copyright 2023 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: Log Release PR
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- release
|
||||
- '*-releasebranch'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
release:
|
||||
name: Send PR number to tracker endpoint
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup Node.js 20.x
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
|
||||
- name: Get PR number and send to tracker.
|
||||
run: node scripts/ci/log-changesets.js
|
||||
env:
|
||||
RELEASE_TRACKER_URL: ${{ secrets.RELEASE_TRACKER_URL }}
|
||||
@@ -1,72 +0,0 @@
|
||||
# Copyright 2023 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: Create Release PR
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- release
|
||||
- '*-releasebranch'
|
||||
|
||||
jobs:
|
||||
release:
|
||||
environment: release
|
||||
name: Create Release PR
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
pull-requests: write
|
||||
contents: write
|
||||
if: ${{ !startsWith(github.event.head_commit.message, 'Version Packages (#') }}
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
# This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup Node.js 20.x
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
|
||||
- name: Install Dependencies
|
||||
run: yarn
|
||||
|
||||
# Ensures a new @firebase/app is published with every release.
|
||||
# This keeps the SDK_VERSION variable up to date.
|
||||
- name: Add a changeset for @firebase/app
|
||||
# pull main so changeset can diff against it
|
||||
run: |
|
||||
git pull -f --no-rebase origin main:main
|
||||
yarn ts-node-script scripts/ci/add_changeset.ts
|
||||
|
||||
# Configures git user as "google-oss-bot" for the next step
|
||||
- name: Configure Git User
|
||||
run: |
|
||||
git config --global user.name "google-oss-bot"
|
||||
git config --global user.email "[email protected]"
|
||||
|
||||
- name: Create Release Pull Request
|
||||
uses: changesets/action@a45c4d594aa4e2c509dc14a9f2b3b67ba3780d0d # ratchet:changesets/action@v1
|
||||
with:
|
||||
# changesets action can automatically set up a git user
|
||||
# but it will be google-actions[bot] which causes CLA problems
|
||||
setupGitUser: false
|
||||
env:
|
||||
# This token affects who the opening of the PR is credited to
|
||||
# while the git user (above) determines the commit author.
|
||||
# We want to set them both to match github-oss-bot.
|
||||
GITHUB_TOKEN: ${{ secrets.OSS_BOT_GITHUB_TOKEN }}
|
||||
@@ -1,170 +0,0 @@
|
||||
# Copyright 2023 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: Production Release
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
release-branch:
|
||||
description: 'Release branch'
|
||||
type: string
|
||||
default: 'release'
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
environment: release
|
||||
name: Production Release
|
||||
runs-on: ubuntu-latest
|
||||
# Allow GITHUB_TOKEN to have write permissions
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
steps:
|
||||
- name: Set up node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: Checkout release branch (with history)
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
# Release script requires git history and tags.
|
||||
fetch-depth: 0
|
||||
ref: ${{ github.event.inputs.release-branch }}
|
||||
persist-credentials: false
|
||||
- name: Yarn install
|
||||
run: yarn
|
||||
- name: Publish to NPM
|
||||
# --skipTests No need to run tests
|
||||
# --skipReinstall Yarn install has already been run
|
||||
# --ignoreUnstaged Adding the @firebase/app changeset file means
|
||||
# there's unstaged changes. Ignore.
|
||||
# TODO: Make these flags defaults in the release script.
|
||||
run: yarn release --releaseType Production --ci --skipTests --skipReinstall --ignoreUnstaged
|
||||
env:
|
||||
NPM_TOKEN_ANALYTICS: ${{secrets.NPM_TOKEN_ANALYTICS}}
|
||||
NPM_TOKEN_ANALYTICS_INTEROP_TYPES: ${{secrets.NPM_TOKEN_ANALYTICS_INTEROP_TYPES}}
|
||||
NPM_TOKEN_ANALYTICS_TYPES: ${{secrets.NPM_TOKEN_ANALYTICS_TYPES}}
|
||||
NPM_TOKEN_APP: ${{secrets.NPM_TOKEN_APP}}
|
||||
NPM_TOKEN_APP_TYPES: ${{secrets.NPM_TOKEN_APP_TYPES}}
|
||||
NPM_TOKEN_APP_CHECK: ${{secrets.NPM_TOKEN_APP_CHECK}}
|
||||
NPM_TOKEN_APP_CHECK_INTEROP_TYPES: ${{secrets.NPM_TOKEN_APP_CHECK_INTEROP_TYPES}}
|
||||
NPM_TOKEN_APP_CHECK_TYPES: ${{secrets.NPM_TOKEN_APP_CHECK_TYPES}}
|
||||
NPM_TOKEN_AUTH: ${{secrets.NPM_TOKEN_AUTH}}
|
||||
NPM_TOKEN_AUTH_INTEROP_TYPES: ${{secrets.NPM_TOKEN_AUTH_INTEROP_TYPES}}
|
||||
NPM_TOKEN_AUTH_TYPES: ${{secrets.NPM_TOKEN_AUTH_TYPES}}
|
||||
NPM_TOKEN_COMPONENT: ${{secrets.NPM_TOKEN_COMPONENT}}
|
||||
NPM_TOKEN_DATA_CONNECT: ${{secrets.NPM_TOKEN_DATA_CONNECT}}
|
||||
NPM_TOKEN_DATABASE: ${{secrets.NPM_TOKEN_DATABASE}}
|
||||
NPM_TOKEN_DATABASE_TYPES: ${{secrets.NPM_TOKEN_DATABASE_TYPES}}
|
||||
NPM_TOKEN_FIRESTORE: ${{secrets.NPM_TOKEN_FIRESTORE}}
|
||||
NPM_TOKEN_FIRESTORE_TYPES: ${{secrets.NPM_TOKEN_FIRESTORE_TYPES}}
|
||||
NPM_TOKEN_FUNCTIONS: ${{secrets.NPM_TOKEN_FUNCTIONS}}
|
||||
NPM_TOKEN_FUNCTIONS_TYPES: ${{secrets.NPM_TOKEN_FUNCTIONS_TYPES}}
|
||||
NPM_TOKEN_INSTALLATIONS: ${{secrets.NPM_TOKEN_INSTALLATIONS}}
|
||||
NPM_TOKEN_INSTALLATIONS_TYPES: ${{secrets.NPM_TOKEN_INSTALLATIONS_TYPES}}
|
||||
NPM_TOKEN_LOGGER: ${{secrets.NPM_TOKEN_LOGGER}}
|
||||
NPM_TOKEN_MESSAGING: ${{secrets.NPM_TOKEN_MESSAGING}}
|
||||
NPM_TOKEN_PERFORMANCE: ${{secrets.NPM_TOKEN_PERFORMANCE}}
|
||||
NPM_TOKEN_PERFORMANCE_TYPES: ${{secrets.NPM_TOKEN_PERFORMANCE_TYPES}}
|
||||
NPM_TOKEN_REMOTE_CONFIG: ${{secrets.NPM_TOKEN_REMOTE_CONFIG}}
|
||||
NPM_TOKEN_REMOTE_CONFIG_TYPES: ${{secrets.NPM_TOKEN_REMOTE_CONFIG_TYPES}}
|
||||
NPM_TOKEN_RULES_UNIT_TESTING: ${{secrets.NPM_TOKEN_RULES_UNIT_TESTING}}
|
||||
NPM_TOKEN_STORAGE: ${{secrets.NPM_TOKEN_STORAGE}}
|
||||
NPM_TOKEN_STORAGE_TYPES: ${{secrets.NPM_TOKEN_STORAGE_TYPES}}
|
||||
NPM_TOKEN_UTIL: ${{secrets.NPM_TOKEN_UTIL}}
|
||||
NPM_TOKEN_AI: ${{secrets.NPM_TOKEN_AI}}
|
||||
NPM_TOKEN_VERTEXAI: ${{secrets.NPM_TOKEN_VERTEXAI}}
|
||||
NPM_TOKEN_WEBCHANNEL_WRAPPER: ${{secrets.NPM_TOKEN_WEBCHANNEL_WRAPPER}}
|
||||
NPM_TOKEN_FIREBASE: ${{secrets.NPM_TOKEN_FIREBASE}}
|
||||
NPM_TOKEN_APP_COMPAT: ${{ secrets.NPM_TOKEN_APP_COMPAT }}
|
||||
NPM_TOKEN_INSTALLATIONS_COMPAT: ${{ secrets.NPM_TOKEN_INSTALLATIONS_COMPAT }}
|
||||
NPM_TOKEN_ANALYTICS_COMPAT: ${{ secrets.NPM_TOKEN_ANALYTICS_COMPAT }}
|
||||
NPM_TOKEN_AUTH_COMPAT: ${{ secrets.NPM_TOKEN_AUTH_COMPAT }}
|
||||
NPM_TOKEN_MESSAGING_INTEROP_TYPES: ${{ secrets.NPM_TOKEN_MESSAGING_INTEROP_TYPES }}
|
||||
NPM_TOKEN_FUNCTIONS_COMPAT: ${{ secrets.NPM_TOKEN_FUNCTIONS_COMPAT }}
|
||||
NPM_TOKEN_MESSAGING_COMPAT: ${{ secrets.NPM_TOKEN_MESSAGING_COMPAT }}
|
||||
NPM_TOKEN_PERFORMANCE_COMPAT: ${{ secrets.NPM_TOKEN_PERFORMANCE_COMPAT }}
|
||||
NPM_TOKEN_REMOTE_CONFIG_COMPAT: ${{ secrets.NPM_TOKEN_REMOTE_CONFIG_COMPAT }}
|
||||
NPM_TOKEN_DATABASE_COMPAT: ${{ secrets.NPM_TOKEN_DATABASE_COMPAT }}
|
||||
NPM_TOKEN_FIRESTORE_COMPAT: ${{ secrets.NPM_TOKEN_FIRESTORE_COMPAT }}
|
||||
NPM_TOKEN_STORAGE_COMPAT: ${{ secrets.NPM_TOKEN_STORAGE_COMPAT }}
|
||||
NPM_TOKEN_APP_CHECK_COMPAT: ${{ secrets.NPM_TOKEN_APP_CHECK_COMPAT }}
|
||||
NPM_TOKEN_API_DOCUMENTER: ${{ secrets.NPM_TOKEN_API_DOCUMENTER }}
|
||||
CI: true
|
||||
- name: Get release version
|
||||
id: get-version
|
||||
# In production, there is only one version number
|
||||
run: |
|
||||
VERSION_SCRIPT="const pkg = require('./packages/firebase/package.json'); console.log(pkg.version);"
|
||||
VERSION=`node -e "${VERSION_SCRIPT}"`
|
||||
echo "BASE_VERSION=$VERSION" >> $GITHUB_OUTPUT
|
||||
- name: Echo version in shell
|
||||
run: |
|
||||
echo "Base version: ${STEPS_GET_VERSION_OUTPUTS_BASE_VERSION}"
|
||||
env:
|
||||
STEPS_GET_VERSION_OUTPUTS_BASE_VERSION: ${{ steps.get-version.outputs.BASE_VERSION }}
|
||||
- name: Log to release tracker
|
||||
# Sends release information to cloud functions endpoint of release tracker.
|
||||
run: |
|
||||
DATE=$(date +'%m/%d/%Y')
|
||||
BASE_VERSION=${STEPS_GET_VERSION_OUTPUTS_BASE_VERSION}
|
||||
RELEASE_TRACKER_URL=${{ secrets.RELEASE_TRACKER_URL }}
|
||||
curl -X POST -H "Content-Type:application/json" \
|
||||
-d "{\"version\":\"$BASE_VERSION\",\"date\":\"$DATE\"}" \
|
||||
$RELEASE_TRACKER_URL/logProduction
|
||||
env:
|
||||
STEPS_GET_VERSION_OUTPUTS_BASE_VERSION: ${{ steps.get-version.outputs.BASE_VERSION }}
|
||||
- name: Publish git tags
|
||||
# This commonly runs into permissions errors. Should not block the rest
|
||||
# of the workflow. But should fail workflow so we notice it. So putting
|
||||
# near the end.
|
||||
run: yarn ts-node scripts/release/publish-git-tags.ts
|
||||
# The script injects this token into the git push command
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Create GitHub release
|
||||
# Depends on generated tag above.
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
# Get the newest release tag for the firebase package (e.g. [email protected])
|
||||
NEWEST_TAG=$(git describe --tags --match "firebase@[0-9]*.[0-9]*.[0-9]*" --abbrev=0)
|
||||
|
||||
# Get the release notes from the description of the most recent merged PR into the "release" branch
|
||||
# See: https://github.com/firebase/firebase-js-sdk/pull/8236 for an example description
|
||||
JSON_RELEASE_NOTES=$(gh pr list \
|
||||
--repo "$GITHUB_REPOSITORY" \
|
||||
--state "merged" \
|
||||
--base "release" \
|
||||
--limit 1 \
|
||||
--json "body" \
|
||||
| jq '.[].body | split("\n# Releases\n")[-1]' # Remove the generated changesets header
|
||||
)
|
||||
|
||||
# Prepend the new release header
|
||||
# We have to be careful to insert the new release header after a " character, since we're
|
||||
# modifying the JSON string
|
||||
JSON_RELEASE_NOTES="\"For more detailed release notes, see [Firebase JavaScript SDK Release Notes](https://firebase.google.com/support/release-notes/js).\n\n# What's Changed\n\n${JSON_RELEASE_NOTES:1}"
|
||||
|
||||
# Format the JSON string into a readable markdown string
|
||||
RELEASE_NOTES=$(echo -E $JSON_RELEASE_NOTES | jq -r .)
|
||||
|
||||
# Create the GitHub release
|
||||
gh release create "$NEWEST_TAG" \
|
||||
--repo "$GITHUB_REPOSITORY" \
|
||||
--title "$NEWEST_TAG" \
|
||||
--notes "$RELEASE_NOTES" \
|
||||
--verify-tag
|
||||
@@ -1,200 +0,0 @@
|
||||
# Copyright 2023 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: Staging Release
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
release-branch:
|
||||
description: 'Release branch'
|
||||
type: string
|
||||
default: 'release'
|
||||
required: true
|
||||
source-branch:
|
||||
description: 'Branch to release from'
|
||||
type: choice
|
||||
default: 'main'
|
||||
required: true
|
||||
options:
|
||||
- main
|
||||
- v8
|
||||
- at-11-7-1
|
||||
verbose:
|
||||
description: 'Enable verbose logging'
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
env:
|
||||
# Bump Node memory limit
|
||||
NODE_OPTIONS: "--max_old_space_size=4096"
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
environment: release
|
||||
name: Staging Release
|
||||
runs-on: ubuntu-latest
|
||||
# Block this workflow if run on a non-release branch.
|
||||
if: github.event.inputs.release-branch == 'release' || endsWith(github.event.inputs.release-branch, '-releasebranch')
|
||||
steps:
|
||||
- name: Set up node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: Merge main into release
|
||||
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # ratchet:actions/github-script@v7
|
||||
with:
|
||||
github-token: ${{ secrets.OSS_BOT_GITHUB_TOKEN }}
|
||||
script: |
|
||||
const result = await github.rest.repos.merge({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
base: process.env.RELEASE_BRANCH,
|
||||
head: process.env.SOURCE_BRANCH
|
||||
})
|
||||
console.log(result)
|
||||
env:
|
||||
RELEASE_BRANCH: ${{ github.event.inputs.release-branch }}
|
||||
SOURCE_BRANCH: ${{ github.event.inputs.source-branch }}
|
||||
- name: Checkout current branch (with history)
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
# Release script requires git history and tags.
|
||||
fetch-depth: 0
|
||||
ref: ${{ github.event.inputs.release-branch }}
|
||||
persist-credentials: false
|
||||
- name: Yarn install
|
||||
run: yarn
|
||||
- name: Publish to NPM
|
||||
# --skipTests No need to run tests
|
||||
# --skipReinstall Yarn install has already been run
|
||||
# --ignoreUnstaged Adding the @firebase/app changeset file means
|
||||
# there's unstaged changes. Ignore.
|
||||
# TODO: Make these flags defaults in the release script.
|
||||
run: yarn release --releaseType Staging --ci --skipTests --skipReinstall --ignoreUnstaged
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
NPM_TOKEN_ANALYTICS: ${{secrets.NPM_TOKEN_ANALYTICS}}
|
||||
NPM_TOKEN_ANALYTICS_INTEROP_TYPES: ${{secrets.NPM_TOKEN_ANALYTICS_INTEROP_TYPES}}
|
||||
NPM_TOKEN_ANALYTICS_TYPES: ${{secrets.NPM_TOKEN_ANALYTICS_TYPES}}
|
||||
NPM_TOKEN_APP: ${{secrets.NPM_TOKEN_APP}}
|
||||
NPM_TOKEN_APP_TYPES: ${{secrets.NPM_TOKEN_APP_TYPES}}
|
||||
NPM_TOKEN_APP_CHECK: ${{secrets.NPM_TOKEN_APP_CHECK}}
|
||||
NPM_TOKEN_APP_CHECK_INTEROP_TYPES: ${{secrets.NPM_TOKEN_APP_CHECK_INTEROP_TYPES}}
|
||||
NPM_TOKEN_APP_CHECK_TYPES: ${{secrets.NPM_TOKEN_APP_CHECK_TYPES}}
|
||||
NPM_TOKEN_AUTH: ${{secrets.NPM_TOKEN_AUTH}}
|
||||
NPM_TOKEN_AUTH_INTEROP_TYPES: ${{secrets.NPM_TOKEN_AUTH_INTEROP_TYPES}}
|
||||
NPM_TOKEN_AUTH_TYPES: ${{secrets.NPM_TOKEN_AUTH_TYPES}}
|
||||
NPM_TOKEN_COMPONENT: ${{secrets.NPM_TOKEN_COMPONENT}}
|
||||
NPM_TOKEN_DATA_CONNECT: ${{secrets.NPM_TOKEN_DATA_CONNECT}}
|
||||
NPM_TOKEN_DATABASE: ${{secrets.NPM_TOKEN_DATABASE}}
|
||||
NPM_TOKEN_DATABASE_TYPES: ${{secrets.NPM_TOKEN_DATABASE_TYPES}}
|
||||
NPM_TOKEN_FIRESTORE: ${{secrets.NPM_TOKEN_FIRESTORE}}
|
||||
NPM_TOKEN_FIRESTORE_TYPES: ${{secrets.NPM_TOKEN_FIRESTORE_TYPES}}
|
||||
NPM_TOKEN_FUNCTIONS: ${{secrets.NPM_TOKEN_FUNCTIONS}}
|
||||
NPM_TOKEN_FUNCTIONS_TYPES: ${{secrets.NPM_TOKEN_FUNCTIONS_TYPES}}
|
||||
NPM_TOKEN_INSTALLATIONS: ${{secrets.NPM_TOKEN_INSTALLATIONS}}
|
||||
NPM_TOKEN_INSTALLATIONS_TYPES: ${{secrets.NPM_TOKEN_INSTALLATIONS_TYPES}}
|
||||
NPM_TOKEN_LOGGER: ${{secrets.NPM_TOKEN_LOGGER}}
|
||||
NPM_TOKEN_MESSAGING: ${{secrets.NPM_TOKEN_MESSAGING}}
|
||||
NPM_TOKEN_PERFORMANCE: ${{secrets.NPM_TOKEN_PERFORMANCE}}
|
||||
NPM_TOKEN_PERFORMANCE_TYPES: ${{secrets.NPM_TOKEN_PERFORMANCE_TYPES}}
|
||||
NPM_TOKEN_REMOTE_CONFIG: ${{secrets.NPM_TOKEN_REMOTE_CONFIG}}
|
||||
NPM_TOKEN_REMOTE_CONFIG_TYPES: ${{secrets.NPM_TOKEN_REMOTE_CONFIG_TYPES}}
|
||||
NPM_TOKEN_RULES_UNIT_TESTING: ${{secrets.NPM_TOKEN_RULES_UNIT_TESTING}}
|
||||
NPM_TOKEN_STORAGE: ${{secrets.NPM_TOKEN_STORAGE}}
|
||||
NPM_TOKEN_STORAGE_TYPES: ${{secrets.NPM_TOKEN_STORAGE_TYPES}}
|
||||
NPM_TOKEN_UTIL: ${{secrets.NPM_TOKEN_UTIL}}
|
||||
NPM_TOKEN_AI: ${{secrets.NPM_TOKEN_AI}}
|
||||
NPM_TOKEN_VERTEXAI: ${{secrets.NPM_TOKEN_VERTEXAI}}
|
||||
NPM_TOKEN_WEBCHANNEL_WRAPPER: ${{secrets.NPM_TOKEN_WEBCHANNEL_WRAPPER}}
|
||||
NPM_TOKEN_FIREBASE: ${{secrets.NPM_TOKEN_FIREBASE}}
|
||||
NPM_TOKEN_APP_COMPAT: ${{ secrets.NPM_TOKEN_APP_COMPAT }}
|
||||
NPM_TOKEN_INSTALLATIONS_COMPAT: ${{ secrets.NPM_TOKEN_INSTALLATIONS_COMPAT }}
|
||||
NPM_TOKEN_ANALYTICS_COMPAT: ${{ secrets.NPM_TOKEN_ANALYTICS_COMPAT }}
|
||||
NPM_TOKEN_AUTH_COMPAT: ${{ secrets.NPM_TOKEN_AUTH_COMPAT }}
|
||||
NPM_TOKEN_MESSAGING_INTEROP_TYPES: ${{ secrets.NPM_TOKEN_MESSAGING_INTEROP_TYPES }}
|
||||
NPM_TOKEN_FUNCTIONS_COMPAT: ${{ secrets.NPM_TOKEN_FUNCTIONS_COMPAT }}
|
||||
NPM_TOKEN_MESSAGING_COMPAT: ${{ secrets.NPM_TOKEN_MESSAGING_COMPAT }}
|
||||
NPM_TOKEN_PERFORMANCE_COMPAT: ${{ secrets.NPM_TOKEN_PERFORMANCE_COMPAT }}
|
||||
NPM_TOKEN_REMOTE_CONFIG_COMPAT: ${{ secrets.NPM_TOKEN_REMOTE_CONFIG_COMPAT }}
|
||||
NPM_TOKEN_DATABASE_COMPAT: ${{ secrets.NPM_TOKEN_DATABASE_COMPAT }}
|
||||
NPM_TOKEN_FIRESTORE_COMPAT: ${{ secrets.NPM_TOKEN_FIRESTORE_COMPAT }}
|
||||
NPM_TOKEN_STORAGE_COMPAT: ${{ secrets.NPM_TOKEN_STORAGE_COMPAT }}
|
||||
NPM_TOKEN_APP_CHECK_COMPAT: ${{ secrets.NPM_TOKEN_APP_CHECK_COMPAT }}
|
||||
NPM_TOKEN_API_DOCUMENTER: ${{ secrets.NPM_TOKEN_API_DOCUMENTER }}
|
||||
CI: true
|
||||
VERBOSE_NPM_LOGGING: ${{github.event.inputs.verbose}}
|
||||
- name: Get release version
|
||||
id: get-version
|
||||
# STAGING_VERSION = version with staging hash, e.g. 1.2.3-20430523
|
||||
# BASE_VERSION = version without staging hash, e.g. 1.2.3
|
||||
run: |
|
||||
VERSION_SCRIPT="const pkg = require('./packages/firebase/package.json'); console.log(pkg.version);"
|
||||
VERSION=`node -e "${VERSION_SCRIPT}"`
|
||||
echo "STAGING_VERSION=$VERSION" >> $GITHUB_OUTPUT
|
||||
BASE_VERSION=$(echo $VERSION | cut -d "-" -f 1)
|
||||
echo "BASE_VERSION=$BASE_VERSION" >> $GITHUB_OUTPUT
|
||||
- name: Echo versions in shell
|
||||
run: |
|
||||
echo "Staging release ${STEPS_GET_VERSION_OUTPUTS_STAGING_VERSION}"
|
||||
echo "Base version: ${STEPS_GET_VERSION_OUTPUTS_BASE_VERSION}"
|
||||
env:
|
||||
STEPS_GET_VERSION_OUTPUTS_STAGING_VERSION: ${{ steps.get-version.outputs.STAGING_VERSION }}
|
||||
STEPS_GET_VERSION_OUTPUTS_BASE_VERSION: ${{ steps.get-version.outputs.BASE_VERSION }}
|
||||
- name: Launch E2E tests workflow
|
||||
# Trigger e2e-test.yml
|
||||
run: |
|
||||
OSS_BOT_GITHUB_TOKEN=${{ secrets.OSS_BOT_GITHUB_TOKEN }}
|
||||
VERSION_OR_TAG=${STEPS_GET_VERSION_OUTPUTS_STAGING_VERSION}
|
||||
curl -X POST \
|
||||
-H "Content-Type:application/json" \
|
||||
-H "Accept:application/vnd.github.v3+json" \
|
||||
-H "Authorization:Bearer $OSS_BOT_GITHUB_TOKEN" \
|
||||
-d "{\"event_type\":\"staging-tests\", \"client_payload\":{\"versionOrTag\":\"$VERSION_OR_TAG\"}}" \
|
||||
https://api.github.com/repos/firebase/firebase-js-sdk/dispatches
|
||||
env:
|
||||
STEPS_GET_VERSION_OUTPUTS_STAGING_VERSION: ${{ steps.get-version.outputs.STAGING_VERSION }}
|
||||
- name: Check for changes requiring a reference doc publish
|
||||
id: docs-check
|
||||
# If a diff is found (length of DIFF_CONTENTS > 0) it will write DOCS_NEEDED=true
|
||||
run: |
|
||||
LAST_PUBLISHED_VERSION=$(npm info firebase version)
|
||||
DIFF_CONTENTS=$(git diff firebase@$LAST_PUBLISHED_VERSION HEAD docs-devsite)
|
||||
if [ -n "$DIFF_CONTENTS" ]
|
||||
then
|
||||
echo "DOCS_NEEDED=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "DOCS_NEEDED=false" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
- name: Log to release tracker
|
||||
# Sends release information to cloud functions endpoint of release tracker.
|
||||
if: ${{ always() }}
|
||||
run: |
|
||||
DATE=$(date +'%m/%d/%Y')
|
||||
BASE_VERSION=${STEPS_GET_VERSION_OUTPUTS_BASE_VERSION}
|
||||
STAGING_VERSION=${STEPS_GET_VERSION_OUTPUTS_STAGING_VERSION}
|
||||
OPERATOR=${GITHUB_ACTOR}
|
||||
RELEASE_TRACKER_URL=${{ secrets.RELEASE_TRACKER_URL }}
|
||||
DOCS_NEEDED=${STEPS_DOCS_CHECK_OUTPUTS_DOCS_NEEDED}
|
||||
curl -X POST -H "Content-Type:application/json" \
|
||||
-d "{\"version\":\"$BASE_VERSION\",\"tag\":\"$STAGING_VERSION\",\"date\":\"$DATE\",\"operator\":\"$OPERATOR\",\"docs_needed\":\"$DOCS_NEEDED\"}" \
|
||||
$RELEASE_TRACKER_URL/logStaging
|
||||
env:
|
||||
STEPS_GET_VERSION_OUTPUTS_BASE_VERSION: ${{ steps.get-version.outputs.BASE_VERSION }}
|
||||
STEPS_GET_VERSION_OUTPUTS_STAGING_VERSION: ${{ steps.get-version.outputs.STAGING_VERSION }}
|
||||
STEPS_DOCS_CHECK_OUTPUTS_DOCS_NEEDED: ${{ steps.docs-check.outputs.DOCS_NEEDED }}
|
||||
@@ -1,296 +0,0 @@
|
||||
# Copyright 2023 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: Test All Packages
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
# make chromedriver detect installed Chrome version and download the corresponding driver
|
||||
DETECT_CHROMEDRIVER_VERSION: true
|
||||
# The default behavior of chromedriver uses the older Chrome download URLs. We need to override
|
||||
# the behavior to use the new URLs.
|
||||
CHROMEDRIVER_CDNURL: https://googlechromelabs.github.io/
|
||||
CHROMEDRIVER_CDNBINARIESURL: https://storage.googleapis.com/chrome-for-testing-public
|
||||
CHROME_VALIDATED_VERSION: linux-132.0.6834.110
|
||||
CHROME_VERSION_MISMATCH_MESSAGE: "The Chrome version doesn't match the previously validated version. Consider updating CHROME_VALIDATED_VERSION in the GitHub workflow if tests pass, or rollback the installed Chrome version if tests fail."
|
||||
artifactRetentionDays: 14
|
||||
# Bump Node memory limit
|
||||
NODE_OPTIONS: "--max_old_space_size=4096"
|
||||
|
||||
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
|
||||
run: |
|
||||
npx @puppeteer/browsers install chrome@stable
|
||||
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- 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 --exclude=.git .
|
||||
gzip build.tar
|
||||
- name: Upload build archive
|
||||
if: ${{ !cancelled() }}
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # ratchet:actions/upload-artifact@v4
|
||||
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: |
|
||||
npx @puppeteer/browsers install chrome@stable
|
||||
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Download build archive
|
||||
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # ratchet:actions/download-artifact@v4
|
||||
with:
|
||||
name: build.tar.gz
|
||||
- name: Unzip build artifact
|
||||
run: tar xf build.tar.gz
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
# firebase-tools has a minimum java version requirement and is called by
|
||||
# rules-unit-testing tests
|
||||
- name: Set up Java (22)
|
||||
uses: actions/setup-java@03ad4de0992f5dab5e18fcb136590ce7c4a0ac95 # v5.6.0
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '22'
|
||||
- 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}' test:ci
|
||||
node scripts/print_test_logs.js
|
||||
env:
|
||||
FIREBASE_TOKEN: ${{ secrets.FIREBASE_CLI_TOKEN }}
|
||||
- name: Generate coverage file
|
||||
run: yarn ci:coverage
|
||||
- name: Merge and fix coverage files for test-the-rest
|
||||
run: |
|
||||
# Clear out any existing master file just in case
|
||||
> ./lcov-all.info
|
||||
|
||||
# Find all LCOV files across all packages
|
||||
find ./packages -type f -name "lcov.info" | while read lcov_file; do
|
||||
# lcov_file looks like: ./packages/analytics/coverage/lcov.info
|
||||
# Extract the package name (the 3rd part of the path split by '/')
|
||||
PKG_NAME=$(echo "$lcov_file" | cut -d'/' -f3)
|
||||
|
||||
# Fix the path for this specific package and append it to the master file
|
||||
sed "s|SF:src/|SF:packages/$PKG_NAME/src/|g" "$lcov_file" >> ./lcov-all.info
|
||||
done
|
||||
- name: Run coverage
|
||||
uses: coverallsapp/github-action@09b709cf6a16e30b0808ba050c7a6e8a5ef13f8d # ratchet:coverallsapp/github-action@master
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
path-to-lcov: ./lcov-all.info
|
||||
flag-name: test-the-rest-coverage
|
||||
parallel: true
|
||||
continue-on-error: true
|
||||
|
||||
test-auth:
|
||||
name: (Auth) 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: |
|
||||
npx @puppeteer/browsers install chrome@stable
|
||||
chromeVersionString=$(ls chrome)
|
||||
if [ "$CHROME_VALIDATED_VERSION" != "$chromeVersionString" ]; then
|
||||
echo "::warning ::${CHROME_VERSION_MISMATCH_MESSAGE}"
|
||||
echo "::warning ::Previously validated version: ${CHROME_VALIDATED_VERSION} vs. Installed version: $chromeVersionString"
|
||||
fi
|
||||
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Download build archive
|
||||
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # ratchet:actions/download-artifact@v4
|
||||
with:
|
||||
name: build.tar.gz
|
||||
- name: Unzip build artifact
|
||||
run: tar xf build.tar.gz
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- 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 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: Merge and fix coverage files for test-auth
|
||||
run: |
|
||||
# 1. Smash all Node and Browser coverage files into one giant file
|
||||
find ./packages/auth/coverage -type f -name "lcov.info" -exec cat {} + > ./lcov-all-auth.info
|
||||
|
||||
# 2. Fix standard Node paths
|
||||
sed -i 's|SF:src/|SF:packages/auth/src/|g' ./lcov-all-auth.info
|
||||
- name: Run coverage
|
||||
uses: coverallsapp/github-action@09b709cf6a16e30b0808ba050c7a6e8a5ef13f8d # ratchet:coverallsapp/github-action@master
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
path-to-lcov: ./lcov-all-auth.info
|
||||
flag-name: test-auth-coverage
|
||||
parallel: true
|
||||
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: |
|
||||
npx @puppeteer/browsers install chrome@stable
|
||||
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Download build archive
|
||||
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # ratchet:actions/download-artifact@v4
|
||||
with:
|
||||
name: build.tar.gz
|
||||
- name: Unzip build artifact
|
||||
run: tar xf build.tar.gz
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- 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: |
|
||||
yarn lerna run test:all:ci --scope '@firebase/firestore*' --stream --concurrency 1
|
||||
env:
|
||||
FIREBASE_TOKEN: ${{ secrets.FIREBASE_CLI_TOKEN }}
|
||||
EXPERIMENTAL_MODE: true
|
||||
- name: Generate coverage file
|
||||
run: yarn ci:coverage
|
||||
- name: Merge and fix coverage files for test-firestore
|
||||
run: |
|
||||
# 1. Smash all Node and Browser coverage files into one giant file
|
||||
find ./packages/firestore/coverage -type f -name "lcov.info" -exec cat {} + > ./lcov-all-firestore.info
|
||||
|
||||
# 2. Fix standard Node paths
|
||||
sed -i 's|SF:src/|SF:packages/firestore/src/|g' ./lcov-all-firestore.info
|
||||
- name: Run coverage
|
||||
uses: coverallsapp/github-action@09b709cf6a16e30b0808ba050c7a6e8a5ef13f8d # ratchet:coverallsapp/github-action@master
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
path-to-lcov: ./lcov-all-firestore.info
|
||||
flag-name: test-firestore-coverage
|
||||
parallel: true
|
||||
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: |
|
||||
npx @puppeteer/browsers install chrome@stable
|
||||
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Download build archive
|
||||
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # ratchet:actions/download-artifact@v4
|
||||
with:
|
||||
name: build.tar.gz
|
||||
- name: Unzip build artifact
|
||||
run: tar xf build.tar.gz
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- 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 }}
|
||||
|
||||
coveralls-finish:
|
||||
name: Finalize Coveralls
|
||||
needs: [test-the-rest, test-auth, test-firestore]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Coveralls Finished
|
||||
uses: coverallsapp/github-action@09b709cf6a16e30b0808ba050c7a6e8a5ef13f8d # ratchet:coverallsapp/github-action@master
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
parallel-finished: true
|
||||
@@ -1,138 +0,0 @@
|
||||
# Copyright 2023 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: Test Auth
|
||||
|
||||
on: pull_request
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
# make chromedriver detect installed Chrome version and download the corresponding driver
|
||||
DETECT_CHROMEDRIVER_VERSION: true
|
||||
# The default behavior of chromedriver uses the older Chrome download URLs. We need to override
|
||||
# the behavior to use the new URLs.
|
||||
CHROMEDRIVER_CDNURL: https://googlechromelabs.github.io/
|
||||
CHROMEDRIVER_CDNBINARIESURL: https://storage.googleapis.com/chrome-for-testing-public
|
||||
CHROME_VALIDATED_VERSION: linux-120.0.6099.71
|
||||
# Bump Node memory limit
|
||||
NODE_OPTIONS: "--max_old_space_size=4096"
|
||||
|
||||
jobs:
|
||||
test-chrome:
|
||||
name: Test Auth on Chrome and Node If Changed
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# install Chrome first, so the correct version of webdriver can be installed by chromedriver
|
||||
# when setting up the repo
|
||||
#
|
||||
# Note: we only need to check the chrome version change in one job as the warning annotation
|
||||
# is appended to the entire workflow results, not just this job's results.
|
||||
- name: install Chrome stable
|
||||
env:
|
||||
CHROME_VERSION_MISMATCH_MESSAGE: "The Chrome version doesn't match the previously validated version. Consider updating CHROME_VALIDATED_VERSION in the GitHub workflow if tests pass."
|
||||
run: |
|
||||
npx @puppeteer/browsers install chrome@stable
|
||||
chromeVersionString=$(ls chrome)
|
||||
if [ "$CHROME_VALIDATED_VERSION" != "$chromeVersionString" ]; then
|
||||
echo "::warning ::The Chrome version doesn't match the previously validated version. Consider updating CHROME_VALIDATED_VERSION in the GitHub workflow if tests pass."
|
||||
echo "::warning ::Previously validated version: ${CHROME_VALIDATED_VERSION} vs. Installed version: $chromeVersionString"
|
||||
echo "CHROME_VERSION_NOTES=$CHROME_VERSION_MISMATCH_MESSAGE" >> "$GITHUB_ENV"
|
||||
fi
|
||||
- name: Test Evn TEMP
|
||||
run: |
|
||||
echo $CHROME_VERSION_NOTES=$CHROME_VERSION_MISMATCH_MESSAGE
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
# This makes Actions fetch all Git history so run-changed script can diff properly.
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
# firebase-tools has a minimum java version requirement
|
||||
- name: Set up Java (22)
|
||||
uses: actions/setup-java@03ad4de0992f5dab5e18fcb136590ce7c4a0ac95 # v5.6.0
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '22'
|
||||
- name: Test setup and yarn install
|
||||
run: |
|
||||
cp config/ci.config.json config/project.json
|
||||
yarn
|
||||
- name: build
|
||||
run: yarn build:changed auth
|
||||
- name: Run tests on changed packages
|
||||
run: xvfb-run yarn test:changed auth --concurrency 1
|
||||
test-firefox:
|
||||
name: Test Auth on Firefox If Changed
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: install Firefox stable
|
||||
run: npx @puppeteer/browsers install firefox@stable
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
# This makes Actions fetch all Git history so run-changed script can diff properly.
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: Test setup and yarn install
|
||||
env:
|
||||
CHROMEDRIVER_SKIP_DOWNLOAD: true
|
||||
run: |
|
||||
cp config/ci.config.json config/project.json
|
||||
yarn
|
||||
- name: build
|
||||
run: yarn build:changed auth
|
||||
- name: Run tests on auth changed packages
|
||||
run: xvfb-run yarn test:changed auth --concurrency 1
|
||||
env:
|
||||
BROWSERS: 'Firefox'
|
||||
|
||||
test-webkit:
|
||||
name: Test Auth on Webkit if Changed
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: Test setup and yarn install
|
||||
env:
|
||||
CHROMEDRIVER_SKIP_DOWNLOAD: true
|
||||
run: |
|
||||
cp config/ci.config.json config/project.json
|
||||
yarn
|
||||
npx playwright install webkit
|
||||
- name: build
|
||||
run: yarn build:changed auth
|
||||
- name: Run tests on changed packages
|
||||
run: yarn test:changed auth --concurrency 1
|
||||
env:
|
||||
BROWSERS: 'WebkitHeadless'
|
||||
@@ -1,56 +0,0 @@
|
||||
# Copyright 2023 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: Test FCM integration
|
||||
|
||||
on: pull_request
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
# make chromedriver detect installed Chrome version and download the corresponding driver
|
||||
DETECT_CHROMEDRIVER_VERSION: true
|
||||
# Bump Node memory limit
|
||||
NODE_OPTIONS: "--max_old_space_size=4096"
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: Test FCM integration If Changed
|
||||
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: Checkout Repo
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
# This makes Actions fetch all Git history so run-changed script can diff properly.
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: Test setup and yarn install
|
||||
run: |
|
||||
cp config/ci.config.json config/project.json
|
||||
yarn
|
||||
- name: build
|
||||
run: yarn build:changed fcm-integration
|
||||
- name: Run tests if FCM or its dependencies has changed
|
||||
run: xvfb-run yarn test:changed fcm-integration
|
||||
@@ -1,90 +0,0 @@
|
||||
# Copyright 2023 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: Test Firestore Integration
|
||||
|
||||
on: pull_request
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
# Bump Node memory limit
|
||||
NODE_OPTIONS: "--max_old_space_size=4096"
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: Test Firestore Integration If Changed
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
run_terraform_steps: ${{ secrets.JSSDK_ACTIONS_SA_KEY != '' }}
|
||||
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
# This makes Actions fetch all Git history so run-changed script can diff properly.
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
# This commit represents v0.8.3
|
||||
- uses: 'google-github-actions/auth@fc2174804b84f912b1f6d334e9463f484f1c552d'
|
||||
if: ${{ fromJSON(env.run_terraform_steps) }}
|
||||
with:
|
||||
credentials_json: '${{ secrets.JSSDK_ACTIONS_SA_KEY }}'
|
||||
|
||||
# create composite indexes with Terraform
|
||||
- name: Setup Terraform
|
||||
if: ${{ fromJSON(env.run_terraform_steps) }}
|
||||
# This commit represents v3.1.2
|
||||
uses: hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd
|
||||
- name: Terraform Init
|
||||
if: ${{ fromJSON(env.run_terraform_steps) }}
|
||||
run: |
|
||||
cp config/ci.config.json config/project.json
|
||||
cd packages/firestore
|
||||
terraform init
|
||||
continue-on-error: true
|
||||
- name: Terraform Apply
|
||||
if: github.event_name == 'pull_request' && fromJSON(env.run_terraform_steps)
|
||||
run: |
|
||||
cd packages/firestore
|
||||
|
||||
# Define a temporary file, redirect both stdout and stderr to it
|
||||
output_file=$(mktemp)
|
||||
if ! terraform apply -var-file=../../config/project.json -auto-approve > "$output_file" 2>&1 ; then
|
||||
cat "$output_file"
|
||||
if cat "$output_file" | grep -q "index already exists"; then
|
||||
echo "==================================================================================="
|
||||
echo -e "\e[93m\e[1mTerraform apply failed due to index already exists; We can safely ignore this error.\e[0m"
|
||||
echo "==================================================================================="
|
||||
fi
|
||||
exit 1
|
||||
fi
|
||||
rm -f "$output_file"
|
||||
continue-on-error: true
|
||||
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: install Chrome stable
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install google-chrome-stable
|
||||
- name: Test setup and yarn install
|
||||
run: yarn
|
||||
- name: build
|
||||
run: yarn build:changed firestore-integration
|
||||
- name: Run tests if firestore or its dependencies has changed
|
||||
run: yarn test:changed firestore-integration
|
||||
@@ -1,294 +0,0 @@
|
||||
# Copyright 2023 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: Test Firestore
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
artifactRetentionDays: 14
|
||||
# Bump Node memory limit
|
||||
NODE_OPTIONS: "--max_old_space_size=4096"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build Firestore
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
changed: ${{ steps.set-output.outputs.CHANGED }}
|
||||
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
# This makes Actions fetch all Git history so run-changed script can diff properly.
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: install Chrome stable
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install google-chrome-stable
|
||||
- name: Test setup and yarn install
|
||||
run: |
|
||||
cp config/ci.config.json config/project.json
|
||||
yarn
|
||||
- name: build
|
||||
id: build
|
||||
run: |
|
||||
set -o pipefail
|
||||
yarn build:changed firestore | tee ${{ runner.temp }}/yarn.log.txt
|
||||
continue-on-error: false
|
||||
- name: Check if Firestore is changed
|
||||
id: check-changed
|
||||
run: egrep "Skipping all" ${{ runner.temp }}/yarn.log.txt
|
||||
# Continue when "Skipping all" is not found
|
||||
continue-on-error: true
|
||||
- name: set output
|
||||
# This means "Skipping all" was not found
|
||||
if: steps.check-changed.outcome != 'success'
|
||||
id: set-output
|
||||
run: echo "CHANGED=true" >> "$GITHUB_OUTPUT";
|
||||
- name: Archive build
|
||||
if: ${{ !cancelled() && steps.build.outcome == 'success' && steps.check-changed.outcome != 'success' }}
|
||||
run: |
|
||||
tar -cf build.tar --exclude=.git .
|
||||
gzip build.tar
|
||||
- name: Upload build archive
|
||||
if: ${{ !cancelled() && steps.build.outcome == 'success' && steps.check-changed.outcome != 'success' }}
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # ratchet:actions/upload-artifact@v4
|
||||
with:
|
||||
name: build.tar.gz
|
||||
path: build.tar.gz
|
||||
retention-days: ${{ env.artifactRetentionDays }}
|
||||
|
||||
compat-test-chrome:
|
||||
name: Test Firestore Compatible
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
if: ${{ needs.build.outputs.changed == 'true'}}
|
||||
steps:
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: install Chrome stable
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install google-chrome-stable
|
||||
- name: Download build archive
|
||||
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # ratchet:actions/download-artifact@v4
|
||||
with:
|
||||
name: build.tar.gz
|
||||
- name: Unzip build artifact
|
||||
run: tar xf build.tar.gz
|
||||
- name: Test setup and yarn install
|
||||
run: cp config/ci.config.json config/project.json
|
||||
- name: Run compat tests
|
||||
run: cd packages/firestore-compat && yarn run test:ci
|
||||
|
||||
test-chrome:
|
||||
name: Test Firestore
|
||||
strategy:
|
||||
matrix:
|
||||
test-name: ["assertion-id:check", "test:browser", "test:node:emulator", "test:lite:browser", "test:browser:prod:enterprise", "test:lite:browser:enterprise"]
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
if: ${{ needs.build.outputs.changed == 'true'}}
|
||||
steps:
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: install Chrome stable
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install google-chrome-stable
|
||||
- name: Download build archive
|
||||
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # ratchet:actions/download-artifact@v4
|
||||
with:
|
||||
name: build.tar.gz
|
||||
- name: Unzip build artifact
|
||||
run: tar xf build.tar.gz
|
||||
- name: Test setup and yarn install
|
||||
run: cp config/ci.config.json config/project.json
|
||||
- name: Run tests
|
||||
run: cd packages/firestore && yarn run ${{ matrix.test-name }}
|
||||
env:
|
||||
EXPERIMENTAL_MODE: true
|
||||
|
||||
test-firestore-nightly-with-chrome:
|
||||
name: Test Nightly Firestore with Chrome
|
||||
strategy:
|
||||
matrix:
|
||||
test-name: ["test:browser:nightly"]
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
if: ${{ github.event_name != 'pull_request' }}
|
||||
steps:
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: install Chrome stable
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install google-chrome-stable
|
||||
- name: Download build archive
|
||||
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # ratchet:actions/download-artifact@v4
|
||||
with:
|
||||
name: build.tar.gz
|
||||
- name: Unzip build artifact
|
||||
run: tar xf build.tar.gz
|
||||
- name: Test setup against nightly Firestore
|
||||
env:
|
||||
INTEG_TESTS_GOOGLE_SERVICES: ${{ secrets.FIRESTORE_SDK_NIGHTLY_PROJECT_JSON }}
|
||||
run: |
|
||||
echo $INTEG_TESTS_GOOGLE_SERVICES > config/project.json
|
||||
- name: Run tests
|
||||
run: cd packages/firestore && yarn run ${{ matrix.test-name }}
|
||||
env:
|
||||
EXPERIMENTAL_MODE: true
|
||||
|
||||
|
||||
compat-test-firefox:
|
||||
name: Test Firestore Compatible on Firefox
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
if: ${{ needs.build.outputs.changed == 'true'}}
|
||||
steps:
|
||||
- name: install Firefox stable
|
||||
run: npx @puppeteer/browsers install firefox@stable
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: Download build archive
|
||||
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # ratchet:actions/download-artifact@v4
|
||||
with:
|
||||
name: build.tar.gz
|
||||
- name: Unzip build artifact
|
||||
run: tar xf build.tar.gz
|
||||
- name: Test setup and yarn install
|
||||
run: cp config/ci.config.json config/project.json
|
||||
- name: Run compat tests
|
||||
run: cd packages/firestore-compat && xvfb-run yarn run test:ci
|
||||
env:
|
||||
BROWSERS: 'Firefox'
|
||||
|
||||
test-firefox:
|
||||
name: Test Firestore on Firefox
|
||||
strategy:
|
||||
matrix:
|
||||
test-name: ["test:browser", "test:node:emulator", "test:lite:browser", "test:browser:prod:enterprise", "test:lite:browser:enterprise"]
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
if: ${{ needs.build.outputs.changed == 'true'}}
|
||||
steps:
|
||||
- name: install Firefox stable
|
||||
run: npx @puppeteer/browsers install firefox@stable
|
||||
- name: Download build archive
|
||||
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # ratchet:actions/download-artifact@v4
|
||||
with:
|
||||
name: build.tar.gz
|
||||
- name: Unzip build artifact
|
||||
run: tar xf build.tar.gz
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: Test setup and yarn install
|
||||
run: cp config/ci.config.json config/project.json
|
||||
- name: Run tests
|
||||
run: cd packages/firestore && xvfb-run yarn run ${{ matrix.test-name }}
|
||||
env:
|
||||
BROWSERS: 'Firefox'
|
||||
EXPERIMENTAL_MODE: true
|
||||
|
||||
compat-test-webkit:
|
||||
name: Test Firestore Compatible on Webkit
|
||||
runs-on: macos-latest
|
||||
needs: build
|
||||
if: ${{ needs.build.outputs.changed == 'true'}}
|
||||
steps:
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: Download build archive
|
||||
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # ratchet:actions/download-artifact@v4
|
||||
with:
|
||||
name: build.tar.gz
|
||||
- name: Unzip build artifact
|
||||
run: tar xf build.tar.gz
|
||||
- name: Test setup
|
||||
run: |
|
||||
cp config/ci.config.json config/project.json
|
||||
npx playwright install webkit
|
||||
- name: Run compat tests
|
||||
run: cd packages/firestore-compat && yarn run test:ci
|
||||
env:
|
||||
BROWSERS: 'WebkitHeadless'
|
||||
|
||||
test-webkit:
|
||||
name: Test Firestore on Webkit
|
||||
strategy:
|
||||
matrix:
|
||||
# TODO (dlarocque): Add test:travis once the browser tests are isolated
|
||||
# Exclude test:travis for now, since it includes node tests, which are failing for
|
||||
# some reason.
|
||||
test-name: ["test:browser", "test:lite:browser", "test:browser:prod:enterprise", "test:lite:browser:enterprise"]
|
||||
runs-on: macos-latest
|
||||
needs: build
|
||||
if: ${{ needs.build.outputs.changed == 'true'}}
|
||||
steps:
|
||||
- name: Download build archive
|
||||
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # ratchet:actions/download-artifact@v4
|
||||
with:
|
||||
name: build.tar.gz
|
||||
- name: Unzip build artifact
|
||||
run: tar xf build.tar.gz
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: Test setup
|
||||
run: |
|
||||
cp config/ci.config.json config/project.json
|
||||
npx playwright install webkit
|
||||
- name: Run tests
|
||||
run: cd packages/firestore && yarn run ${{ matrix.test-name }}
|
||||
env:
|
||||
BROWSERS: 'WebkitHeadless'
|
||||
EXPERIMENTAL_MODE: true
|
||||
# A job that fails if any required job in the test matrix fails,
|
||||
# to be used as a required check for merging.
|
||||
check-required-tests:
|
||||
runs-on: ubuntu-latest
|
||||
if: always()
|
||||
name: Check all required tests results
|
||||
needs: [build, test-chrome, compat-test-chrome]
|
||||
steps:
|
||||
- name: Check test matrix
|
||||
if: needs.build.result == 'failure' || needs.test-chrome.result == 'failure' || needs.compat-test-chrome.result == 'failure'
|
||||
run: exit 1
|
||||
@@ -1,62 +0,0 @@
|
||||
# Copyright 2023 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: Test @firebase/rules-unit-testing
|
||||
|
||||
on: pull_request
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
# Bump Node memory limit
|
||||
NODE_OPTIONS: "--max_old_space_size=4096"
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: Test Misc Packages If Changed
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
# This makes Actions fetch all Git history so run-changed script can diff properly.
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
# firebase-tools has a minimum java version requirement and is called by
|
||||
# rules-unit-testing tests
|
||||
- name: Set up Java (22)
|
||||
uses: actions/setup-java@03ad4de0992f5dab5e18fcb136590ce7c4a0ac95 # v5.6.0
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '22'
|
||||
- name: install Chrome stable
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install google-chrome-stable
|
||||
- name: Test setup and yarn install
|
||||
run: |
|
||||
cp config/ci.config.json config/project.json
|
||||
yarn
|
||||
- name: build
|
||||
run: yarn build:changed misc
|
||||
- name: Run tests
|
||||
run: yarn test:changed misc
|
||||
env:
|
||||
FIREBASE_TOKEN: ${{ secrets.FIREBASE_CLI_TOKEN }}
|
||||
@@ -1,117 +0,0 @@
|
||||
# Copyright 2023 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: Test Modified Packages
|
||||
|
||||
on: pull_request
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
# Bump Node memory limit
|
||||
NODE_OPTIONS: "--max_old_space_size=4096"
|
||||
|
||||
jobs:
|
||||
test-chrome:
|
||||
name: Test Packages With Changed Files in Chrome and Node
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
# This makes Actions fetch all Git history so run-changed script can diff properly.
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
# firebase-tools has a minimum java version requirement
|
||||
- name: Set up Java (22)
|
||||
uses: actions/setup-java@03ad4de0992f5dab5e18fcb136590ce7c4a0ac95 # v5.6.0
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '22'
|
||||
- name: install Chrome stable
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install google-chrome-stable
|
||||
- name: Test setup and yarn install
|
||||
run: |
|
||||
cp config/ci.config.json config/project.json
|
||||
yarn
|
||||
- name: build
|
||||
run: yarn build:changed core
|
||||
- name: Run tests on changed packages
|
||||
run: xvfb-run yarn test:changed core
|
||||
|
||||
test-firefox:
|
||||
name: Test Packages With Changed Files in Firefox
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: install Firefox stable
|
||||
run: npx @puppeteer/browsers install firefox@stable
|
||||
- name: Test setup and yarn install
|
||||
env:
|
||||
CHROMEDRIVER_SKIP_DOWNLOAD: true
|
||||
run: |
|
||||
cp config/ci.config.json config/project.json
|
||||
yarn
|
||||
- name: build
|
||||
run: yarn build:changed core
|
||||
- name: Run tests on changed packages
|
||||
run: xvfb-run yarn test:changed core
|
||||
env:
|
||||
BROWSERS: 'Firefox'
|
||||
|
||||
|
||||
test-webkit:
|
||||
name: Test Packages With Changed Files in Webkit
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ratchet:actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
- name: Set up Node (22)
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22.12.0
|
||||
- name: Test setup and yarn install
|
||||
env:
|
||||
CHROMEDRIVER_SKIP_DOWNLOAD: true
|
||||
run: |
|
||||
cp config/ci.config.json config/project.json
|
||||
yarn
|
||||
npx playwright install webkit
|
||||
- name: build
|
||||
run: yarn build:changed core
|
||||
- name: Run tests on changed packages
|
||||
run: yarn test:changed core
|
||||
env:
|
||||
BROWSERS: 'WebkitHeadless'
|
||||
Reference in New Issue
Block a user