关于 upgrading-golang
这项技能为 Chainloop 各组件升级 Go 版本提供操作流程,涵盖模块和 Docker 镜像引用更新、可选的 Atlas 升级,以及项目验证检查。
主要功能
- 01确认目标 Go 版本及可选 Atlas 版本
- 02更新 Go 指令和 Docker 镜像摘要
- 03修订文档中的版本引用
- 04可选更新 Atlas 镜像和 CLI
- 05运行测试、lint 和最终检查
适用场景
- 01升级 Chainloop 各组件的 Go 版本
- 02更新固定摘要的 Go Docker 镜像
- 03同时升级可选的 Atlas 迁移镜像
- 04通过项目检查验证升级结果
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ chainloop-dev/ chainloop --skill upgrading-golang安装后在 Claude Code 中输入/upgrading-golang确认已加载。
附带文件files-to-update.md
详细介绍
升级 Golang 版本
此技能可自动完成 Chainloop 项目所有组件的 Go 版本升级流程。
流程
1. 确认目标版本
询问用户:
- 想升级到哪个 Go 版本(例如“1.25.3”)
- 是否还要升级 Atlas 迁移 Docker 镜像(如果要,请询问目标 Atlas 版本,例如“0.38.0”)
2. 获取 Docker 镜像摘要
拉取官方 golang Docker 镜像并提取其 SHA256 摘要:
docker pull golang:X.XX.X
从输出中提取 SHA256 摘要(格式:sha256:abc123...)。
3. 更新源代码
更新以下文件中的 go 指令:
./go.mod
重要:根据项目政策,不要更新 ./extras/dagger/go.mod。
替换模式:
go X.XX.X
4. 更新 Docker 镜像
使用新版本和 SHA256 摘要更新所有 Dockerfile。完整列表请参阅 files-to-update.md。
替换模式:
FROM golang:X.XX.X@sha256:OLD_DIGEST AS builder
替换为:
FROM golang:X.XX.X@sha256:NEW_DIGEST AS builder
5. 更新文档
更新 ./CLAUDE.md 中“Key Technologies”下的版本引用:
- **Language**: Go X.XX.X. To know how to upgrade go version, see docs/runbooks
6. 更新 Atlas Docker 镜像和 CLI(可选)
如果用户要求升级 Atlas:
6a. 拉取 Atlas Docker 镜像并提取其 SHA256 摘要:
docker pull arigaio/atlas:X.XX.X
从输出中提取 SHA256 摘要(格式:sha256:abc123...)。
6b. 更新 ./app/controlplane/Dockerfile.migrations:
替换模式:
# from: arigaio/atlas:X.XX.X
# docker run arigaio/atlas@sha256:OLD_DIGEST version
# atlas version vX.XX.X
FROM arigaio/atlas@sha256:OLD_DIGEST as base
替换为:
# from: arigaio/atlas:X.XX.X
# docker run arigaio/atlas@sha256:NEW_DIGEST version
# atlas version vX.XX.X
FROM arigaio/atlas@sha256:NEW_DIGEST as base
7c. 更新 ./common.mk 中的 make init:
重要:更新 common.mk 中的版本之前,务必先使用 curl 命令测试 Atlas 版本是否可用:
curl -sSf https://atlasgo.sh | ATLAS_VERSION=vX.XX.X sh -s -- --version
如果命令失败或版本不可用,则不要更新 common.mk。此时只更新 Docker 镜像。
更新 init 目标中的 Atlas CLI 安装版本:
替换模式:
curl -sSf https://atlasgo.sh | ATLAS_VERSION=vX.XX.X sh -s -- -y
替换为新版本(注意:版本前加 v):
curl -sSf https://atlasgo.sh | ATLAS_VERSION=vX.XX.X sh -s -- -y
7. 验证更改
运行验证命令:
make test
make lint
如果出现错误,请在完成升级前解决。
8. 最终检查
- 确保更新所有许可证头(2024 → 2024-2025,或添加当前年份)
- 如果有 proto 文件受到影响,运行
buf format -w - 如果构造函数依赖发生变化,运行
wire ./... - 使用
go mod tidy验证go.mod更改
重要说明
- Docker 镜像始终使用 SHA256 摘要,以确保安全性和可复现性
- 不得更新 dagger 模块(
./extras/dagger/go.mod) - 请充分测试,因为 Go 升级可能引入重大变更
- 多个组件使用 Go:CLI、Control Plane 和 Artifact CAS