Skip to main content

Command Palette

Search for a command to run...

Release 自动更新 Krew Index

Published
1 min readView as Markdown

前面介绍过创建 Krew 插件的方法,其中生成插件描述文件的部分,可以说是又直接又麻烦,而且每次发布的时候,都要重新生成并刷新 Krew Index,于是我写了个脚本,可以根据既有信息和已经发布的二进制文件生成 YAML 文件。这个脚本的功能,简单说就是写一个 YAML 模板,然后下载二进制文件,计算哈希,生成最终的插件描述文件,把描述文件覆盖旧版本,然后发布 PR 即可。有了脚本之后其实还是挺麻烦的,不过在浏览 Krew 文档时发现有一节 Automating plugin updates ,其中提到了可以使用 Krew Release Bot 来自动地完成这个过程,官方强烈推荐使用这个 Bot 进行更新,理由是该 Bot 生成清单文件后自动提交的 PR,如果其中包含的变更内容只是简单的版本升级,能够被 Krew Index 的 Bot 自动处理,免除人工环节之后,整个更新过程可以在几分钟之内完成,避免了新版本二进制无法及时更新的尴尬。下面就介绍一下这个 Bot 的用法。

这个 Bot 是一个 Github Action 的插件,其工作原理和之前的脚本类似,在前文用 Github Action 自动发布二进制包中,在 Karmada 项目 里使用 Github Action 进行了二进制文件的构建和发布,接下来继续使用这个基础,根据新发布的二进制来更新 Krew Index。

要在项目里使用 Krew Release Bot,首先要求项目插件已经成功发布到 Krew Index 中;接下来,需要生成一个文件 .krew.yaml,作为 Bot 的模板,这个模板和 Krew Index 的 YAML 是基本一致的,不过其中的二进制 URL 和 Hash 部分被替换为模板的占位符,例如 {{addURIAndSha "https://github.com/karmada-io/karmada/releases/download/{{ .TagName }}/kubectl-karmada-darwin-arm64.tgz" .TagName }},甚至连这一步简单操作,Bot 作者也帮你解决了——他做了一个 Krew Release Bot Helper,在输入框输入已发布的 Karmada 插件名称,就可以自动生成 YAML 模板,放到项目里就可以了。

接下来,在 Release Action 里面加入如下语句:

- name: Update new version in krew-index
  uses: rajatjindal/krew-release-bot@v0.0.40

提交代码之后,创建一个新的 Release,会发现 Action 失败了,错误信息大概如下:

原因在于前面使用的 Matrix,我们的 PR 应该在生成并上传所有的二进制文件之后才能发起,所以改成这样:

  update-krew-index:
    needs: release-assests
    name: Update krew-index
    runs-on: ubuntu-18.04
    steps:
    - uses: actions/checkout@master
    - name: Update new version in krew-index
      uses: rajatjindal/krew-release-bot@v0.0.40

这里用了一个新的 job,使用 needs 关键字明确指出,需要等待 release-assests 任务完成。

再次提交,并创建 Tag,创建 Release。Action 运行示意图如下:

这里生成的 URL 所指向的二进制文件是无法访问的,因此还是无法成功,但如果是官方自行发布的话,就可以了,而且如上文所说,这样生成的 PR 会在几分钟之内得到 Approve。

读到这里会产生一个问题,会不会有人冒充发表呢?应该是不会的:Krew index 项目的 PR 机器人会对新 PR 的差异进行判定,如果不是典型的版本更新,会转入人工通道,因此新发的 PR 必须是和上一个版本具备这样的差异关系,而且必须是基于官方的二进制发布,才能够得到自动审批,因此完全可以放心使用。

More from this blog

FDE 是传统运维产品厂商的出路吗?

很多传统运维产品厂商,已经不缺产品了。 从 ITSM、CMDB、监控、自动化,到 IAM、数据中心管理和各类大屏,一个成熟厂商往往都能拿出一张很完整的产品地图。销售材料上看,客户运维部门的日常工作几乎都被覆盖了。 但项目一落地,味道就变了。 产品越多,集成越重;模块越全,边界越模糊;客户越大,定制越深。到了后期,项目成功本身也会变成麻烦:现场改出来的东西回不到主干,配置越来越像黑箱,谁都不敢轻易升

Jun 29, 20263 min read

绵里藏针才是 AIOps 的本质?

Agent 让运维编排变得柔性、可变、甚至自演进;但真正敢进入生产环境的 AIOps,仍然离不开坚实、受控、可审计、可回退的自动化底座。 从 Gartner 提出 AIOps 概念到现在,也大概有十年了。这么多年来,这个领域好像发生了很多变化,又好像没什么“本质”的变化。技术上,我们经历了传统机器学习、深度学习和神经网络、以及大模型和智能体这样“翻天覆地”的变化;业务上,我们面对的是更多品种、更大

May 31, 20263 min read

龙虾恐慌:AIOps 又要改名了?

ChatGPT 开始,把 AI 拉近到普罗大众的面前,让无数人感受到 AI 的亲民魅力。而龙虾,则把大模型驱动的自动化能力,突然间变得水灵灵、活泼泼地走进千家万户。它不只是“风口上的猪”,而是风口本身。热度高到让 Mac mini 一度断货,不知道这在不在库克的预料之内。 每代人都有每代人的鸡蛋,春节期间,我就领了我的鸡蛋。翻出古老的 MacBook Air M1,充值各种大模型。当然了,这个工具

Mar 9, 20261 min read

再见 2025

我猜不少人以为这个号废了吧?并没有,只是今年变化有点大,一直有种抄起键盘,无从说起的感觉,所以一直偷懒到今天,2025 的最后一天。 今年是我的第四个本命年,去年末一期播客里,大内说本命年不是灾年,是变化年,有危也有机。可是讲真啊,只看到危,没看到机。 各种因缘际会,从鹅厂跳槽到前东家,已经接近四年,第一个合同期已经进入尾声。除了前两年还在云原生领域嗷嗷叫,后两年基本都是些鸡零狗碎的东西了,用老东家的术语说是——偏离主航道,可谓是前景暗淡了。 一旦确定要滚蛋,反倒心思轻松起来,每天骑着我的小红车...

Jan 5, 20261 min read

辅助编程?dora 说:我知道你很急可是请你别急

从 OpenGPT 把大模型的火烧旺了之后,这三年来,相信很多组织或摩拳擦掌、或躬身入局,希望借助聪明能干的大模型,或想偿还技术宅,或想降本增效,或想弯道超车。一时间,沉寂许久的 AIxx 又活过来了,LLM Ops、Vibe Coding、中医大模型、GPT 算命等等,全都老树发新芽,焕发了勃勃生机。那么视角拉回从业者最关注的饭碗相关的领域之一——AI 辅助开发,产生了什么触动,应该如何拥抱呢? DORA 的年度报告中给出了很有意思的结论——强者恒强。 执行摘要部分总结了几个有趣的点: 问题...

Oct 6, 20251 min read

【伪】架构师

344 posts