自动化你的 GitHub 个人资料 README
GitHub 个人资料页面新增的 README 功能,为开发者们的 Myspace 页面增添了不少个性,效果显著。虽然 Markdown 最适合处理标准的静态文本内容,但这并没有阻止创意人士创建更高级的 README。你可以添加 GIF 和图片来增添动感和活力(GitHub Flavor Markdown中有介绍),但我正在考虑一些更动态的格式。
在你的 GitHub 个人资料的醒目位置,README 是一个绝佳的机会,可以让人们了解你的工作内容、你认为重要的内容,并展示你工作中的一些亮点。你或许想展示你最新的仓库、推文或博客文章。借助 GitHub Actions 等持续交付工具,保持更新也不再是一件难事。
README.md
我当前的 README 文件每天都会自动更新,并包含指向我最新博客文章的链接。以下是我使用 Go 和 GitHub Actions创建自动更新的方法。
使用 Go 读写文件
最近我用 Python 写了很多代码,但有些东西我特别喜欢用 Go。可以说,它是我做项目的首选语言func
。抱歉,我实在控制不住自己。
为了创建我的 README.md,我将从现有文件中获取一些静态内容,将其与我们将使用 Go 生成的一些新动态内容混合在一起,然后在 400 度下烘烤整个内容,直到出现一些很棒的东西。
以下是我们如何读取名为 的文件static.md
并将其放入string
表单中:
// Unwrap Markdown content
content, err := ioutil.ReadFile("static.md")
if err != nil {
log.Fatalf("cannot read file: %v", err)
return err
}
// Make it a string
stringyContent := string(content)
动态内容的可能性仅受您的想象力限制!在这里,我将使用该github.com/mmcdole/gofeed
包从我的博客读取 RSS 提要并获取最新帖子。
fp := gofeed.NewParser()
feed, err := fp.ParseURL("https://victoria.dev/index.xml")
if err != nil {
log.Fatalf("error getting feed: %v", err)
}
// Get the freshest item
rssItem := feed.Items[0]
为了将这些位连接在一起并产生字符串优点,我们使用fmt.Sprintf()
来创建格式化的字符串。
// Whisk together static and dynamic content until stiff peaks form
blog := "Read my latest blog post: **[" + rssItem.Title + "](" + rssItem.Link + ")**"
data := fmt.Sprintf("%s\n%s\n", stringyContent, blog)
然后,为了从这个混合中创建一个新文件,我们使用os.Create()
。关于延迟 还有很多需要了解的事情file.Close()
,但我们不需要在这里深入讨论。我们将添加 ,file.Sync()
以确保我们的 README 能够被写入。
// Prepare file with a light coating of os
file, err := os.Create("README.md")
if err != nil {
return err
}
defer file.Close()
// Bake at n bytes per second until golden brown
_, err = io.WriteString(file, data)
if err != nil {
return err
}
return file.Sync()
在我的 README 存储库中查看完整代码。
嗯,是不是感觉很棒?🍪 让我们通过 GitHub Action 每天实现这个目标。
使用 Actions 按计划运行 Go 程序
您可以创建一个 GitHub Action 工作流,该工作流既可以在分支推送时触发,master
也可以按每日计划触发。以下是.github/workflows/update.yaml
定义该工作流的部分代码:
on:
push:
branches:
- master
schedule:
- cron: '0 11 * * *'
要运行重建 README 文件的 Go 程序,我们首先需要一份文件副本。我们使用actions/checkout
以下命令:
steps:
- name: 🍽️ Get working copy
uses: actions/checkout@master
with:
fetch-depth: 1
这一步运行我们的 Go 程序:
- name: 🍳 Shake & bake README
run: |
cd ${GITHUB_WORKSPACE}/update/
go run main.go
最后,我们将更新后的文件推送回存储库。详细了解变量,请参阅在工作流中使用变量和密钥。
- name: 🚀 Deploy
run: |
git config user.name "${GITHUB_ACTOR}"
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
git add .
git commit -am "Update dynamic content"
git push --all -f https://${{ secrets.GITHUB_TOKEN }}@github.com/${GITHUB_REPOSITORY}.git
在我的 README 存储库中查看此 Action 工作流的完整代码。
继续并自动更新您的 README
恭喜,欢迎加入酷小子俱乐部!现在你已经知道如何创建自动更新的 GitHub 个人资料 README 文件了。现在你可以继续往你的页面添加各种简洁的动态元素了——不过 GIF 可别太用力,好吗?
鏂囩珷鏉ユ簮锛�https://dev.to/victoria/go-automate-your-github-profile-readme-2344