这是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文件中的天气。