feat: 添加 Homebrew 安装方式和自动更新 workflow

This commit is contained in:
coso
2026-01-09 11:50:20 +08:00
parent 3954a6224a
commit 47df08639d
5 changed files with 245 additions and 3 deletions
+104
View File
@@ -0,0 +1,104 @@
name: Update Homebrew Tap
on:
release:
types: [published]
workflow_dispatch:
inputs:
version:
description: '版本号 (不带 v 前缀,如 0.37.0)'
required: true
jobs:
update-homebrew:
runs-on: macos-latest
steps:
- name: 获取版本号
id: version
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "version=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
else
# 从 tag 中提取版本号,去掉 v 前缀
VERSION="${{ github.event.release.tag_name }}"
echo "version=${VERSION#v}" >> $GITHUB_OUTPUT
fi
- name: 等待 Release 资源就绪
run: sleep 30
- name: 下载 DMG 并计算 SHA256
id: sha
run: |
VERSION="${{ steps.version.outputs.version }}"
# 下载 ARM64 DMG
echo "下载 ARM64 DMG..."
curl -sL -o arm64.dmg "https://github.com/aiclientproxy/proxycast/releases/download/v${VERSION}/proxycast_${VERSION}_aarch64.dmg"
ARM64_SHA=$(shasum -a 256 arm64.dmg | awk '{print $1}')
echo "ARM64 SHA256: $ARM64_SHA"
echo "arm64_sha=$ARM64_SHA" >> $GITHUB_OUTPUT
# 下载 x64 DMG
echo "下载 x64 DMG..."
curl -sL -o x64.dmg "https://github.com/aiclientproxy/proxycast/releases/download/v${VERSION}/proxycast_${VERSION}_x64.dmg"
X64_SHA=$(shasum -a 256 x64.dmg | awk '{print $1}')
echo "x64 SHA256: $X64_SHA"
echo "x64_sha=$X64_SHA" >> $GITHUB_OUTPUT
- name: Checkout homebrew-tap
uses: actions/checkout@v4
with:
repository: aiclientproxy/homebrew-tap
token: ${{ secrets.HOMEBREW_TAP_TOKEN }}
path: homebrew-tap
- name: 更新 Cask 文件
run: |
VERSION="${{ steps.version.outputs.version }}"
ARM64_SHA="${{ steps.sha.outputs.arm64_sha }}"
X64_SHA="${{ steps.sha.outputs.x64_sha }}"
cat > homebrew-tap/Casks/proxycast.rb << EOF
cask "proxycast" do
version "$VERSION"
on_arm do
sha256 "$ARM64_SHA"
url "https://github.com/aiclientproxy/proxycast/releases/download/v#{version}/proxycast_#{version}_aarch64.dmg"
end
on_intel do
sha256 "$X64_SHA"
url "https://github.com/aiclientproxy/proxycast/releases/download/v#{version}/proxycast_#{version}_x64.dmg"
end
name "ProxyCast"
desc "AI API 代理桌面应用 - 将 AI 客户端凭证转换为 OpenAI 兼容接口"
homepage "https://github.com/aiclientproxy/proxycast"
livecheck do
url :url
strategy :github_latest
end
app "ProxyCast.app"
zap trash: [
"~/.config/com.proxycast.app",
"~/Library/Application Support/com.proxycast.app",
"~/Library/Caches/com.proxycast.app",
"~/Library/Preferences/com.proxycast.app.plist",
"~/Library/Saved Application State/com.proxycast.app.savedState",
]
end
EOF
- name: 提交并推送
run: |
cd homebrew-tap
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add Casks/proxycast.rb
git commit -m "chore: bump proxycast to ${{ steps.version.outputs.version }}"
git push
+18 -3
View File
@@ -126,11 +126,26 @@
### 下载安装
#### macOS (推荐使用 Homebrew)
```bash
brew tap aiclientproxy/tap
brew install --cask proxycast
```
更新版本:
```bash
brew upgrade --cask proxycast
```
#### 手动下载
从 [Releases](https://github.com/aiclientproxy/proxycast/releases) 页面下载对应平台的安装包:
- **macOS (Apple Silicon)**: `ProxyCast_x.x.x_aarch64.dmg`
- **Windows (x64)**: `ProxyCast_x.x.x_x64-setup.exe`
- **Ubuntu/Debian (x64)**: `ProxyCast_x.x.x_amd64.deb`
- **macOS (Apple Silicon)**: `proxycast_x.x.x_aarch64.dmg`
- **macOS (Intel)**: `proxycast_x.x.x_x64.dmg`
- **Windows (x64)**: `proxycast_x.x.x_x64-setup.exe`
- **Ubuntu/Debian (x64)**: `proxycast_x.x.x_amd64.deb`
### 使用步骤
+31
View File
@@ -0,0 +1,31 @@
cask "proxycast" do
version "0.37.0"
on_arm do
sha256 "REPLACE_WITH_ARM64_SHA256"
url "https://github.com/aiclientproxy/proxycast/releases/download/v#{version}/ProxyCast_#{version}_aarch64.dmg"
end
on_intel do
sha256 "REPLACE_WITH_X64_SHA256"
url "https://github.com/aiclientproxy/proxycast/releases/download/v#{version}/ProxyCast_#{version}_x64.dmg"
end
name "ProxyCast"
desc "AI 代理服务桌面应用 - 多 Provider 凭证池管理"
homepage "https://github.com/aiclientproxy/proxycast"
livecheck do
url :url
strategy :github_latest
end
app "ProxyCast.app"
zap trash: [
"~/Library/Application Support/com.proxycast.app",
"~/Library/Caches/com.proxycast.app",
"~/Library/Preferences/com.proxycast.app.plist",
"~/Library/Saved Application State/com.proxycast.app.savedState",
]
end
+44
View File
@@ -0,0 +1,44 @@
# ProxyCast Homebrew Tap
ProxyCast 的 Homebrew Cask 分发仓库。
## 安装
```bash
# 添加 tap
brew tap terryso/tap
# 安装 ProxyCast
brew install --cask proxycast
```
## 更新
```bash
brew upgrade --cask proxycast
```
## 卸载
```bash
brew uninstall --cask proxycast
```
## 维护说明
### 手动更新版本
1. 下载新版本的 DMG 文件
2. 计算 sha256: `shasum -a 256 ProxyCast_x.x.x_aarch64.dmg`
3. 更新 `Casks/proxycast.rb` 中的 `version` 和 `sha256`
4. 推送到仓库
### 自动化更新
使用 `scripts/update-cask.sh` 脚本自动更新:
```bash
./scripts/update-cask.sh 0.38.0
```
该脚本会自动下载 DMG、计算 sha256、更新 Cask 文件。
+48
View File
@@ -0,0 +1,48 @@
#!/bin/bash
# 自动更新 ProxyCast Homebrew Cask 版本
# 用法: ./update-cask.sh <version>
# 示例: ./update-cask.sh 0.38.0
set -e
VERSION=$1
REPO="aiclientproxy/proxycast"
CASK_FILE="$(dirname "$0")/../Casks/proxycast.rb"
if [ -z "$VERSION" ]; then
echo "用法: $0 <version>"
echo "示例: $0 0.38.0"
exit 1
fi
echo "🔄 更新 ProxyCast Cask 到版本 $VERSION"
# 下载 DMG 并计算 sha256
ARM64_URL="https://github.com/$REPO/releases/download/v$VERSION/ProxyCast_${VERSION}_aarch64.dmg"
X64_URL="https://github.com/$REPO/releases/download/v$VERSION/ProxyCast_${VERSION}_x64.dmg"
TEMP_DIR=$(mktemp -d)
trap "rm -rf $TEMP_DIR" EXIT
echo "📥 下载 ARM64 DMG..."
curl -sL "$ARM64_URL" -o "$TEMP_DIR/arm64.dmg"
ARM64_SHA=$(shasum -a 256 "$TEMP_DIR/arm64.dmg" | awk '{print $1}')
echo " SHA256: $ARM64_SHA"
echo "📥 下载 x64 DMG..."
curl -sL "$X64_URL" -o "$TEMP_DIR/x64.dmg"
X64_SHA=$(shasum -a 256 "$TEMP_DIR/x64.dmg" | awk '{print $1}')
echo " SHA256: $X64_SHA"
# 更新 Cask 文件
echo "📝 更新 Cask 文件..."
sed -i '' "s/version \".*\"/version \"$VERSION\"/" "$CASK_FILE"
sed -i '' "/on_arm do/,/end/ s/sha256 \".*\"/sha256 \"$ARM64_SHA\"/" "$CASK_FILE"
sed -i '' "/on_intel do/,/end/ s/sha256 \".*\"/sha256 \"$X64_SHA\"/" "$CASK_FILE"
echo "✅ 更新完成!"
echo ""
echo "下一步:"
echo " 1. git add Casks/proxycast.rb"
echo " 2. git commit -m 'chore: bump proxycast to $VERSION'"
echo " 3. git push"