用途:为 Go CLI 应用搭建自动化发布基础设施,生成 GoReleaser 配置、Dockerfile 和 GitHub Actions 工作流。适用于用户希望为 Go CLI 项目添加发布自动化时。
主要能力: 一是读取 go.mod 推断模块路径、Go 版本与二进制名,并从模块路径推导 GitHub owner 与 repo;CGO 需求通过扫描 import "C" 判断。 二是让用户确认应用描述、License 及发布渠道,默认建议全部启用:github(GitHub Releases 二进制归档与校验和,必选)、docker(Dockerfile 与 GHCR 镜像推送)、homebrew(公式推送到 <github-owner>/homebrew-tap)。 三是生成 .goreleaser.yaml,并按条件调整:CGO 时设 CGO_ENABLED=1 并从 goos 移除 windows;未启用 homebrew 则移除 brews 段并删除 release.yml 中的 TAP_GITHUB_TOKEN;未启用 docker/homebrew 则移除对应 release.header 块。 四是生成 Dockerfile,无 CGO 用 alpine 模板,需要 CGO 用 debian 模板。 五是生成 GitHub 工作流 release.yml(始终)与 docker.yml(仅启用 docker 时)。 六是可选创建 internal/version/version.go,含 Version、GitCommit、BuildDate 变量。
使用方式:生成前先检查目标文件是否存在,存在则跳过或询问是否覆盖。完成后需配置 GitHub Secrets:GITHUB_TOKEN 由 Actions 自动提供,homebrew 需 TAP_GITHUB_TOKEN(具备 repo 权限的 PAT)。homebrew 需创建 <github-owner>/homebrew-tap 仓库及 Formula/ 目录。首次发布用 git tag v0.1.0 后 git push origin v0.1.0;本地测试用 goreleaser release --snapshot --clean。CI(测试、lint)由 go-ci 技能处理,除非用户尚未设置再行添加。
限制:无法从资料推断的信息需向用户询问,如 CGO 需求、应用描述、License(缺失时默认 MIT)与发布渠道;Go 版本在 go.mod 无 go 指令时取官方最新稳定版。具体模板内容与占位符细节未完整提供。