创建动态readme.md文件
#devops #go #cicd #git

Image description

这是my Github Profile。这里的具体方法是每6小时自动更新天气。

在本文中,我将带您完成我的工作!
让我们开始!

1.什么是github动作

github操作是连续集成和连续交付(CI/CD)平台,可自动化构建,测试和部署管道。它类似于Gitlab CI。在此项目中,我正在使用github操作来自动更新readme.md文件中的天气。

2. GitHub动作工作流触发器

工作流触发器是导致工作流程运行的事件。这些事件可以是:

  • 您工作流的存储库中发生的事件,例如:
    • PUSH
    • 拉请求
    • 计划时间
    • 手册

在此项目中,我正在使用“计划时间”来触发工作流程“更新天气”。

3.去模板

GO模板是基于预定义模板结构生成文本,HTML或任何其他输出的有力方法。它类似于其他框架中的模板,例如Laravel和模板引擎,例如Pug。

(数据 +模板)=输出

4.将它们结合起来,使自述我最新

  • 实施一项服务来收集天气数据(数据)。
  • 编写一个使用上述数据作为输入的模板。
  • 运行GO模板以组合模板和数据以生成输出。
  • 提交并推动输出更改。
  • 编写一个github操作以间隔运行上述步骤。

只需使用我的github动作

我将上面的四个步骤包裹在github动作中。您可以通过遵循以下简单步骤来轻松使用它:

步骤1:在您的存储库中,创建一个名为README.md.template的文件。

步骤2:README.md.template文件中写下您想要的任何内容。

步骤3:嵌入了README.md.template中的以下实体之一:

  • 今天的天气桌:
{{ template "hourly-table" $todayWeather.HourlyWeathers }}
  • 每日天气表:
{{ template "daily-table" .Weathers }}
  • 更新:
{{ formatTime .UpdatedAt }}

如果您熟悉GO模板,则可以访问root变量,其中包括以下字段:

  • Weathers:一系列每日天气数据。您可以在model/weather.go中查看天气结构定义。
  • UpdatedAt:该字段包含time.Date格式的时间戳。

步骤4 :注册GitHub Action

  • 在您的存储库中创建一个文件.github/workflows/update-weather.yml
name: "Cronjob"
on:
  schedule:
    - cron: '15 * * * *'

jobs:
  update-weather:
    permissions: write-all
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Generate README
        uses: huantt/weather-forecast@v1.0.4
        with:
          city: HaNoi
          days: 7
          weather-api-key: ${{ secrets.WEATHER_API_KEY }}
          template-file: 'README.md.template'
          out-file: 'README.md'
      - name: Commit
        run: |
          git config user.name github-actions
          git config user.email github-actions@github.com
          git add .
          git commit -m "update weather"
          git push origin main
  • 更新此文件中的一些变量:
    • 城市:您想预测天气的城市。
    • 天:预测天数。
    • 模板文件:上述模板文件的路径。例如。 template/README.md.template
    • 外文件:您的readme.md文件名。
    • 天气 - 钥匙:
    • https://weatherapi.com上注册免费的API密钥。
    • Your repo > settings > Secrets and variables > Actions > New repository secret中使用名称为WEATHER_API_KEY的秘密。

步骤5 :提交更改,然后GitHub操作将以指定的cron间隔运行,以更新readme.md文件中的天气。

参考