2023 周报 #2:Github Action 优化和 ChatGPT
2023-02-26 13:49:45
Github Action 优化
Kube-OVN 前段时间做了 E2E 测试的重构,增加了大量的测试,导致 Github Action 经常被占满,PR 经常好久才能合并,这周花时间和小伙伴优化了 Action 的执行时间,如果你也在 Github 上运行 Kubernetes 相关的 workflow 下面的优化方法可能会对你有帮助。
- 根据代码变动选择运行的测试和构建。比如在
Kube-OVN
中NetworkPolicy
兼容性测试花费时间较长,那就可以根据代码目录判断,如果变动代码和 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 么。