mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-03-20 11:00:40 -07:00
79 lines
2.4 KiB
Markdown
79 lines
2.4 KiB
Markdown
# Extension Releasing
|
|
|
|
Gemini CLI extensions can be distributed as pre-built binaries through GitHub Releases. This provides a faster and more reliable installation experience for users, as it avoids the need to clone the repository and build the extension from source.
|
|
|
|
## Asset naming convention
|
|
|
|
To ensure Gemini CLI can automatically find the correct release asset for each platform, you should follow this naming convention. The CLI will search for assets in the following order:
|
|
|
|
1. **Platform and Architecture-Specific:** `{platform}.{arch}.{name}.{extension}`
|
|
2. **Platform-Specific:** `{platform}.{name}.{extension}`
|
|
3. **Generic:** If only one asset is provided, it will be used as a generic fallback.
|
|
|
|
- `{name}`: The name of your extension.
|
|
- `{platform}`: The operating system. Supported values are:
|
|
- `darwin` (macOS)
|
|
- `linux`
|
|
- `win32` (Windows)
|
|
- `{arch}`: The architecture. Supported values are:
|
|
- `x64`
|
|
- `arm64`
|
|
- `{extension}`: The file extension of the archive (e.g., `.tar.gz` or `.zip`).
|
|
|
|
**Examples:**
|
|
|
|
- `darwin.arm64.my-tool.tar.gz` (specific to Apple Silicon Macs)
|
|
- `darwin.my-tool.tar.gz` (for all Macs)
|
|
- `linux.x64.my-tool.tar.gz`
|
|
- `win32.my-tool.zip`
|
|
|
|
If your extension is platform-independent, you can provide a single generic asset. In this case, there should be only one asset attached to the release.
|
|
|
|
## Archive structure
|
|
|
|
The `gemini-extension.json` file must be at the root of the archive.
|
|
|
|
## Example GitHub Actions workflow
|
|
|
|
Here is an example of a GitHub Actions workflow that builds and releases a Gemini CLI extension for multiple platforms:
|
|
|
|
```yaml
|
|
name: Release Extension
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
|
|
jobs:
|
|
release:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: '20'
|
|
|
|
- name: Install dependencies
|
|
run: npm ci
|
|
|
|
- name: Build extension
|
|
run: npm run build
|
|
|
|
- name: Create release assets
|
|
run: |
|
|
npm run package -- --platform=darwin --arch=arm64
|
|
npm run package -- --platform=linux --arch=x64
|
|
npm run package -- --platform=win32 --arch=x64
|
|
|
|
- name: Create GitHub Release
|
|
uses: softprops/action-gh-release@v1
|
|
with:
|
|
files: |
|
|
release/darwin.arm64.my-tool.tar.gz
|
|
release/linux.arm64.my-tool.tar.gz
|
|
release/win32.arm64.my-tool.zip
|
|
```
|