mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-06-14 21:37:20 -07:00
8c9494eb70
Adds the 'Configure npm for GitHub Packages' step to the 'e2e_linux' job in 'e2e.yml'. This was missing, causing the job to fail when trying to install the test package from the GitHub Packages registry.
219 lines
7.9 KiB
YAML
219 lines
7.9 KiB
YAML
permissions:
|
|
contents: 'read'
|
|
packages: 'read'
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
version:
|
|
description: 'The version of the published package'
|
|
required: true
|
|
type: 'string'
|
|
|
|
concurrency:
|
|
group: 'e2e-${{ github.workflow }}-${{ github.head_ref || github.ref }}'
|
|
cancel-in-progress: |-
|
|
${{ github.ref != 'refs/heads/main' && !startsWith(github.ref, 'refs/heads/release/') }}
|
|
|
|
jobs:
|
|
e2e_linux:
|
|
name: 'E2E Test (Linux) - ${{ matrix.sandbox }}'
|
|
if: |
|
|
(github.event_name == 'push' ||
|
|
github.event_name == 'merge_group' ||
|
|
github.event_name == 'workflow_dispatch' ||
|
|
(github.event.pull_request.head.repo.full_name == github.repository) ||
|
|
(github.event.label.name == 'maintainer:e2e:ok'))
|
|
runs-on: 'gemini-cli-ubuntu-16-core'
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
sandbox:
|
|
- 'sandbox:none'
|
|
- 'sandbox:docker'
|
|
node-version:
|
|
- '20.x'
|
|
|
|
steps:
|
|
- name: 'Checkout (fork)'
|
|
uses: 'actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955' # ratchet:actions/checkout@v5
|
|
if: "github.event_name == 'pull_request_target'"
|
|
with:
|
|
ref: '${{ github.event.pull_request.head.sha }}'
|
|
repository: '${{ github.event.pull_request.head.repo.full_name }}'
|
|
|
|
- name: 'Checkout (internal)'
|
|
uses: 'actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955' # ratchet:actions/checkout@v5
|
|
if: "github.event_name != 'pull_request_target'"
|
|
with:
|
|
ref: '${{ github.event.inputs.branch_ref || github.ref }}'
|
|
|
|
- name: 'Configure npm for GitHub Packages'
|
|
run: |
|
|
echo "@google-gemini:registry=https://npm.pkg.github.com/" > .npmrc
|
|
echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" >> .npmrc
|
|
|
|
- name: 'Install dependencies'
|
|
run: 'npm install @google-gemini/gemini-cli@${{ inputs.version }}'
|
|
|
|
- name: 'Set up Docker'
|
|
if: "matrix.sandbox == 'sandbox:docker'"
|
|
uses: 'docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435' # ratchet:docker/setup-buildx-action@v3
|
|
|
|
- name: 'Run E2E tests'
|
|
env:
|
|
GEMINI_API_KEY: '${{ secrets.GEMINI_API_KEY }}'
|
|
KEEP_OUTPUT: 'true'
|
|
VERBOSE: 'true'
|
|
shell: 'bash'
|
|
run: |
|
|
if [[ "${{ matrix.sandbox }}" == "sandbox:docker" ]]; then
|
|
npm run test:integration:sandbox:docker
|
|
else
|
|
npm run test:integration:sandbox:none
|
|
fi
|
|
|
|
e2e_mac:
|
|
name: 'E2E Test (macOS)'
|
|
if: |
|
|
(github.event_name == 'push' ||
|
|
github.event_name == 'merge_group' ||
|
|
github.event_name == 'workflow_dispatch' ||
|
|
(github.event.pull_request.head.repo.full_name == github.repository) ||
|
|
(github.event.label.name == 'maintainer:e2e:ok'))
|
|
runs-on: 'macos-latest'
|
|
steps:
|
|
- name: 'Checkout (fork)'
|
|
uses: 'actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955' # ratchet:actions/checkout@v5
|
|
if: "github.event_name == 'pull_request_target'"
|
|
with:
|
|
ref: '${{ github.event.pull_request.head.sha }}'
|
|
repository: '${{ github.event.pull_request.head.repo.full_name }}'
|
|
|
|
- name: 'Checkout (internal)'
|
|
uses: 'actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955' # ratchet:actions/checkout@v5
|
|
if: "github.event_name != 'pull_request_target'"
|
|
with:
|
|
ref: '${{ github.event.inputs.branch_ref || github.ref }}'
|
|
|
|
- name: 'Set up Node.js 20.x'
|
|
uses: 'actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020' # ratchet:actions-node@v4
|
|
with:
|
|
node-version: '20.x'
|
|
|
|
- name: 'Configure npm for GitHub Packages'
|
|
run: |
|
|
echo "@google-gemini:registry=https://npm.pkg.github.com/" > .npmrc
|
|
echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" >> .npmrc
|
|
|
|
- name: 'Install dependencies'
|
|
run: 'npm install @google-gemini/gemini-cli@${{ inputs.version }}'
|
|
|
|
- name: 'Fix rollup optional dependencies on macOS'
|
|
if: "runner.os == 'macOS'"
|
|
run: |
|
|
npm cache clean --force
|
|
- name: 'Run E2E tests (non-Windows)'
|
|
if: "runner.os != 'Windows'"
|
|
env:
|
|
GEMINI_API_KEY: '${{ secrets.GEMINI_API_KEY }}'
|
|
KEEP_OUTPUT: 'true'
|
|
SANDBOX: 'sandbox:none'
|
|
VERBOSE: 'true'
|
|
run: 'npm run test:integration:sandbox:none'
|
|
|
|
e2e_windows:
|
|
name: 'Slow E2E - Win'
|
|
if: |
|
|
(github.event_name == 'push' ||
|
|
github.event_name == 'merge_group' ||
|
|
github.event_name == 'workflow_dispatch' ||
|
|
(github.event.pull_request.head.repo.full_name == github.repository) ||
|
|
(github.event.label.name == 'maintainer:e2e:ok'))
|
|
runs-on: 'gemini-cli-windows-16-core'
|
|
continue-on-error: true
|
|
|
|
steps:
|
|
- name: 'Checkout (fork)'
|
|
uses: 'actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955' # ratchet:actions/checkout@v5
|
|
if: "github.event_name == 'pull_request_target'"
|
|
with:
|
|
ref: '${{ github.event.pull_request.head.sha }}'
|
|
repository: '${{ github.event.pull_request.head.repo.full_name }}'
|
|
|
|
- name: 'Checkout (internal)'
|
|
uses: 'actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955' # ratchet:actions/checkout@v5
|
|
if: "github.event_name != 'pull_request_target'"
|
|
with:
|
|
ref: '${{ github.event.inputs.branch_ref || github.ref }}'
|
|
|
|
- name: 'Set up Node.js 20.x'
|
|
uses: 'actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020' # ratchet:actions-node@v4
|
|
with:
|
|
node-version: '20.x'
|
|
cache: 'npm'
|
|
|
|
- name: 'Configure Windows Defender exclusions'
|
|
run: |
|
|
Add-MpPreference -ExclusionPath $env:GITHUB_WORKSPACE -Force
|
|
Add-MpPreference -ExclusionPath "$env:GITHUB_WORKSPACE\node_modules" -Force
|
|
Add-MpPreference -ExclusionPath "$env:GITHUB_WORKSPACE\packages" -Force
|
|
Add-MpPreference -ExclusionPath "$env:TEMP" -Force
|
|
shell: 'pwsh'
|
|
|
|
- name: 'Configure npm for Windows performance'
|
|
run: |
|
|
npm config set progress false
|
|
npm config set audit false
|
|
npm config set fund false
|
|
npm config set loglevel error
|
|
npm config set maxsockets 32
|
|
npm config set registry https://registry.npmjs.org/
|
|
shell: 'pwsh'
|
|
|
|
- name: 'Configure npm for GitHub Packages'
|
|
run: |
|
|
echo "@google-gemini:registry=https://npm.pkg.github.com/" > .npmrc
|
|
echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" >> .npmrc
|
|
shell: 'pwsh'
|
|
|
|
- name: 'Install dependencies'
|
|
run: 'npm install @google-gemini/gemini-cli@${{ inputs.version }}'
|
|
shell: 'pwsh'
|
|
|
|
- name: 'Run E2E tests'
|
|
env:
|
|
GEMINI_API_KEY: '${{ secrets.GEMINI_API_KEY }}'
|
|
KEEP_OUTPUT: 'true'
|
|
SANDBOX: 'sandbox:none'
|
|
VERBOSE: 'true'
|
|
NODE_OPTIONS: '--max-old-space-size=32768 --max-semi-space-size=256'
|
|
UV_THREADPOOL_SIZE: '32'
|
|
NODE_ENV: 'test'
|
|
shell: 'pwsh'
|
|
run: 'npm run test:integration:sandbox:none'
|
|
|
|
e2e:
|
|
name: 'E2E'
|
|
if: |
|
|
always() && (
|
|
github.event_name == 'push' ||
|
|
github.event_name == 'merge_group' ||
|
|
github.event_name == 'workflow_dispatch' ||
|
|
(github.event.pull_request.head.repo.full_name == github.repository) ||
|
|
(github.event.label.name == 'maintainer:e2e:ok')
|
|
)
|
|
needs:
|
|
- 'e2e_linux'
|
|
- 'e2e_mac'
|
|
runs-on: 'gemini-cli-ubuntu-16-core'
|
|
steps:
|
|
- name: 'Check E2E test results'
|
|
run: |
|
|
if [[ (${{ needs.e2e_linux.result }} != 'success' && ${{ needs.e2e_linux.result }} != 'skipped') || \
|
|
(${{ needs.e2e_mac.result }} != 'success' && ${{ needs.e2e_mac.result }} != 'skipped') ]]; then
|
|
echo "One or more E2E jobs failed."
|
|
exit 1
|
|
fi
|
|
echo "All required E2E jobs passed!"
|