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.
228 lines
8.2 KiB
YAML
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 }}"
|