mcpField
U
upgrading-golang

upgrading-golang

github.com/chainloop-dev开发60744 次安装今天更新
代码仓库

关于 upgrading-golang

这项技能为 Chainloop 各组件升级 Go 版本提供操作流程,涵盖模块和 Docker 镜像引用更新、可选的 Atlas 升级,以及项目验证检查。

主要功能

  1. 01确认目标 Go 版本及可选 Atlas 版本
  2. 02更新 Go 指令和 Docker 镜像摘要
  3. 03修订文档中的版本引用
  4. 04可选更新 Atlas 镜像和 CLI
  5. 05运行测试、lint 和最终检查

适用场景

  1. 01升级 Chainloop 各组件的 Go 版本
  2. 02更新固定摘要的 Go Docker 镜像
  3. 03同时升级可选的 Atlas 迁移镜像
  4. 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. 确认目标版本

询问用户:

  1. 想升级到哪个 Go 版本(例如“1.25.3”)
  2. 是否还要升级 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

评论

支持 Markdown