You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何借助GitHub Actions自动更新README文件以展示数据集最新日期?

实现README自动展示数据集最后更新日期的方案

很高兴帮你搞定这个需求!其实通过扩展你现有的GitHub Action工作流,就能轻松实现自动更新README里的数据集最后日期,下面是具体步骤:

1. 在README中预留替换标记

首先在你的README.md文件里需要展示日期的位置,加入一段特殊标记,方便后续Action定位并替换内容:

### 数据集最新更新日期
<!-- LAST_UPDATED_DATE:START -->等待自动更新<!-- LAST_UPDATED_DATE:END -->

2. 扩展GitHub Action工作流

在你现有的每日爬取数据的工作流中,添加三个额外步骤:提取日期、更新README、提交推送。

示例工作流代码

假设你的数据集是CSV格式(日期在第一列,逗号分隔),可以这样写:

jobs:
  crawl-and-update:
    runs-on: ubuntu-latest
    steps:
      # 这里是你原来的爬取、处理数据的步骤,比如 checkout 代码、爬取数据等
      - name: Checkout code
        uses: actions/checkout@v4

      - name: 爬取并处理数据
        run: |
          # 你的爬取脚本命令,比如 python crawl_data.py

      # 新增步骤1:提取数据集最后一行的日期
      - name: 提取最新数据集日期
        id: get_last_date
        run: |
          # 根据你的数据集格式调整命令,这里以CSV为例
          # 取最后一行,按逗号分割后取第一列(假设日期是第一列)
          LAST_DATE=$(tail -n 1 ./path/to/your/dataset.csv | cut -d ',' -f 1)
          # 将日期存入Action输出变量,供后续步骤使用
          echo "last_date=$LAST_DATE" >> $GITHUB_OUTPUT

      # 新增步骤2:更新README中的日期
      - name: 更新README内容
        uses: actions/github-script@v6
        with:
          script: |
            const fs = require('fs');
            const readmePath = './README.md';
            // 读取当前README内容
            const content = fs.readFileSync(readmePath, 'utf8');
            // 替换标记间的内容为最新日期
            const updatedContent = content.replace(
              /<!-- LAST_UPDATED_DATE:START -->(.*?)<!-- LAST_UPDATED_DATE:END -->/s,
              `<!-- LAST_UPDATED_DATE:START -->${{ steps.get_last_date.outputs.last_date }}<!-- LAST_UPDATED_DATE:END -->`
            );
            // 写入更新后的内容
            fs.writeFileSync(readmePath, updatedContent);

      # 新增步骤3:提交并推送更新
      - name: 提交README更新
        run: |
          git config --global user.name 'GitHub Action Bot'
          git config --global user.email 'action@github.com'
          git add README.md
          git commit -m "Auto-update dataset last date to ${{ steps.get_last_date.outputs.last_date }}"
          git push

3. 适配不同数据集格式

如果你的数据集不是CSV,比如JSON、Excel等,只需要调整提取日期的命令即可:

  • 若是JSON文件:可以用jq工具,比如jq -r '.[-1].date' ./data.json(假设最后一个元素的date字段是目标日期)
  • 若是Excel文件:可以用pandas脚本读取最后一行的日期,比如写个简单的Python脚本输出日期

Permalink是指向文件特定版本的链接,适合展示固定版本的内容,但没法动态更新当前README的显示内容。而上面的方案是直接修改README文件并提交,能保证访客看到的永远是最新的数据集日期,更符合你的需求。

内容的提问来源于stack exchange,提问作者KowComical

火山引擎 最新活动