Skip to content

Fork CI/CD dry-run:最小化跳过需要签名的 release.yml job #3

Description

@earayu

目标

apecloud/goose 这个 fork 上跑一次端到端 CI/CD dry-run,验证上游 release pipeline 在不改业务代码的前提下,是否能为 ApeCloud fork 构建和发布产物。

这次只验证三件事:

  1. 能否构建 fork 里的二进制和安装包
  2. 能否下载安装并运行这些产物
  3. 为了发布到 ApeCloud 自己的渠道,CI/CD 最少需要改哪些地方,例如 ghcr.io/apecloud/goosegithub.com/apecloud/goose/releases

这是 dry-run only。本 issue 不做品牌替换、Logo 替换、默认配置和功能隐藏;那些属于下一阶段。

目前观察

可以直接复用的 workflow

下面这些 workflow 在 fork 里基本可以直接工作,不需要改:

  • publish-docker.yml:已经使用 ghcr.io/${{ github.repository_owner }}/goosesubject-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 时会失败:

  1. bundle-desktop:macOS Apple Silicon signed desktop
  2. bundle-desktop-intel:macOS Intel signed desktop
  3. bundle-desktop-windows:Windows MSVC signed desktop
  4. 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,属于「我们自己的打包和分发」这一类改动。

改动内容:

  1. 给 4 个需要签名的 macOS / Windows Desktop job 加 if: false,dry-run 阶段跳过。
  2. release job 的 needs 改成只依赖 build-cliinstall-scriptbundle-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

安装脚本

  • download_cli.sh

同时,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 后,检查:

  1. github.com/apecloud/goose/actions 对应 workflow run 成功。
  2. github.com/apecloud/goose/releases/tag/v1.35.0-apecloud.0 里有预期 artifact。
  3. 下载一个 CLI artifact,解压后执行:
./goose --version

预期输出 1.35.0

  1. 拉取 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 和安全默认值。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions