SuperAPI AI 工具集

upgrading-golang

编程与开发

查看项目

更新于 10-15 17:33

技能介绍

用途:自动化在 Chainloop 项目全组件中升级 Go 版本,按流程处理源码、Docker 镜像、文档及相关工具版本。

主要能力与用法:

  1. 确认目标版本:询问用户目标 Go 版本(如 1.25.3),并询问是否同时升级 Atlas 迁移 Docker 镜像(若是,再问目标 Atlas 版本,如 0.38.0)。
  2. 获取镜像摘要:执行 docker pull golang:X.XX.X,从输出中提取 SHA256 摘要。
  3. 更新源码:修改 ./go.mod 中的 go 指令,替换 go X.XX.X;按项目政策不要更新 ./extras/dagger/go.mod。
  4. 更新 Docker 镜像:在所有 Dockerfile 中替换 FROM golang:X.XX.X@sha256:OLD_DIGEST AS builder 为新的版本与摘要(完整文件清单见 files-to-update.md)。
  5. 更新文档:在 ./CLAUDE.md 的“Key Technologies”中更新版本引用。
  6. 可选更新 Atlas:拉取 arigaio/atlas 镜像并提取摘要,更新 ./app/controlplane/Dockerfile.migrations;更新 ./common.mk 前必须先验证版本可用:curl -sSf https://atlasgo.sh | ATLAS_VERSION=vX.XX.X sh -s -- --version,若不可用则只更新 Docker 镜像;可用后用 curl -sSf https://atlasgo.sh | ATLAS_VERSION=vX.XX.X sh -s -- -y 更新安装版本。
  7. 验证:运行 make test 与 make lint,出现错误需先解决。
  8. 收尾检查:更新许可证头年份;若涉及 proto 文件运行 buf format -w;若构造函数依赖变化运行 wire ./...;用 go mod tidy 校验 go.mod。

适用场景:需要跨 Chainloop 的 CLI、控制平面与 Artifact CAS 等组件统一升级 Go 版本时。

限制与注意:Docker 镜像必须使用 SHA256 摘要以保证安全与可复现;dagger 模块的 go.mod 不得更新;Go 升级可能引入破坏性变更,需充分测试。其余细节暂未提供。