mcpField
U
upgrading-chart

upgrading-chart

github.com/chainloop-dev云与 DevOps60738 次安装今天更新
代码仓库

关于 upgrading-chart

用于升级 Chainloop 项目中 PostgreSQL 和 Vault 的 Bitnami Helm chart 依赖。支持指定镜像版本更新和 chart 次版本升级;检测到主版本升级时会停止并要求人工审查。

主要功能

  1. 01指定容器镜像版本升级
  2. 02Chart 次版本升级
  3. 03主版本升级拦截
  4. 04版本兼容性检查
  5. 05Helm lint 与模板验证
  6. 06回滚操作说明

适用场景

  1. 01更新 PostgreSQL 镜像版本
  2. 02在当前主版本内升级 Vault chart
  3. 03验证 Chainloop chart 依赖变更

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/chainloop-dev/chainloop --skill upgrading-chart

安装后在 Claude Code 中输入/upgrading-chart确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

chart-upgrade-process.md
files-modified.md
image-upgrade-process.md

详细介绍

升级 Helm Chart 依赖项

此技能可自动升级 Chainloop 项目中的 Helm chart 依赖项。支持 PostgreSQL 和 Vault(均为 Bitnami chart)。

关键限制

版本升级规则:

  • 补丁版本升级(1.2.3 → 1.2.4):允许
  • 次版本升级(1.2.x → 1.3.x):允许
  • 主版本升级(1.x.x → 2.x.x):禁止 — 立即停止

强制要求:如果检测到主版本升级,请停止流程并告知用户需要进行人工审核。

升级类型

此技能支持两种升级类型:

  1. 指定镜像升级:将容器镜像更新到指定版本(chart 不变)
  2. Chart 次版本升级:将 chart 更新到最新次版本(可能包含镜像更新)

重要提示:容器镜像只能作为 chart 升级的一部分进行更新,绝不会单独更新(类型 1 除外)。

流程

1. 确定升级类型

询问用户要执行哪种升级:

  • 类型 1:指定镜像版本升级
  • 类型 2:最新次版本 chart 升级

同时询问要升级哪个 chart:postgresql 或 vault

2. 升级前验证

检查当前状态:

cat deployment/chainloop/charts/<chart-name>/Chart.yaml | grep "^version:"
cat deployment/chainloop/charts/<chart-name>/Chart.yaml | grep "^appVersion:"
3. 版本兼容性检查

对于任何版本变更,都要验证主版本保持不变:

CURRENT_MAJOR=$(echo "$CURRENT_VERSION" | cut -d. -f1)
TARGET_MAJOR=$(echo "$TARGET_VERSION" | cut -d. -f1)

if [ "$CURRENT_MAJOR" != "$TARGET_MAJOR" ]; then
    echo "FORBIDDEN: Major version upgrade detected"
    exit 1
fi

如果检测到主版本升级,请停止并上报。

类型 1:指定镜像升级

详细步骤请参阅 image-upgrade-process.md。

摘要:

  1. 在 Bitnami Containers 中找到目标容器镜像
  2. 查找包含发布消息模式的提交
  3. 从 Dockerfile 中提取 APP_VERSION
  4. 更新 deployment/charts/<chart-name>/Chart.yaml 中的 appVersion
  5. 更新 .github/workflows/build_external_container_images.yaml 中的提交哈希

类型 2:Chart 次版本升级

详细步骤请参阅 chart-upgrade-process.md。

摘要:

  1. 在 Bitnami Charts 的 CHANGELOG.md 中找到目标 chart 版本
  2. 验证仅执行次版本升级
  3. 下载并解压目标 chart
  4. 检查镜像是否有变更(比较 Chart.yaml)
  5. 如果镜像发生变化,更新容器镜像引用
  6. 将 chart 更新纳入仓库(复制文件)
  7. 按正确顺序更新依赖项
  8. 更新主 chart 的依赖版本
  9. 清理临时文件

验证

完成任意类型的升级后,运行:

# Lint charts
helm lint deployment/charts/<chart-name>
helm lint deployment/chainloop

# Template validation
helm template deployment/charts/<chart-name>
helm template deployment/chainloop

# Local testing
cd devel && docker compose up

# Verify image consistency
grep -r "appVersion\|image.*tag" deployment/charts/<chart-name>/

修改的文件

完整列表请参阅 files-modified.md。

故障排查

常见问题:

  • 镜像版本不匹配:确认 APP_VERSION 与 Chart.yaml 中的 appVersion 一致
  • 构建失败:检查构建工作流中的提交引用
  • 依赖冲突:确认依赖项按正确顺序更新(先更新纳入仓库的 chart,再更新主 chart)

回滚

如果出现问题:

git checkout HEAD -- deployment/
find deployment/ -name "Chart.lock" -delete
cd deployment/chainloop && helm dependency build
cd ../../devel && docker compose down && docker compose up

重要说明

  • Dex 由项目自行管理,遵循单独的流程(本技能不涵盖)
  • 始终使用提交哈希以确保可复现性
  • 必须按正确顺序更新依赖项:先更新纳入仓库的 chart,再更新主 chart
  • 容器镜像位于 Bitnami Containers 仓库,charts 位于 Bitnami Charts 仓库

评论

支持 Markdown