可能是我之前 star 过几个 GitHub Profile 项目,现在我 GitHub 首页右侧推荐总是时不时有类似的 Repo 出现。

有一类 Profile 比较特殊,它们有社区互动模块,比如:

受之启发,我也花 mo 了 yu 半天时间撸了一个五子棋游戏放在我的 Profile 中。现在棋盘只有 9×9,高手对决可能无法分胜负,但已经留了空间能灵活改变。

image-20201119105305918

简单说下这些带互动部分的 Profile 的实现原理吧。其实都是依靠强大的 GitHub Actions。

  1. 用户点击棋盘上的空白,提交一个 issue,包含预设的标题、内容和 label,这些信息全都能放在一个 URL 里,非常方便。
  2. Issue 提交后,会触发一个 GitHub Action,运行脚本,读取 Issue 的标题,取出要进行的动作,改变棋盘。这个 action 的触发器是这样的:

    on:
     issues:
       types: [opened]
    
    jobs:
     move:
       runs-on: ubuntu-latest
       if: startsWith(github.event.issue.title, 'gomoku|')
  3. 将此动作的元数据和游戏统计信息写到 Repo 中,重新生成 README,提交、push。Push 信息中带上Close #<issue_num>把 Issue 关掉。

总得来说 GitHub Actions 还是挺好玩的,自从这个功能开放以来,各种骚操作层出不穷。特别是 Travis CI 开始掉链子,大家纷纷转向 GitHub Actions。怎样,来我主页下个棋吧?