玩了一下 Github 个人首页的 Profile (使用 Action 自动更新)

Github 最近推出了一个 Profile 功能,大体上就是用户层面的 Readme。如果你新建一个和你的用户名一样名字的仓库,这个仓库的 Readme 就会展示在你的个人主页上。

虽然仅仅是一 Markdown 形式的 Readme,但是可玩性也很多了。

比如有一个服务,将这个服务 URL 的参数改成用户名,就可以用一个图片显示个人的开源贡献信息等,原理和项目上的 badge 差不多。

还有展示自己的睡眠数据的:

还有展示年度进度的:

还有在主页交换链接的,并且把这些链接做成了很漂亮的卡片:

 

我一直很喜欢看维基百科的 Picture of the Day,甚至有一段时间写周报的时候,每周都会贴一张 Picture of the Day 的图片在周报的末尾。一个原因是这些图片都非常精美,是由一个小组挑选出来的,普通用户也可以贡献,你可以发现这个世界上还有这么漂亮的地方。另一个原因是阅读维基百科可以学到知识。

 

2020-01-02 的 POTD

所以我就做了一个每天更新 Picture of the Day 的 Github Profile。基本的原理就是使用 Github 的 Action 功能,每天跑一个脚本,去维基百科查到今天的 Picture 地址,然后更新 Readme 中 Picture  的 URL,这个 Readme 就会展示在我的首页上。

实现非常简单,所有的东西都在这个仓库里面。如果你想制作定时更新的 Profile, 可以参考一下这些脚本:https://github.com/laixintao/laixintao

有几个可以少走的弯路,分享一下:

  1. 让 Action 的机器人 push commit 是一个比较 tricky 的事情,好在可以直接用别人写好的 Action,这就是 Github Action 的设计精妙之处吧。像 checkout, setup-python 这种东西,都有现成的 Action 了,不同的用户之间可以组合 Action 实现自己的 CI。git push 使用的 Action 是这个:https://github.com/ad-m/github-push-action 使用方法可以参考这里,可以说非常简单,甚至 Github 的 Action 运行的时候默认就会设置环境变量 secrets.GITHUB_TOKEN,连你手动给机器人设置 Write 权限的 Token 都省去了。
  2. 使用 Action 更新 commit 是一种方法,应该也是简单的方法。一开始我是想用 clock.sh ,不需要 clone 下来仓库,直接使用 Github 的 API 去创建 block,然后创建 tree 和 commit,但是这样操作太复杂了,就放弃了。有想法的用户可以研究一下 Github 的这套 API
  3. 放弃了 clock.sh 的代价就是…… Github Action 的 schedule 功能感觉有 bug. 如果 workflow.yml 写的有问题,Github 不会告诉你哪里有问题,直接就不会运行,对于调试来说还是挺不方便的;使用 schedule 会有一些坑。比如一你开始写了一个 crontab 15 * * * * ,调来调去最后发现无论如何改都生效不了了。而且 Github 这边就是不运行,没有调试方法。比较直接的方法就是直接将 workflow 换一个名字,push 过去,这样相当于在 Github 那边新建了一个 workflow,重新 schedule. 所以遇到此类问题不要怀疑是不是你的 crontab 写错了,直接换一个 filename 吧。
  4. schedule 功能最短的运行时间是 5min 1次,所以写 * * * * * 是没有意义的;

最后,我发现维基百科有时候会更新出来很恶心的图片,比如今天的…… (恶心,慎点 https://en.wikipedia.org/wiki/Template:POTD/2020-10-08 )

玩了一下 Github 个人首页的 Profile (使用 Action 自动更新)”已经有9条评论

  1. 我schedule里定义的任务时间为每天凌晨1点,但根据log看下来实际执行是在9点。难道crontab的时间要考虑时区影响吗?

Leave a comment

电子邮件地址不会被公开。 必填项已用*标注