From 4b4db85ff8f61df94309150198ef492dc702fd2f Mon Sep 17 00:00:00 2001 From: Tanzim Hossain Date: Mon, 15 Jul 2024 13:17:21 -0400 Subject: [PATCH] VertexAI: add support for mock responses versioning system (#8361) --- .../workflows/check-vertexai-responses.yml | 54 +++++++++++++++++++ packages/vertexai/package.json | 2 +- scripts/update_vertexai_responses.sh | 35 ++++++++++++ 3 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/check-vertexai-responses.yml create mode 100755 scripts/update_vertexai_responses.sh diff --git a/.github/workflows/check-vertexai-responses.yml b/.github/workflows/check-vertexai-responses.yml new file mode 100644 index 00000000000..61f9cd45549 --- /dev/null +++ b/.github/workflows/check-vertexai-responses.yml @@ -0,0 +1,54 @@ +# 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 + +jobs: + check-version: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - 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/vertexai/test-utils/vertexai-sdk-test-data + - name: Find comment from previous run if exists + uses: peter-evans/find-comment@3eae4d37986fb5a8592848f6a574fdf654e61f9e + 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}} + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 + 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: detomarco/delete-comment@850734dd44d8b15fef55b45252613b903ceb06f0 + with: + comment-id: ${{ steps.fc.outputs.comment-id }} diff --git a/packages/vertexai/package.json b/packages/vertexai/package.json index e6b7b0b5f6e..9c72f9484d6 100644 --- a/packages/vertexai/package.json +++ b/packages/vertexai/package.json @@ -33,7 +33,7 @@ "build": "rollup -c && yarn api-report", "build:deps": "lerna run --scope @firebase/vertexai --include-dependencies build", "dev": "rollup -c -w", - "update-responses": "cd test-utils && rm -rf vertexai-sdk-test-data && git clone --depth 1 https://github.com/FirebaseExtended/vertexai-sdk-test-data.git", + "update-responses": "../../scripts/update_vertexai_responses.sh", "testsetup": "yarn update-responses && yarn ts-node ./test-utils/convert-mocks.ts", "test": "run-p --npm-path npm lint test:browser", "test:ci": "yarn testsetup && node ../../scripts/run_tests_in_ci.js -s test", diff --git a/scripts/update_vertexai_responses.sh b/scripts/update_vertexai_responses.sh new file mode 100755 index 00000000000..98f69b14f96 --- /dev/null +++ b/scripts/update_vertexai_responses.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# 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. + +# This script replaces mock response files for Vertex AI unit tests with a fresh +# clone of the shared repository of Vertex AI test data. + +RESPONSES_VERSION='v1.*' # The major version of mock responses to use +REPO_NAME="vertexai-sdk-test-data" +REPO_LINK="https://github.com/FirebaseExtended/$REPO_NAME.git" + +cd "$(dirname "$0")/../packages/vertexai/test-utils" || exit +rm -rf "$REPO_NAME" +git clone "$REPO_LINK" --quiet || exit +cd "$REPO_NAME" || exit + +# Find and checkout latest tag matching major version +TAG=$(git tag -l "$RESPONSES_VERSION" --sort=v:refname | tail -n1) +if [ -z "$TAG" ]; then + echo "Error: No tag matching '$RESPONSES_VERSION' found in $REPO_NAME" + exit +fi +git checkout "$TAG" --quiet