2023 周报 #2:Github Action 优化和 ChatGPT
2023-02-26 13:49:45

Github Action 优化

Kube-OVN 前段时间做了 E2E 测试的重构,增加了大量的测试,导致 Github Action 经常被占满,PR 经常好久才能合并,这周花时间和小伙伴优化了 Action 的执行时间,如果你也在 Github 上运行 Kubernetes 相关的 workflow 下面的优化方法可能会对你有帮助。

  • 根据代码变动选择运行的测试和构建。比如在 Kube-OVNNetworkPolicy 兼容性测试花费时间较长,那就可以根据代码目录判断,如果变动代码和 NetworkPolicy 无关,这部分测试就不运行了。
  • Github public repo 最大并发数是 20,如果 workflow 拆分的太细,超过 20 个并发,那么准备阶段的开销可能会大于并发节省的时间,需要在并发数量和每次任务的准备时间之间做权衡。
  • Cache 的 restore 和 save 都需要花时间,1G 内容 restore 大概 45s,save 要 3min,要考虑流水线的情况选择使哪些使用 cache,哪些就不用了。
  • kind 起一个 Kubernetes 集群大概要 1m,k3d 差不多 10s,我们的环境有些兼容性问题,如果没有兼容性问题 CI 测试可以优先使用 k3d
  • Ginkgo 有并发测试的选项,很多 Kubernetes 的测试需要等待状态就绪,CPU 消耗并不大,可以适度增加并发度。
  • 同样是因为 Kubernetes 中有很多等待状态的 sleep,可以把 sleep 间隔调小。比如 sleep 从 5s 调到 1s,那平均下来每次运行会节省 2s。
  • kubectl delete 会默认等待删除完全结束,在删除 Pod 时可能会花较长时间,尤其是批量删除会一个个等,可以用 --wait=false 避免等待。
  • 同样是和等待状态相关,设了 readinessProbe 的工作负载会等待 initialDelaySeconds 之后再探测,状态才会变成 ready,可以把 initialDelaySeconds 删掉,这样能加速启动。

ChatGPT

这周菲律宾的 globe 手机卡到手了,总算能成功注册一个 openAI 的账号,不需要关各种代理的限制,能比较充分的去使用了。这个星期主要用 chatGPT 做了如下几个事情:

  • 写了封拖了很久的英文邮件,输入邮件的目的和一些背景信息让它写,第一次输出的有些过于客气和啰嗦,让它自己简化了一次后又太干脆了,结合两个版本自己微调一下就发出去了,前后不到 5 分钟就搞定了。
  • 优化了给 Cilium 提的一个 Feature Request,这次是我自己先写了个初版,中途有些概念问题和一些背景知识问了一下,最后把文本交给他优化,一下子感觉 native 了不少,也是再微调一下就直接发了。
  • 看的一些英文内容,不太理解的地方直接把整段辅助过去让他给我解释,不仅有翻译,还有背景知识,比一般的词典都好用。比如这句 No provider or user of an interactive computer service shall be treated as the publisher or speaker of any information provided by another information content provider.
  • 学 JavaScript 的过程中临时遇到的一些疑问,想到了就去问,概念和入门性的东西讲的相当详细,感觉就算找个老师都不会那么生动耐心的去讲。
  • 直接帮我写了几个 JavaScript 的函数,发现 chatGPT 超级喜欢正则,还会详细讲解正则表达式,最后还给了几个测试用例。不过有一个函数正则写错了,看测试用例看出问题,告诉他哪里有问题,他就改正了。
  • 帮我爸写了篇退休感言,帮我爸同事要写的书列了个大纲,编了个猪八戒和林黛玉的故事。我爸思考了一天后和我说文字工作者不存在了,现在的人想要学东西太容易了,编这个程序的人不简单,这个东西会不会卡脖子,小爱什么的不是一个层次的东西。
  • logseq 一个不存在的分享发布功能,他非说有,还告诉我是怎么实现的。页面交互,后台逻辑,可能用到的技术都编出来了,其中一个用 gist 来实现的方案看上去还不错。
  • 让他帮我列了一下今年的 Roadmap,高度吻合后又让他列了下竞品的 Roadmap。

给我的感受是使用 chatGPT 后,很多任务的难度从创作级别降到了 review 级别,不管是文本生成,代码生成甚至是 Roadmap 生成,原本需要从 0 开始创作,现在变成了基于一个还不错的输出做质量检查和微调。由于任务完全变成了另一个类型,从产出的角度来讲效率绝对是大幅提升了。但是我隐隐有些担心如果形成了路径依赖,跳过了中间过程直接拿到结果,创造的能力会不会受到影响?

对于用 chatGPT 辅助学习,实际效果也很不错,相比搜索引擎需要在很多信息中做过滤,chatGPT 能一下子提供直接相关的信息,可以减少很多注意力的转移。不过胡说八道的情况存在的比例也不低,还是要有一定的判断。当感觉出有问题的时候还是要追问几句,再去搜索引擎交叉验证一下。

我希望未来所有软硬件的用户交互方式都能提供一个 chat 的接口,在经历了鼠标、键盘、触屏后又能以一种更高效的形式回归到语音交互。想一想这不就是老罗当年的 TNT 么。