Skip to content

ci: 新增 j CLI + JStudio 每日构建(win/mac universal/linux)#6

Open
wuqie-xuanzhao wants to merge 1 commit into
mainfrom
ci/nightly-build
Open

ci: 新增 j CLI + JStudio 每日构建(win/mac universal/linux)#6
wuqie-xuanzhao wants to merge 1 commit into
mainfrom
ci/nightly-build

Conversation

@wuqie-xuanzhao

@wuqie-xuanzhao wuqie-xuanzhao commented Jun 20, 2026

Copy link
Copy Markdown
Collaborator

概述

新增 .github/workflows/nightly.yml —— 每日 CI 流水线,同时构建 j CLIJStudio Tauri 桌面应用,为三个平台产出原生安装包,并发布到滚动的 nightly 预发布 tag。

满足「给 JStudio 加上 nightly build,构建 win / mac / linux」的需求。

平台与产物

平台 目标 triple 产物
Windows x64 x86_64-pc-windows-msvc NSIS .exe + .msi
macOS Universal universal-apple-darwin .dmg(aarch64 + x86_64 经 lipo 合并)
Linux x64 x86_64-unknown-linux-gnu .deb + .AppImage

构建链

```
checkout jcli + jstudio submodule
→ cargo build --release (编译宿主 `j` 二进制)
→ stage 到 apps/jstudio/src-tauri/resources/bin/
→ tauri build (原生安装包,内嵌 `j`)
```

jstudio 的 `src-tauri/build.rs` 会把 jcli workspace 根目录解析为 `src-tauri/../../../`,并在打包前把 `target/release/j` 放进 `resources/bin/`。workflow 额外显式预 stage 该二进制作为快速路径,确保 GUI 安装包内带最新编译的 `j`。macOS 下先用 `lipo` 把 `j` 的两个架构切片合并成 universal 二进制再 stage,使 universal `.dmg` 内含 universal `j`。

架构设计

  • 每个平台 job 只负责构建 + 上传 workflow artifact,避免三个构建 job 争抢同一个 GitHub Release。
  • 最后一个 `publish-nightly` job 下载所有 artifact、拍平,然后重建滚动的 `nightly` release:
    • `gh release delete nightly --cleanup-tag` 删除旧 release + tag
    • `softprops/action-gh-release@v2` 用新产物重建 `nightly` 预发布

`nightly` tag 始终指向最近一次成功的构建。

触发方式

  • `schedule: cron '0 0 * * *'`(每日 UTC 00:00)
  • `workflow_dispatch`(手动,Actions → Nightly → Run workflow)

验证

  • actionlint(`go install` 编译版)—— 退出码 0,零错误
  • YAML —— js-yaml 解析通过
  • Action 全部为当前主版本 —— `checkout@v4`、`setup-node@v4`、`cache@v4`、`upload-artifact@v4`、`download-artifact@v4`、`softprops/action-gh-release@v2`、`dtolnay/rust-toolchain@stable`
  • build.rs 路径解析 —— 本地实测 `src-tauri/../../../` 解析到 jcli 根,`target/release/j` 确为 `cargo build --release` 产物位置
  • Tauri 2 bundle 输出 —— 确认 `src-tauri/target//release/bundle/{nsis,msi,dmg,deb,appimage}/` 与 Tauri 2 文档布局一致

⚠️ 完整端到端验证需要在 GitHub Actions 上跨三个 OS runner 真跑一次。建议合并后手动触发一次 `workflow_dispatch` 确认全链路。本地只能验证语法、actionlint、路径解析;真正的跨平台编译产出安装包只能在 GitHub 的服务器上完成。

文档

`AGENTS.md` 在 jstudio 子模块章节补充了 nightly build 说明。

关于范围

本 PR 仅含 workflow + 文档。工作区在途的无关改动(TUI input-event、`.codegraph/daemon.pid`、submodule 指针漂移)已排除,未混入本分支。

Adds .github/workflows/nightly.yml to build the j CLI binary and the
JStudio Tauri desktop app daily (UTC 00:00) or on manual dispatch:

- Windows x64: NSIS .exe + MSI
- macOS Universal: .dmg (aarch64 + x86_64 via lipo)
- Linux x64: .deb + .AppImage

Build chain: cargo build --release compiles the host j binary, which
jstudio's build.rs stages into resources/bin/ so it ships inside the
GUI bundle. Each platform job builds and uploads a workflow artifact;
the publish-nightly job consolidates all artifacts onto a rolling
nightly prerelease tag (gh release delete --cleanup-tag recreates it
each run).

AGENTS.md documents the nightly build under the jstudio submodule section.
@wuqie-xuanzhao wuqie-xuanzhao changed the title ci: add nightly build for j CLI + JStudio (win/mac-universal/linux) ci: 新增 j CLI + JStudio 每日构建(win/mac universal/linux) Jun 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant