本文档详细介绍了 dive 的自动化发布流程,解释了新版本如何被标记、构建和发布到各种分发渠道。有关在本地构建 dive 的信息,请参阅 构建系统。
dive 项目使用 GitHub Actions 来自动化发布,确保软件的分发一致且可重现。发布流程管理着
Dive 使用受控的发布流程和质量门,以确保只发布经过充分验证的代码。
来源:.github/workflows/release.yaml1-131
通过 GitHub 的 workflow_dispatch 机制触发发布
v1.0.0)触发工作流版本必须
工作流首先进行版本验证
来源:.github/workflows/release.yaml9-76
Dive 使用 GoReleaser 构建和发布发布产物。配置位于 .goreleaser.yaml。
为以下平台编译二进制文件:
| 操作系统 | 架构 |
|---|---|
| Linux | amd64, arm64, ppc64le |
| macOS | amd64, arm64 |
| Windows | amd64 |
所有二进制文件都使用以下方式编译:
CGO_ENABLED=0)发布流程创建:
Docker 镜像被构建并推送到
docker.io/wagoodman/diveghcr.io/wagoodman/dive镜像支持多架构,支持
amd64arm64对于每个注册表,都会创建以下标签:
最新版vX(主版本)vX.Y(主版本.次版本)vX.Y.Z(完整版本)来源:.goreleaser.yaml61-148 Dockerfile1-12 .github/workflows/release.yaml94-112
发布流程会更新 wagoodman/homebrew-dive 仓库中的 Homebrew 公式,使用户可以通过 Homebrew 安装 dive。
发布流程包含多个验证步骤:
这确保所有产物在公开可用之前都功能正常。
来源:.github/workflows/release.yaml10-76 .github/workflows/release.yaml127-130
Docker 镜像基于 Alpine Linux 并包含:
该镜像旨在做到最小化,同时提供分析 Docker 镜像所需的所有功能。
工作流处理以下平台的身份验证:
这通过 GitHub Actions secret 进行管理。
来源:.github/workflows/release.yaml94-112 .github/workflows/release.yaml123-127
dive 的发布流程高度自动化,确保了跨多个平台和分发渠道的可重现和一致的发布。该流程提供了质量门,以防止发布未经所有验证的代码,同时自动化了多平台发布的繁琐方面。