之前逛github的时候经常看到别人的首页内容是丰富多彩的,而自己的首页空荡荡的,研究了一番,很多内容是利用Github Actions自动填充的,趁此研究下Github Actions的使用。
首页显示自定义内容
首先创建一个与github账号同名的仓库,在README.md
里填入你想要展示的内容即可。这里有人收集了个列表,专门用于美化首页的,可以根据自己的需求选取。这里是github-profile
这个topic下相关的repo,内容非常丰富。
装扮我的首页
- 简单的介绍,直接写
- 简单的github信息统计
- 最新博客更新
前两个都比较简单,最后一个由于博客生成是使用的github Discussions生成的,所以在试用了几个开源的都无法正常解析博客生气的RSS文件,只好自己来造个轮子了。在Github Markplace里找了一圈发现一个 然后根据使用说明,把自己的rss地址填上了,结果还是不能生成。拉下代码一看,人家直接把自己的博客feed写死了。这个不能等着人家来提供支持了,只能自己进行修改了,看了下代码也不复杂,根据feed的url拉取数据,然后解析,拼接起来写入README中,提交即可。
看到有人提Issues问能不能提供支持其他Feed源,我就找了下开源库,很多都是支持不同订阅源解析的,顺便换了解析逻辑。代码逻辑很快就写完了,剩下的就是测试,没太搞清楚Github Actions是如何自测的。
期间也找了下其他使用Go写的Actions是如何动作的,有的是利用Docker,有的是利用CI功能提前编译好。我这里是利用Docker的方式。
这里要注意的是传参数,看个示例:
name: "Update readme with rss Actions"
description: "Fetch latest blog posts and add it to GitHub profile's readme dynamically. Support multiple rss format."
author: "armingli"
inputs:
rss_list:
description: "RSS feed url"
default: ""
required: true
readme_path:
description: "Path of readme file"
default: "./README.md"
required: false
max_post:
description: "Max number of posts"
default: "5"
required: false
runs:
using: "docker"
image: "Dockerfile"
branding:
icon: 'file-text'
color: 'red'
这是作为一个Action的声明,这里主要关注下inputs
,当你要在你的程序中获取下面的参数是,例如在Go中获取rss_list
,是这样的os.Getenv("INPUT_RSS_LIST")
。如果参数是非必需的,要处理好默认值。
内容修改好了,然后就是提交、推送到仓库就会显示在首页上了。这里推送有两种方式实现。
- 在程序中自己调用git的命令进行提交、推送。
- 在workflow中配置提交、推送的相关逻辑,这里又有两种方式
- 自己写git的命令
- name: Commit and push run: | git config --local user.name "GitHub Actions" git config --local user.email "action@github.com" git add . git commit -m "profile updated" || true git push origin main
- 使用现成的Action
- uses: ad-m/github-push-action
- 自己写git的命令
在推送时一直报下面的这个问题:
remote permission to xxx.xxx denied to github-actions bot
查了一圈发现是当前的仓库没有给workflow开写权限。路径是settings/actions
找到general下的workflow权限 ,如下图
Github Actions操作对象仓库,在哪个仓库使用就在对应仓库下创建.github/workflows/*.yml
文件。
到此,一个个性化的首页就完成了。
另外,说明一下如何更新到README中的,提前在README文件中写入不可见标签,然后进行替换。
# Blog posts
<!-- BLOG-POST-LIST:START -->
<!-- BLOG-POST-LIST:END -->