Updated all documentation, configuration, and code references from 'Xget for Chrome' to 'Xget for Chromium' for consistency with supported browsers. This includes issue templates, workflow files, privacy and security policies, source code logs, manifest, and popup UI.
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 Chromium ${{ 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#-%E5%AE%89%E8%A3%85) 获取详细说明
|
|
|
|
## 📁 可用文件
|
|
|
|
- `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 Chromium ${{ 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 }}"
|