2022W32 - “每次拖延文档都有你!”
2022-08-15 00:35:55

这周赶完了最紧张的 deadline,工作节奏正常多了,长舒一口气。

工作

本周上线 API 文档。我终于忙完这一波,可以开始忙下一波了(

写了个小脚本

前几天跟同事聊到总是不能按时搜集到发版文档,突发奇想写个脚本来看看哪些 team 总是拖延文档。感觉应该蛮简单的,周五晚上就写了一会儿。

「感觉应该蛮简单的。」已经不是第一次被自己蠢到了。

一开始试图用我蹩脚的 JS 来完成,因为很馋 rest.js 的库。主逻辑倒是很简单,但调试了一个多小时,发现我搞不定 Promise,一直卡在 Promise <pending>,只好换成我同样蹩脚的 Python,10 分钟解决战斗(Python,狗屎派程序员永远滴神)。周六睡醒了一想,Promise <pending> 是不是因为我没有在 .then() 里写回调函数。好,不愧是你。又调了 10 分钟搞定了。

所以同一个逻辑我写了 JS/Python 两种实现 … 只好安慰自己好歹明白了怎么用 Promise。

脚本逻辑是这样的:搜索 docs-cn 仓库里所有在 code freeze 后提交的发版文档 PR,读各个 PR 的 area 相关 label,就可以统计到各个 area 的延期 PR 数量。

1
2
3
4
5
6
7
8
9
The following are pull requests created in pingcap/docs-cn after 2022-xx-xx with label v6.x:
-------------------------------------------------------
Total: xx
area/br: x
area/planner: x
area/engine: x
area/bigdata: x
area/sql-infra: x
...

下次催文档的时候,就可以把数据甩出来:“每次拖延文档都有你”

改了个 CI

上周给 docs 仓库加了一个 link check,在 PR 里检查所有外链是否都能正常访问,用的是 Lychee Action (fail fast),又参考这个 issue 加了一行,只检查这个 PR 里修改的文件。主要的修改是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
# Gets a list of files from the PR with a git status of Added (A) or Modified (M)
- name: 'Get a list of changed files'
id: changed-files
run: |
CHANGED_FILES=$(git diff-tree --name-only --diff-filter 'AM' -r HEAD^1 HEAD | sed -z "s/\n$//;s/\n/' '/g")
echo "::set-output name=all_changed_files::${CHANGED_FILES}"

# Runs lychee checker on the changed files
- name: 'Check Links'
uses: lycheeverse/lychee-action@v1.5.0
with:
args: -n -- '${{ steps.changed-files.outputs.all_changed_files }}'

运行一周后,发现一个小问题,如果 PR 里修改了非文本文件,比如图片,lychee 会报错挂掉。

周六早上在想怎么从 ‘Get a list of changed files’ 里把非 markdown 文件都过滤掉。一开始想的是用 grep 或者 sed 命令,读了一会儿文档感觉头大。跑去看了以前的 CI 是咋写的,才发现原来在 git diff-tree 后面加上 -- "*.md" 就行了。躺。

1
git diff-tree --name-only --diff-filter 'AM' -r HEAD^1 HEAD -- "*.md"

就这么简单。不过又顺手发现了一个坑,如果 changed files 里没有 md 文件,’Get a list of changed files’ 的输出就会为空,这时 lychee 也会报错挂掉。试着给 ‘Check Links’ 加了一个 if 判断:

1
2
3
4
5
6
- name: 'Check Links'
# Runs this step only when changed files are not empty
if: ${{ steps.changed-files.outputs.all_changed_files }}
uses: lycheeverse/lychee-action@v1.5.0
with:
args: -n -- '${{ steps.changed-files.outputs.all_changed_files }}'

关机下班!

Fix 文档站 build failure

因为一些未知原因,周五晚上文档站 build 挂了,有一篇客户等着看的文档上不了线。我刚好有空,就帮忙看了下怎么回事。

从 log 里看是我们在改 mdx tag 的时候写错了一些属性,但文档仓库的 CI 目前不检查这个,所以错误的 tag 合进了 master,在 Gatsby build 时才发现挂掉了。

现在 build 是增量构建,所以我想出来的 fix 是:

  1. revert 客户要看的文档。
  2. 修复改错的 tag。
  3. 重新合并客户要看的文档。

目标文档很快构建上线了。但这只是权宜之计,也就周末顶一顶用。Gatsby 的 cache 已经脏了,下周等前端上班还是要请他来 full build。

一个 TODO:需要有个办法,在文档 merge 之前检查是否能正常 build。

Interlude

跟同事讲我想忙完这波就调休,说成了我要退休

同事:回老家休息一段时间?

我:啊这…(虽然也很想)

Let there be music

开始接触左右手同时弹奏的曲子了,也学了怎么读 F 大调和 G 大调的谱子,一边注意左右手配合,一边把对应的 note 转成降调或者升调,好费脑子。

《小汤》练到 part 2 的 50% 了,学得还是蛮快的。跟美国同事聊到这个,他说他学钢琴的时候(大概 50 年前?)也用的是《小汤》入门,惊了,经典永流传。

三省吾身

和阿毛聊到刚学到的新词「装修朋友圈」,我也不能免俗。最近频繁装修朋友圈,营造一个苦逼打工人的人设,冷静下来想想还是没什么意义。

碰巧在豆瓣上看到一段评论:

别人随口夸我一下,随后走开,过自己的生活,只剩自己陷入被赞赏的倒影不能离开,岂不就是鬼打墙吗?

正是这样啊。


新的纹身,对应如尼文里的 ᛜ (Ingwaz)。纹身贴太适合我这样容易后悔的人了。