Release 发布流程
二进制(mcp-server / crtsh-cli)的发布走 tag-based GoReleaser,与文档站部署是两条独立的 CI 线。
GoReleasertag-based8 平台2 二进制 × 8 平台发布就两步
flowchart LR T["git tag v1.1.0"] --> P["git push origin v1.1.0"] P --> TR["触发 goreleaser.yml"] TR --> B["构建 8 平台 × 2 二进制"] B --> U["上传 Release 资产"] U --> R["GitHub Release 上线"]
bash
git tag v1.1.0
git push origin v1.1.0推 tag 触发 GoReleaser workflow,自动构建并上传 Release 资产。
构建产物矩阵
| OS | 架构 |
|---|---|
| linux | amd64 / arm64 / 386 |
| darwin (macOS) | amd64 / arm64 |
| windows | amd64 / arm64 / 386 |
| freebsd | amd64 |
每个平台产出两个 tarball:
🔌mcp-server
crtsh-skills-mcp-server-{os}-{arch}.tar.gz
💻crtsh-cli
crtsh-skills-cli-{os}-{arch}.tar.gz
版本注入
构建时通过 -ldflags 把 tag 注入二进制:
bash
go build -ldflags "-X main.Version=v1.1.0" -o mcp-server ./cmd/mcp-server/
go build -ldflags "-X main.Version=v1.1.0" -o crtsh-cli ./cmd/crtsh-cli/$ ./mcp-server --version
crt.sh-skills mcp-server v1.1.0
$ ./crtsh-cli --version
crt.sh-skills crtsh-cli v1.1.0
crt.sh-skills mcp-server v1.1.0
$ ./crtsh-cli --version
crt.sh-skills crtsh-cli v1.1.0
本地 dry-run
bash
goreleaser release --snapshot --clean--snapshot 的意义
不发布、不要求 git tag、不推 Release,纯本地验证 GoReleaser 配置无误。改完 .goreleaser.yaml 先跑这个。
一行安装预编译二进制
$ OS=$(uname -s | tr '[:upper:]' '[:lower:]'); ARCH=$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/')
$ curl -sL https://github.com/cyberspacesec/crt.sh-skills/releases/latest/download/crtsh-skills-mcp-server-${OS}-${ARCH}.tar.gz | tar xz
$ ./mcp-server --transport stdio
✓ MCP server running on stdio
$ curl -sL https://github.com/cyberspacesec/crt.sh-skills/releases/latest/download/crtsh-skills-mcp-server-${OS}-${ARCH}.tar.gz | tar xz
$ ./mcp-server --transport stdio
✓ MCP server running on stdio
CI 流程全景
flowchart TB P["push main"] --> CI["ci.yml
test + lint + build + skills 校验"] P --> DW["deploy-website.yml
构建文档 → Pages"] T["push tag v*"] --> RL["goreleaser.yml
构建二进制 → Release"]
test + lint + build + skills 校验"] P --> DW["deploy-website.yml
构建文档 → Pages"] T["push tag v*"] --> RL["goreleaser.yml
构建二进制 → Release"]
三条线各司其职:
🧪ci.yml
保质量:测试 + lint + skills 一致性
📖deploy-website.yml
发文档:VitePress → Pages
📦goreleaser.yml
发二进制:8 平台 → Release