Skip to content

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UpgradeLink Action

UpgradeLink - 全端支持,一站式应用升级分发平台及解决方案

项目简介

此项目为开源的 Tauri 项目,用于快速接入 UpgradeLink 服务。通过在 GitHub Action 中引入此模块,可自动将生成的版本文件和升级任务配置到 UpgradeLink 系统,无需额外手动操作。

功能特性

  • 自动上传 Tauri 应用的版本信息到 UpgradeLink 平台
  • 支持通过 GitHub Action 工作流集成
  • 安全的密钥管理(通过 GitHub Secrets)
  • 简化应用升级配置流程
  • 支持多种应用类型:Tauri、文件、APK

快速开始

1. 准备工作

在开始之前,您需要:

  1. UpgradeLink 平台注册并创建应用
  2. 获取应用的 ACCESS_KEYACCESS_SECRET
  3. 获取应用的 APP_KEY(即应用在 UpgradeLink 平台的应用唯一标识)
  4. 确保您的项目已配置自动生成版本信息文件(如 Tauri 应用的 latest.json

2. 配置 GitHub Secrets

在您的 GitHub 仓库中,前往 Settings > Secrets and variables > Actions,添加以下密钥:

密钥名称 描述 获取方式
UPGRADE_LINK_ACCESS_KEY UpgradeLink 平台的访问密钥 在 UpgradeLink 平台创建应用后获取
UPGRADE_LINK_ACCESS_SECRET UpgradeLink 平台的访问密钥 在 UpgradeLink 平台创建应用后获取
UPGRADE_LINK_APP_KEY 应用在 UpgradeLink 平台的唯一标识 在 UpgradeLink 平台创建应用后获取

3. 配置 GitHub Action 工作流

在您的项目中创建或修改 .github/workflows 目录下的工作流文件,例如 .github/workflows/release.yml

  upgradeLink-upload:
    needs: publish-tauri  # 依赖于 上游 作业完成,可进行调整
    permissions:
      contents: write 
    runs-on: ubuntu-latest
    steps:
      - name: Send a request to UpgradeLink
        uses: toolsetlink/upgradelink-action@3.0.2
        with:
          # protocol: 'HTTPS'     # 此字段为可选,默认值为 HTTPS
          # endpoint: 'api.upgrade.toolsetlink.com'  # 此字段为可选,默认值为 api.upgrade.toolsetlink.com
          access_key: ${{ secrets.UPGRADE_LINK_ACCESS_KEY }}
          access_secret: ${{ secrets.UPGRADE_LINK_ACCESS_SECRET }}
          config: |
            {
              "app_type": "tauri",
              "request": {
                "app_key": "${{ secrets.UPGRADE_LINK_APP_KEY }}",
                "latest_json_url": "https://github.com/YOUR_USERNAME/YOUR_REPO/releases/download/${{ github.ref_name }}/latest.json"
              }
            }

配置说明

必需参数

参数 描述 示例值
access_key 在 UpgradeLink 平台创建应用后生成的访问密钥 your-access-key-here
access_secret 在 UpgradeLink 平台创建应用后生成的访问密钥 your-access-secret-here
config 包含应用配置的 JSON 字符串,必须包含 appType 字段和 request 对象 {"appType": "tauri", "request": {"app_key": "your-app-key", "latest_json_url": "https://github.com/your-username/your-repo/releases/download/v1.0.0/latest.json"}}

可选参数

参数 描述 默认值
protocol API 调用协议 HTTPS
endpoint API 端点地址 api.upgrade.toolsetlink.com

config 字段详细说明

基本结构

{
  "app_type": "tauri",  // 必选值:tauri、file、apk
  "request": {
    "app_key": "YOUR_APP_KEY",
    // 其他请求参数,根据 app_type 不同而不同
  }
}

字段说明

字段 描述 可选值 是否必填
app_type 应用类型,用于决定调用哪个接口 tauri、file、apk
request.app_key 应用在 UpgradeLink 平台的唯一标识 -

不同 app_type 对应的请求参数

1. app_type: "tauri"

{
  "app_type": "tauri",
  "request": {
    "app_key": "YOUR_APP_KEY",
    "latest_json_url": "YOUR_LATEST_JSON_URL"
  }
}
字段 描述 示例值
request.latest_json_url Tauri 应用版本信息的 JSON 文件 URL(通常为 Tauri 打包生成的 latest.json https://github.com/your-username/your-repo/releases/download/v1.0.0/latest.json

2. app_type: "file"

{
  "app_type": "file",
  "request": {
    "app_key": "YOUR_APP_KEY",
    "version": "YOUR_VERSION",
    "url": "YOUR_FILE_URL",
    "prompt_upgrade_content": "YOUR_PROMPT_UPGRADE_CONTENT"
  }
}
字段 描述 示例值
request.version 文件版本号 1.0.0
request.url 文件下载 URL https://github.com/your-username/your-repo/releases/download/v1.0.0/app.zip
request.prompt_upgrade_content 升级提示内容 新版本已发布,包含重要功能更新和 bug 修复

3. app_type: "apk"

{
  "app_type": "apk",
  "request": {
    "app_key": "YOUR_APP_KEY",
    "version": "YOUR_VERSION",
    "url": "YOUR_APK_URL",
    "prompt_upgrade_content": "YOUR_PROMPT_UPGRADE_CONTENT"
  }
}
字段 描述 示例值
request.version APK 版本号 1.0.0
request.url APK 文件下载 URL https://github.com/your-username/your-repo/releases/download/v1.0.0/app.apk
request.prompt_upgrade_content 升级提示内容 新版本已发布,包含重要功能更新和 bug 修复

完整使用示例

示例 1:基本配置(Tauri 应用)

以下是一个基本的 GitHub Action 工作流配置示例,用于 Tauri 应用:

- name: Configure UpgradeLink
  uses: toolsetlink/upgradelink-action@3.0.2
  with:
    access_key: ${{ secrets.UPGRADE_LINK_ACCESS_KEY }}
    access_secret: ${{ secrets.UPGRADE_LINK_ACCESS_SECRET }}
    config: |
      {
        "app_type": "tauri",
        "request": {
           "app_key": "${{ secrets.UPGRADE_LINK_APP_KEY }}",
          "latest_json_url": "https://github.com/YOUR_USERNAME/YOUR_REPO/releases/download/app-v${{ github.sha }}/latest.json"
        }
      }

示例 2:文件应用(app_type: "file")

以下是一个用于文件应用的配置示例:

- name: Configure UpgradeLink for File app
  uses: toolsetlink/upgradelink-action@3.0.2
  with:
    access_key: ${{ secrets.UPGRADE_LINK_ACCESS_KEY }}
    access_secret: ${{ secrets.UPGRADE_LINK_ACCESS_SECRET }}
    config: |
      {
        "app_type": "file",
        "request": {
          "app_key": "${{ secrets.UPGRADE_LINK_APP_KEY }}",
          "version": "1.0.0",
          "url": "https://github.com/YOUR_USERNAME/YOUR_REPO/releases/download/v1.0.0/app.zip",
          "prompt_upgrade_content": "新版本已发布,包含重要功能更新和 bug 修复"
        }
      }

示例 3:APK 应用(app_type: "apk")

以下是一个用于 APK 应用的配置示例:

- name: Configure UpgradeLink for APK app
  uses: toolsetlink/upgradelink-action@3.0.2
  with:
    protocol: 'HTTPS'
    endpoint: 'api.upgrade.toolsetlink.com'
    access_key: ${{ secrets.UPGRADE_LINK_ACCESS_KEY }}
    access_secret: ${{ secrets.UPGRADE_LINK_ACCESS_SECRET }}
    config: |
      {
        "app_type": "apk",
        "request": {
          "app_key": "${{ secrets.UPGRADE_LINK_APP_KEY }}",
          "version": "1.0.0",
          "url": "https://github.com/YOUR_USERNAME/YOUR_REPO/releases/download/v1.0.0/app.apk",
          "prompt_upgrade_content": "新版本已发布,包含重要功能更新和 bug 修复"
        }
      }

示例 4:自定义 API 端点

如果您需要使用自定义的 API 端点,可以修改 protocolendpoint 参数:

- name: Configure UpgradeLink with custom endpoint
  uses: toolsetlink/upgradelink-action@3.0.2
  with:
    protocol: 'HTTPS'
    endpoint: 'custom-api.example.com'
    access_key: ${{ secrets.UPGRADE_LINK_ACCESS_KEY }}
    access_secret: ${{ secrets.UPGRADE_LINK_ACCESS_SECRET }}
    config: |
      {
        "app_type": "tauri",
        "request": {
          "app_key": "${{ secrets.UPGRADE_LINK_APP_KEY }}",
          "latest_json_url": "https://github.com/YOUR_USERNAME/YOUR_REPO/releases/download/v1.0.0/latest.json"
        }
      }

常见问题与解决方案

1. latest.json 文件不存在

问题:Action 执行失败,提示找不到 latest.json 文件。

解决方案

  • 验证发布的资产中是否包含 latest.json 文件

2. API 调用失败

问题:Action 执行失败,提示 API 调用失败。

解决方案

  • 检查 UPGRADE_LINK_ACCESS_KEYUPGRADE_LINK_ACCESS_SECRETUPGRADE_LINK_APP_KEY 是否正确配置
  • 确保网络连接正常,GitHub Actions 能够访问 UpgradeLink API

3. 密钥配置错误

问题:Action 执行失败,提示密钥错误。

解决方案

  • 确认在 GitHub Secrets 中正确配置了所有必需的密钥
  • 检查密钥名称是否与工作流文件中引用的名称一致
  • 验证密钥值是否正确,没有多余的空格或特殊字符

4. config JSON 格式错误

问题:Action 执行失败,提示无法解析 config JSON。

解决方案

  • 确保 config 字段是有效的 JSON 字符串
  • 检查 JSON 格式是否正确,包括引号、逗号等
  • 确保 JSON 字符串在 YAML 文件中正确转义

5. app_type 字段错误

问题:Action 执行失败,提示 app_type 错误。

解决方案

  • 确保在 config 中包含 app_type 字段
  • 验证 app_type 值是否为有效的选项之一:tauri、file、apk

最佳实践

  1. 使用版本标签:建议使用语义化版本号(如 v1.0.0)作为标签,便于管理和追踪版本

  2. 配置依赖关系:确保 upgradeLink-upload 作业依赖于构建/发布作业完成,避免在构建完成前尝试上传

  3. 使用环境变量:对于不同环境(如开发、测试、生产),可以配置不同的密钥和参数

  4. 添加错误处理:在工作流中添加适当的错误处理,确保即使上传失败也能通知相关人员

  5. 定期更新:定期更新 Action 版本,以获取最新功能和安全修复

故障排除

如果您遇到问题,可以通过以下步骤进行排查:

  1. 查看 Action 日志:在 GitHub 仓库的 Actions 标签页中查看详细的执行日志

  2. 验证参数配置:检查所有参数是否正确配置,特别是 config 字段的 JSON 格式是否正确

  3. 测试 API 连接:手动测试 UpgradeLink API 是否可以正常访问

  4. 检查 UpgradeLink 平台:登录 UpgradeLink 平台,查看应用状态和日志

示例项目

  • tauri-demo - 官方示例项目,展示完整的集成配置

支持与反馈

如果您在使用过程中遇到问题或有任何建议,欢迎通过以下方式联系我们:

About

upgradelink-action

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages