目标
在 apecloud/goose 这个 fork 上跑一次端到端 CI/CD dry-run,验证上游 release pipeline 在不改业务代码的前提下,是否能为 ApeCloud fork 构建和发布产物。
这次只验证三件事:
- 能否构建 fork 里的二进制和安装包
- 能否下载安装并运行这些产物
- 为了发布到 ApeCloud 自己的渠道,CI/CD 最少需要改哪些地方,例如
ghcr.io/apecloud/goose 和 github.com/apecloud/goose/releases
这是 dry-run only。本 issue 不做品牌替换、Logo 替换、默认配置和功能隐藏;那些属于下一阶段。
目前观察
可以直接复用的 workflow
下面这些 workflow 在 fork 里基本可以直接工作,不需要改:
publish-docker.yml:已经使用 ghcr.io/${{ github.repository_owner }}/goose 和 subject-name: ghcr.io/${{ github.repository_owner }}/goose,天然适配 fork。tag 发布时会推到 ghcr.io/apecloud/goose:VERSION。
build-cli.yml:可复用 workflow,不依赖额外 secrets,用标准 cargo 和 GitHub 自带 GITHUB_TOKEN 构建多平台 CLI。
bundle-desktop-linux.yml:Linux Desktop 未签名构建,不需要签名 secrets。
release.yml 里的 install-script job:只上传 download_cli.sh artifact,不依赖额外 secrets。
publish-npm.yml:只由 workflow_call / workflow_dispatch 触发,不会在 tag push 时自动运行;本轮可以暂不处理。
fork 里会失败的 job
release.yml 中有 4 个 job 依赖 Apple / Windows 签名证书,以及名为 signing 的 environment。ApeCloud fork 当前没有这些 secrets,所以 dry-run 时会失败:
bundle-desktop:macOS Apple Silicon signed desktop
bundle-desktop-intel:macOS Intel signed desktop
bundle-desktop-windows:Windows MSVC signed desktop
bundle-desktop-windows-cuda:Windows MSVC CUDA signed desktop
另外,release 汇总 job 现在的 needs 包含这些签名 job。如果这些 job 被跳过,GitHub Actions 默认也可能跳过 release job。因此 dry-run patch 需要把这些签名 job 从 needs 里移除,让 release job 只汇总 CLI、install script 和 Linux Desktop artifact。
建议改动
只改 .github/workflows/release.yml,属于「我们自己的打包和分发」这一类改动。
改动内容:
- 给 4 个需要签名的 macOS / Windows Desktop job 加
if: false,dry-run 阶段跳过。
- 把
release job 的 needs 改成只依赖 build-cli、install-script、bundle-desktop-linux。
示意 diff:
bundle-desktop:
+ if: false # ApeCloud fork: dry-run 阶段跳过需要 Apple 签名证书的 macOS Apple Silicon Desktop
uses: ./.github/workflows/bundle-desktop.yml
bundle-desktop-intel:
+ if: false # ApeCloud fork: dry-run 阶段跳过需要 Apple 签名证书的 macOS Intel Desktop
uses: ./.github/workflows/bundle-desktop-intel.yml
bundle-desktop-windows:
+ if: false # ApeCloud fork: dry-run 阶段跳过需要 Windows 签名证书的 Desktop
uses: ./.github/workflows/bundle-desktop-windows.yml
bundle-desktop-windows-cuda:
+ if: false # ApeCloud fork: dry-run 阶段跳过需要 Windows 签名证书的 CUDA Desktop
uses: ./.github/workflows/bundle-desktop-windows.yml
release:
- needs: [build-cli, install-script, bundle-desktop, bundle-desktop-intel, bundle-desktop-linux, bundle-desktop-windows, bundle-desktop-windows-cuda]
+ needs: [build-cli, install-script, bundle-desktop-linux]
本建议不修改 Rust 代码,不修改 Goose agent loop,不修改 MCP runtime。
预期 dry-run 产物
打一个测试 tag,例如 v1.35.0-apecloud.0 后,预期 release.yml 在 30-60 分钟内完成,并在 github.com/apecloud/goose/releases 生成以下产物:
CLI 二进制:
- Linux x86_64 / aarch64 的 gnu / gnu-vulkan / musl variant
- macOS x86_64-apple-darwin / aarch64-apple-darwin
- Windows x86_64-pc-windows-msvc / cuda variant(未签名 zip)
Linux Desktop:
.deb
.rpm
.flatpak
- vulkan / non-vulkan variant
安装脚本:
同时,publish-docker.yml 应该并行触发,并推送:
ghcr.io/apecloud/goose:1.35.0-apecloud.0
本轮暂不产出
这些留到后续阶段处理:
- macOS Desktop signed installer:需要 Apple Developer 证书和 notarization 配置
- Windows Desktop signed installer:需要 Windows code-signing 证书
- NPM package:需要 ApeCloud NPM scope 和 trusted publisher 配置
验证方式
patch 合并并推 tag 后,检查:
github.com/apecloud/goose/actions 对应 workflow run 成功。
github.com/apecloud/goose/releases/tag/v1.35.0-apecloud.0 里有预期 artifact。
- 下载一个 CLI artifact,解压后执行:
预期输出 1.35.0。
- 拉取 Docker 镜像并验证:
docker pull ghcr.io/apecloud/goose:1.35.0-apecloud.0
docker run --rm ghcr.io/apecloud/goose:1.35.0-apecloud.0 --version
预期输出 1.35.0。
改动边界说明
- 本 issue 只涉及
.github/workflows/release.yml,属于「我们自己的打包和分发」。
- 不改
crates/**,不改核心 Rust 逻辑。
- dry-run 通过后,下一阶段再做品牌、Logo、默认配置、UI hide 和安全默认值。
目标
在
apecloud/goose这个 fork 上跑一次端到端 CI/CD dry-run,验证上游 release pipeline 在不改业务代码的前提下,是否能为 ApeCloud fork 构建和发布产物。这次只验证三件事:
ghcr.io/apecloud/goose和github.com/apecloud/goose/releases这是 dry-run only。本 issue 不做品牌替换、Logo 替换、默认配置和功能隐藏;那些属于下一阶段。
目前观察
可以直接复用的 workflow
下面这些 workflow 在 fork 里基本可以直接工作,不需要改:
publish-docker.yml:已经使用ghcr.io/${{ github.repository_owner }}/goose和subject-name: ghcr.io/${{ github.repository_owner }}/goose,天然适配 fork。tag 发布时会推到ghcr.io/apecloud/goose:VERSION。build-cli.yml:可复用 workflow,不依赖额外 secrets,用标准 cargo 和 GitHub 自带GITHUB_TOKEN构建多平台 CLI。bundle-desktop-linux.yml:Linux Desktop 未签名构建,不需要签名 secrets。release.yml里的install-scriptjob:只上传download_cli.shartifact,不依赖额外 secrets。publish-npm.yml:只由workflow_call/workflow_dispatch触发,不会在 tag push 时自动运行;本轮可以暂不处理。fork 里会失败的 job
release.yml中有 4 个 job 依赖 Apple / Windows 签名证书,以及名为signing的 environment。ApeCloud fork 当前没有这些 secrets,所以 dry-run 时会失败:bundle-desktop:macOS Apple Silicon signed desktopbundle-desktop-intel:macOS Intel signed desktopbundle-desktop-windows:Windows MSVC signed desktopbundle-desktop-windows-cuda:Windows MSVC CUDA signed desktop另外,
release汇总 job 现在的needs包含这些签名 job。如果这些 job 被跳过,GitHub Actions 默认也可能跳过releasejob。因此 dry-run patch 需要把这些签名 job 从needs里移除,让 release job 只汇总 CLI、install script 和 Linux Desktop artifact。建议改动
只改
.github/workflows/release.yml,属于「我们自己的打包和分发」这一类改动。改动内容:
if: false,dry-run 阶段跳过。releasejob 的needs改成只依赖build-cli、install-script、bundle-desktop-linux。示意 diff:
本建议不修改 Rust 代码,不修改 Goose agent loop,不修改 MCP runtime。
预期 dry-run 产物
打一个测试 tag,例如
v1.35.0-apecloud.0后,预期release.yml在 30-60 分钟内完成,并在github.com/apecloud/goose/releases生成以下产物:CLI 二进制:
Linux Desktop:
.deb.rpm.flatpak安装脚本:
download_cli.sh同时,
publish-docker.yml应该并行触发,并推送:ghcr.io/apecloud/goose:1.35.0-apecloud.0本轮暂不产出
这些留到后续阶段处理:
验证方式
patch 合并并推 tag 后,检查:
github.com/apecloud/goose/actions对应 workflow run 成功。github.com/apecloud/goose/releases/tag/v1.35.0-apecloud.0里有预期 artifact。预期输出
1.35.0。预期输出
1.35.0。改动边界说明
.github/workflows/release.yml,属于「我们自己的打包和分发」。crates/**,不改核心 Rust 逻辑。