Files
xget-now/.github/workflows/publish-extension.yml
T
xixu-me de7b76b150 Localize publish workflow to Chinese
Translated all workflow names, step descriptions, comments, and release notes in .github/workflows/publish-extension.yml from English to Chinese to improve accessibility for Chinese-speaking developers.
2025-07-12 18:16:24 +08:00

228 lines
8.2 KiB
YAML

name: 发布扩展到多个应用商店
on:
workflow_dispatch:
inputs:
version:
description: "版本号 (例如: 1.0.0)"
required: true
type: string
permissions:
contents: write
packages: write
jobs:
build-and-publish:
runs-on: ubuntu-latest
steps:
- name: 检出代码
uses: actions/checkout@v4
- name: 设置 Node.js
uses: actions/setup-node@v4
with:
node-version: "18"
- name: 验证 manifest.json
run: |
# 验证 manifest.json 是否为有效的 JSON
node -e "JSON.parse(require('fs').readFileSync('manifest.json', 'utf8'))"
echo "✅ manifest.json 格式有效"
- name: 从输入设置版本
id: version
run: |
# 使用手动提供的版本
VERSION="${{ inputs.version }}"
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "手动设置版本: $VERSION"
- name: 更新 manifest 版本
run: |
# 更新 manifest.json 中的版本以匹配标签
node -e "
const fs = require('fs');
const manifest = JSON.parse(fs.readFileSync('manifest.json', 'utf8'));
manifest.version = '${{ steps.version.outputs.version }}';
fs.writeFileSync('manifest.json', JSON.stringify(manifest, null, 2));
console.log('已更新 manifest.json 版本为:', manifest.version);
"
- name: 更新 package.json 版本
run: |
# 更新 package.json 中的版本以匹配标签
node -e "
const fs = require('fs');
const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
pkg.version = '${{ steps.version.outputs.version }}';
fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2));
console.log('已更新 package.json 版本为:', pkg.version);
"
- name: 提交并推送版本更新
run: |
# 配置 git 用户信息以进行提交
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
# 添加更新的文件
git add manifest.json package.json
# 检查是否有需要提交的更改
if git diff --staged --quiet; then
echo "没有版本更改需要提交"
else
# 提交版本更新
git commit -m "chore: 更新版本到 ${{ steps.version.outputs.version }} [skip ci]"
# 为此版本创建并推送新标签
git tag "v${{ steps.version.outputs.version }}"
# 推送到主分支并包含标签
git push origin HEAD:main
git push origin "v${{ steps.version.outputs.version }}"
echo "✅ 版本更新已提交并推送到主分支,包含标签"
fi
- name: 创建扩展包
run: |
# 创建 Chrome 扩展 zip 包
zip -r chrome-extension.zip . \
-x "*.git*" \
-x "node_modules/*" \
-x ".github/*" \
-x "*.md" \
-x "LICENSE" \
-x "*.zip" \
-x "*.crx"
# 创建 Microsoft Edge 扩展 zip 包(与 Chrome 的 MV3 相同)
cp chrome-extension.zip edge-extension.zip
echo "📦 已创建扩展包"
ls -la *.zip
- name: 为 GitHub 发布创建 CRX 文件
run: |
# 安装 chrome-extension-packer
npm install -g crx3
# 为 CRX 签名创建私钥(仅用于分发)
openssl genrsa -out key.pem 2048
# 验证 manifest.json 是否存在
ls -la manifest.json
echo "当前目录: $(pwd)"
echo "目录内容:"
ls -la
# 为扩展文件创建临时目录
mkdir -p extension-temp
# 将扩展文件复制到临时目录
cp manifest.json extension-temp/
cp background.js extension-temp/
cp content.js extension-temp/
cp popup.html extension-temp/
cp popup.js extension-temp/
cp -r icons extension-temp/
# 验证临时目录内容
echo "扩展临时目录内容:"
ls -la extension-temp/
# 从临时目录创建 CRX 文件
cd extension-temp
crx3 -o ../extension.crx -p ../key.pem .
cd ..
echo "📦 已创建 extension.crx"
ls -la extension.crx
# 清理
rm -rf extension-temp
- name: 发布到 Chrome 网上应用店
continue-on-error: true
id: chrome-publish
uses: mnao305/chrome-extension-upload@v5.0.0
with:
file-path: chrome-extension.zip
extension-id: ${{ secrets.CHROME_EXTENSION_ID }}
client-id: ${{ secrets.CHROME_CLIENT_ID }}
client-secret: ${{ secrets.CHROME_CLIENT_SECRET }}
refresh-token: ${{ secrets.CHROME_REFRESH_TOKEN }}
publish: true # 如果只想上传而不发布,设置为 false
- name: 发布到 Microsoft Edge 加载项
continue-on-error: true
id: edge-publish
uses: wdzeng/edge-addon@v2
with:
product-id: ${{ secrets.EDGE_PRODUCT_ID }}
zip-path: edge-extension.zip
api-key: ${{ secrets.EDGE_API_KEY }}
client-id: ${{ secrets.EDGE_CLIENT_ID }}
notes-for-certification: "自动发布 v${{ steps.version.outputs.version }} - ${{ github.sha }}"
- name: 创建 GitHub 发布
uses: softprops/action-gh-release@v2
with:
tag_name: v${{ steps.version.outputs.version }}
name: Xget for Chrome ${{ steps.version.outputs.version }}
files: |
chrome-extension.zip
edge-extension.zip
extension.crx
generate_release_notes: true
body: |
此版本已自动发布到多个扩展商店。
## 📦 安装选项
- **Chrome 网上应用店**: [从 Chrome 网上应用店安装](https://chromewebstore.google.com/detail/ajiejgobfcifcikbahpijopolfjoodgf)
- **Microsoft Edge 加载项**: [从 Microsoft Edge 加载项安装](https://microsoftedge.microsoft.com/addons/detail/jigpfhbegabdenhihpplcjhpfdcgnalc)
- **手动安装**: 下载下面的文件或查看 [安装指南](https://github.com/xixu-me/Xget-for-Chrome?tab=readme-ov-file#-installation) 获取详细说明
## 📁 可用文件
- `chrome-extension.zip` - 适用于 Chrome 浏览器
- `edge-extension.zip` - 适用于 Microsoft Edge
- `extension.crx` - 适用于所有基于 Chromium 的浏览器的预打包扩展文件
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: 检查发布结果
run: |
echo "📊 发布结果摘要:"
echo "================================"
if [ "${{ steps.chrome-publish.outcome }}" = "success" ]; then
echo "✅ Chrome 网上应用店: 发布成功"
elif [ "${{ steps.chrome-publish.outcome }}" = "failure" ]; then
echo "❌ Chrome 网上应用店: 发布失败"
else
echo "⚠️ Chrome 网上应用店: 已跳过(缺少密钥)"
fi
if [ "${{ steps.edge-publish.outcome }}" = "success" ]; then
echo "✅ Microsoft Edge 加载项: 发布成功"
elif [ "${{ steps.edge-publish.outcome }}" = "failure" ]; then
echo "❌ Microsoft Edge 加载项: 发布失败"
else
echo "⚠️ Microsoft Edge 加载项: 已跳过(缺少密钥)"
fi
echo "✅ GitHub 发布: 已创建扩展文件"
echo "================================"
- name: 通知成功
run: |
echo "🎉 成功发布 Xget for Chrome v${{ steps.version.outputs.version }} 到多个商店!"
echo "🔗 Chrome 网上应用店: https://chrome.google.com/webstore/detail/${{ secrets.CHROME_EXTENSION_ID }}"
echo "🔗 Microsoft Edge 加载项: 查看发布页面获取手动安装文件"
echo "📦 GitHub 发布: https://github.com/${{ github.repository }}/releases/tag/v${{ steps.version.outputs.version }}"