定时触发name: "天气预报"on:push:schedule:# 需要减 8 个小时- cron: "0 23 * * *"
这里比较好理解,name
是名称,on
是触发的时机,push
是我们提交代码到 Github 时触发,schedule
是定时触发 , 需要注意的时候,定时触发的时间需要减掉 8 个小时,其遵循国际标准时间而不是北京时间 。
运行流程runs-on: ubuntu-lateststeps:- name: "切换代码"uses: actions/checkout@v3
进入到 jobs
运行流程中,runs-on
指定运行环境是最新的 Ubuntu 即可,actions/checkout@v3
用作从代码仓库获取代码 。
获取时间- name: "获取时间"run: echo "WEATHER_REPORT_DATE=$(TZ=':Asia/Shanghai' date '+%Y-%m-%d %T')" >> $GITHUB_ENV
直接通过 Linux 命令获取当前时间 , 然后转换成北京时间,这个时间主要是用于后续写入到邮件的标题当中 。
在这里,通过 echo "{environment_variable_name}={value}" >> $GITHUB_ENV
的方式写入环境变量 , 在后续的步骤中都可以访问到这个环境变量 。
执行脚本- uses: actions/setup-python@v4with:python-version: "3.10"- run: pip install -r requirements.txt- name: "获取天气结果"run: 'echo "$(python open_api/weather.py 广州 桂林)" > output.txt'
这里有两个步骤 , 一个是指定 Python 的运行环境并且安装好相关的依赖,第二个是执行 Python 的脚本获取结果 。
在这里 , 为了方便将脚本的执行结果给到后续的步骤,选择将执行结果写入到一个文件当中 。当然,选择怎样的方式主要看自己 。
发送邮件- name: "发送邮件"uses: dawidd6/action-send-mail@v3with:server_address: smtp.qq.comserver_port: 465username: ${{ secrets.SENDER_USER }}password: ${{ secrets.SENDER_PASSWORD }}subject: 天气预报 - ${{env.WEATHER_REPORT_DATE}}from: GitHub Actionsto: fatedeity@qq.combody: file://output.txt
按照阮一峰的脚本,使用 Send email · Actions 发送邮件,和其不同的就是相关的配置 。
当然 , 也可以通过将发送邮件直接写入到 Python 脚本当中,它们各有自己的优势 。
使用 GIthub Action 发送邮件更易懂,只需要填写配置即可 , 也可以将脚本和发送邮件解耦 。
使用 Python 发送邮件可以省下 Github Action 的步骤,直接通过脚本一步到位 , 耦合就比较高 。
总结通过这一次的尝试 , 使用 Github Action 实现了自动化及定时,也是为以后实现自己的自动化做铺垫 。本篇文章的源码可以通过 GitHub - fatedeity/weather-action 访问 。
生命在于折腾 , 看似无用的一次尝试,希望能给自己带来美好的未来 。
推荐阅读
- Mysql通过Canal同步Elasticsearch
- 通过netty把百度地图API获取的地理位置从Android端发送到Java服务器端
- Flink WordCount入门
- 如何实现通过Leaflet加载dwg格式的CAD图
- 通过QQ抓IP查询地址
- 通过openlayers加载dwg格式的CAD图并与互联网地图叠加
- ubuntu-22.04 树莓派Zero 2 W通过.NET6和libusb操作USB读写
- steam如何通过好友码加好友(steam怎么看好友愿望单)
- 手机网络怎么连接上电视(手机通过type-c连接电视)
- GitHub 供应链安全已支持 Dart 开发者生态