Shukka 文档

CI 发布

用 GitHub Action 或零依赖上传脚本把构建产物发布为一个版本。

GitHub Action

仓库根的 action.yml 是一个 composite action,把目录内的构建产物完整发布为一个版本:

- uses: akarachen/shukka@main
  with:
    server-url: ${{ secrets.SHUKKA_URL }}
    api-key: ${{ secrets.SHUKKA_API_KEY }}
    app: my-app
    channel: stable
    directory: dist

Inputs

Input必填默认说明
server-urlShukka 实例 base URL,如 https://updates.example.com
api-key绑定目标 app 的 API key(shk_…
appapp slug
channelstable目标 channel
directorydistelectron-builder 输出目录(含制品与 latest*.yml
version从目录内 yml 读取发布版本号;Tauri 产物没有 yml,必须显式传
create-channelfalsechannel 不存在时是否创建(防拼写错误静默建 channel)
releasefalsetrue 时 finalize 直接上线;默认留下 draft,事后在面板或 API promote

Outputs

Output说明
version发布的版本号
channel发布到的 channel

把整个输出目录交给它:安装包、.blockmap、每一个 latest*.yml(Electron),或签名后的 bundle + .sig(Tauri)。

手动 / 其他 CI:上传脚本

同一个上传器可以脱离 GitHub Actions 运行——scripts/shukka-upload.mjs 是零依赖 Node 脚本:

SHUKKA_SERVER_URL=https://updates.example.com \
SHUKKA_API_KEY=shk_… \
SHUKKA_APP=my-app \
SHUKKA_CHANNEL=stable \
SHUKKA_DIRECTORY=dist \
node scripts/shukka-upload.mjs
环境变量必填默认说明
SHUKKA_SERVER_URLShukka 实例 base URL
SHUKKA_API_KEY绑定目标 app 的 API key
SHUKKA_APPapp slug
SHUKKA_CHANNELstable目标 channel
SHUKKA_DIRECTORYdist产物目录
SHUKKA_VERSION从目录内 yml 读取版本号;Tauri 目录必须显式传
SHUKKA_CREATE_CHANNELfalsetrue 才创建不存在的 channel
SHUKKA_RELEASEfalsetrue 立即上线,否则为 draft

Draft 与上线

两条路径默认都发布为 draft:feed 不变、客户端不可见。确认无误后在面板 promote,或 PATCH /api/v1/apps/{appSlug}/channels/{channel}currentVersion。需要 CI 一步上线时传 release: true / SHUKKA_RELEASE=true。语义细节见发布版本

On this page