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

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

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

image-20201119105305918

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

  1. 用户点击棋盘上的空白,提交一个issue,包含预设的标题、内容和label,这些信息全都能放在一个URL里,非常方便。

  2. Issue提交后,会触发一个GitHub Action,运行脚本,读取Issue的标题,取出要进行的动作,改变棋盘。这个action的触发器是这样的:

    YAML
    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。怎样,来我主页下个棋吧?