自动化你的 GitHub 个人资料 README

2025-06-10

自动化你的 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)

Enter fullscreen mode Exit fullscreen mode

动态内容的可能性仅受您的想象力限制!在这里,我将使用该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]

Enter fullscreen mode Exit fullscreen mode

为了将这些位连接在一起并产生字符串优点,我们使用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)

Enter fullscreen mode Exit fullscreen mode

然后,为了从这个混合中创建一个新文件,我们使用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()

Enter fullscreen mode Exit fullscreen mode

在我的 README 存​​储库中查看完整代码

嗯,是不是感觉很棒?🍪 让我们通过 GitHub Action 每天实现这个目标。

使用 Actions 按计划运行 Go 程序

您可以创建一个 GitHub Action 工作流,该工作流既可以在分支推送时触发master也可以按每日计划触发。以下是.github/workflows/update.yaml定义该工作流的部分代码:

on:
  push:
    branches:
      - master
  schedule:
    - cron: '0 11 * * *'

Enter fullscreen mode Exit fullscreen mode

要运行重建 README 文件的 Go 程序,我们首先需要一份文件副本。我们使用actions/checkout以下命令:

steps:
    - name: 🍽️ Get working copy
      uses: actions/checkout@master
      with:
        fetch-depth: 1

Enter fullscreen mode Exit fullscreen mode

这一步运行我们的 Go 程序:

- name: 🍳 Shake & bake README
  run: |
    cd ${GITHUB_WORKSPACE}/update/
    go run main.go

Enter fullscreen mode Exit fullscreen mode

最后,我们将更新后的文件推送回存储库。详细了解变量,请参阅在工作流中使用变量和密钥

- 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

Enter fullscreen mode Exit fullscreen mode

在我的 README 存​​储库中查看此 Action 工作流的完整代码

继续并自动更新您的 README

恭喜,欢迎加入酷小子俱乐部!现在你已经知道如何创建自动更新的 GitHub 个人资料 README 文件了。现在你可以继续往你的页面添加各种简洁的动态元素了——不过 GIF 可别太用力,好吗?

鏂囩珷鏉ユ簮锛�https://dev.to/victoria/go-automate-your-github-profile-readme-2344
PREV
GitHub Codespaces 如何提高生产力并降低门槛
NEXT
Bash 和 shell 扩展:惰性列表制作