专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

GitHub Actions 的 Go 语言示例

GitHub的新个人资料页面README功能为开发人员Internet的Myspace页面带来了一些个性。

尽管Markdown最适合标准静态文本内容,但这并不能阻止有创造力的人们创建下一个自述文件。您可以包括GIF和图像来添加一些动态内容(它们在GitHub Flavor Markdown中已介绍

由于自述文件位于GitHub个人资料的中心位置,因此它是一个很好的机会,可以让人们知道您的意思,发现的重要内容并展示您的工作重点。

您可能想炫耀最新的存储库,tweet或博客文章。借助GitHub Actions之类的持续交付工具,保持最新状态也不是一件容易的事。

我当前的自述文件每天都会刷新自己,并提供指向我最新博客文章的链接。这是我README.md使用Go和GitHub操作构建自我更新的方式。

使用Go读写文件

要创建README.md,我将从现有文件中获取一些静态内容,将其与我们将通过Go生成的一些新动态内容融合在一起,然后就会出现很棒的内容。

这是我们读取名为static.md并以string表格形式放置的文件的方式:


content, err := ioutil.ReadFile("static.md") if err != nil { log.Fatalf("cannot read file: %v", err) return err } stringyContent := string(content)

动态内容的可能性仅受您的想象力限制!在这里,我将使用该软件包从我的博客中阅读RSS提要并获取最新的帖子。github.com/mmcdole/gofeed

fp := gofeed.NewParser()
feed, err := fp.ParseURL("https://victoria.dev/index.xml")
if err != nil {
    log.Fatalf("error getting feed: %v", err)
}

rssItem := feed.Items[0]

为了将这些连接在一起并产生严格的效果,我们用于fmt.Sprintf()创建格式化的字符串。


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()以确保自述文件被写入。


file, err := os.Create("README.md") if err != nil { return err } defer file.Close() _, 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 * * *'

要运行用于重建自述文件的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工作流的完整代码。

继续并自动更新您的自述文件

www.freecodecamp.org/news/go-aut…

文章永久链接:https://tech.souyunku.com/45520

未经允许不得转载:搜云库技术团队 » GitHub Actions 的 Go 语言示例

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们