mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-03-10 22:21:22 -07:00
101 lines
3.2 KiB
YAML
101 lines
3.2 KiB
YAML
name: 'Verify an NPM release'
|
|
description: 'Fetches a package from NPM and does some basic smoke tests'
|
|
|
|
inputs:
|
|
npm-package:
|
|
description: 'NPM Package'
|
|
required: true
|
|
default: '@google/gemini-cli@latest'
|
|
npm-registry-url:
|
|
description: 'NPM Registry URL'
|
|
required: true
|
|
npm-registry-scope:
|
|
description: 'NPM Registry Scope'
|
|
required: true
|
|
expected-version:
|
|
description: 'Expected version'
|
|
required: true
|
|
gemini_api_key:
|
|
description: 'The API key for running integration tests.'
|
|
required: true
|
|
github-token:
|
|
description: 'The GitHub token for running integration tests.'
|
|
required: true
|
|
working-directory:
|
|
description: 'The working directory to run the tests in.'
|
|
required: false
|
|
default: '.'
|
|
|
|
runs:
|
|
using: 'composite'
|
|
steps:
|
|
- name: '📝 Print Inputs'
|
|
shell: 'bash'
|
|
env:
|
|
JSON_INPUTS: '${{ toJSON(inputs) }}'
|
|
run: 'echo "$JSON_INPUTS"'
|
|
|
|
- name: 'setup node'
|
|
uses: 'actions/setup-node@v4'
|
|
with:
|
|
node-version: '20'
|
|
|
|
- name: 'configure .npmrc'
|
|
uses: './.github/actions/setup-npmrc'
|
|
with:
|
|
github-token: '${{ inputs.github-token }}'
|
|
|
|
- name: 'Clear npm cache'
|
|
shell: 'bash'
|
|
run: 'npm cache clean --force'
|
|
|
|
- name: 'Install from NPM'
|
|
uses: 'nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08' # ratchet:nick-fields/retry@v3
|
|
with:
|
|
timeout_seconds: 900
|
|
retry_wait_seconds: 30
|
|
max_attempts: 10
|
|
command: |-
|
|
cd ${{ inputs.working-directory }}
|
|
npm install --prefer-online --no-cache -g "${{ inputs.npm-package }}"
|
|
|
|
- name: 'Smoke test - NPM Install'
|
|
shell: 'bash'
|
|
working-directory: '${{ inputs.working-directory }}'
|
|
run: |-
|
|
gemini_version=$(gemini --version)
|
|
if [ "$gemini_version" != "${{ inputs.expected-version }}" ]; then
|
|
echo "❌ NPM Version mismatch: Got $gemini_version from ${{ inputs.npm-package }}, expected ${{ inputs.expected-version }}"
|
|
exit 1
|
|
fi
|
|
|
|
- name: 'Clear npm cache'
|
|
shell: 'bash'
|
|
run: 'npm cache clean --force'
|
|
|
|
- name: 'Smoke test - NPX Run'
|
|
shell: 'bash'
|
|
working-directory: '${{ inputs.working-directory }}'
|
|
run: |-
|
|
gemini_version=$(npx --prefer-online "${{ inputs.npm-package}}" --version)
|
|
if [ "$gemini_version" != "${{ inputs.expected-version }}" ]; then
|
|
echo "❌ NPX Run Version mismatch: Got $gemini_version from ${{ inputs.npm-package }}, expected ${{ inputs.expected-version }}"
|
|
exit 1
|
|
fi
|
|
|
|
- name: 'Install dependencies for integration tests'
|
|
shell: 'bash'
|
|
working-directory: '${{ inputs.working-directory }}'
|
|
run: 'npm ci'
|
|
|
|
- name: '🔬 Run integration tests against NPM release'
|
|
working-directory: '${{ inputs.working-directory }}'
|
|
env:
|
|
GEMINI_API_KEY: '${{ inputs.gemini_api_key }}'
|
|
INTEGRATION_TEST_USE_INSTALLED_GEMINI: 'true'
|
|
# We must diable CI mode here because it interferes with interactive tests.
|
|
# See https://github.com/google-gemini/gemini-cli/issues/10517
|
|
CI: 'false'
|
|
shell: 'bash'
|
|
run: 'npm run test:integration:sandbox:none'
|