GitHub Actions 教程:定时发送天气邮件
2019年11月,GitHub 正式开放了 GitHub Actions 这个功能,现在不用申请就能使用。
GitHub Actions 是一个 CI/CD(持续集成/持续部署)工具,但也可用作代码运行环境。功能非常强大,能够玩出许多花样。
我写的《GitHub Actions 入门教程》 已经介绍了它的基本用法。本文紧接前一篇教程,给出一个简单实用的例子:每天定时运行一次脚本,获取天气预报,然后发送电子邮件。
完整代码可以从 GitHub 仓库 ruanyf/weather-action 获取。
第一步:获取天气预报
网站 wttr.in 支持命令行请求天气预报。
$ curl wttr.in
上面的命令会返回,你的 IP 地址所在位置的天气。
它还允许 URL 里面指定城市。
$ curl wttr.in/Shanghai
返回的数据可以通过curl命令的-o参数,保存成文件,以便后面发送。
$ curl -o result.html wttr.in/Shanghai
wttr. in 允许定制天气预报的格式和内容,详见它的文档,这里就不展开了。最后封装好的脚本weather.sh,完整代码看这里。
第二步:发送邮件
拿到天气预报以后,只要放在邮件里面,发出去就可以了。
我用的是网易 163 邮件的免费发送服务,需要在它的网站上开通,本地的配置请看下一步。
第三步:配置 GitHub Actions
触发 GitHub Actions 需要在项目仓库新建一个.github/workflows子目录,里面是 YAML 格式配置文件,文件名可以随便取。GitHub 只要发现配置文件,就会运行 Actions。
配置文件的第一部分是触发条件。
name: 'GitHub Actions Weather Bot' on: push: schedule: - cron: '0 21 * * *'
上面代码中,name字段是配置文件的描述,on字段是触发条件。我们指定两种情况下触发,第一种是代码 Push 进仓库,第二种是定时任务,每天在国际标准时间21点(北京时间早上5点)运行。
接着,就是运行流程。
runs-on: ubuntu-latest steps: - name: 'Checkout codes' uses: actions/checkout@v1
上面代码中,运行环境指定为最新版的 Ubuntu。流程的第一步是从代码仓库获取代码。
拿到代码以后,就可以获取天气预报了。
- name: 'Get weather report' run: bash ./weather.sh
上面代码中,run字段就是所要运行的命令。
最后,发送邮件。
- name: 'Send mail' uses: dawidd6/action-send-mail@master with: serveraddress: smtp.163.com serverport: 465 username: ${{ secrets.MAILUSERNAME }} password: ${{ secrets.MAILPASSWORD }} subject: Shanghai Weather Report body: file://result.html to: yifeng.ruan@gmail.com from: GitHub Actions content_type: text/html
上面代码中,发送邮件使用的是一个已经写好的 action,只要配几个参数就可以用。参数之中,邮件 SMTP 服务器的用户名和密码,使用的是加密变量,需要在项目的settings/secrets菜单里面设置。
完整的配置文件看这里。更具体的语法解释可以参考《GitHub Actions 入门教程》。
写好配置,推送到仓库以后,就可以每天清早收到一封天气预报邮件了。在这个基础上不难扩展,可以定时执行各种脚本(比如每5分钟检查一次某个网站是否在线),然后将结果发到指定的渠道,这里就有一个发到社交媒体 Telegram 的例子。
本站声明:网站内容来源于网络,如有侵权,请联系我们https://www.qiquanji.com,我们将及时处理。
微信扫码关注
更新实时通知