Skip to content

[Proposal] 引入全自动构建发布流与一键安装脚本,实现 NeoCode 零环境开箱即用 #73

@pionxe

Description

@pionxe

背景与痛点 (Background)

目前,要想运行 NeoCode,用户必须在本地配置好 Go 开发环境并自行编译。这无形中提高了项目的使用门槛,特别是对于那些仅仅想“开箱即用”而非参与二次开发的用户来说,体验不够友好。

虽然我们可以要求用户去 Releases 页面手动下载压缩包并配置环境变量,但这依然不够极客、不够丝滑。我们需要为 NeoCode 提供像 Docker 或 Node.js 那样标准化的工业级分发和安装体验。

提议方案 (Proposed Solution)

引入 “GoReleaser + GitHub Actions + 自动化安装脚本” 的完整工具链,实现从代码打 Tag 到终端一键安装的全自动闭环。

核心思路分为两端:
1. 生产端:全自动跨平台构建 (CI/CD)

  • 禁用 CGO (CGO_ENABLED=0),静态编译纯二进制文件。
  • 配置 GoReleaser (.goreleaser.yaml),统一管理交叉编译(Linux/macOS/Windows)、多架构(amd64/arm64)以及产物打包。
  • 结合 GitHub Actions,在推送 v* Tag 时自动触发构建,并将产物挂载到 GitHub Releases。

2. 消费端:终端一键安装脚本 (Installation Scripts)

  • 在项目仓库根目录维护 install.sh (Linux/macOS) 和 install.ps1 (Windows) 脚本。
  • 脚本逻辑:自动调用 GitHub API 获取最新版本 -> 识别当前操作系统和架构 -> 下载对应的压缩包 -> 解压 -> 将可执行文件自动部署到系统环境变量目录 (/usr/local/bin 或 AppData)。

预期收益 (Benefits)

  • 极致的用户体验:真正的零依赖、开箱即用。用户只需在终端执行一行命令即可完成全部安装和环境配置:
    • Linux / macOS: curl -sSL https://raw.githubusercontent.com/YOUR_ORG/neocode/main/install.sh | bash
    • Windows: irm https://raw.githubusercontent.com/YOUR_ORG/neocode/main/install.ps1 | iex
  • 解放开发者双手:团队日常发布版本只需执行 git taggit push,打包分发全自动化。
  • 标准化与专业度:统一产物的命名规范,极大提升开源项目的工程化水平。

实施步骤 (Implementation Steps)

  • 新增 .goreleaser.yaml 配置文件,定义编译和打包规则。
  • 新增 .github/workflows/release.yml,配置 Action 工作流。
  • 编写并测试 install.shinstall.ps1 一键安装脚本,处理不同平台的环境变量逻辑。
  • 测试工作流:推送测试 Tag,验证 Releases 挂载以及终端一键安装脚本的可用性。
  • 彻底翻新 README.md 中的安装指南,将一键安装命令置顶。

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