前言
项目中,偶尔会需要用到工作日和休假相关的数据信息。而这个数据是根据国家发布的信息来确定的,每年都不一样。
故想写个脚本,生成来年的节假日信息。
然而,想要长期执行,需要有个稳定的服务来维持。
服务器成本较高,本地不稳定。
于是想到了Github Actions。
生成数据
获取国务院文件
指定搜索日期和相关条件,可以搜索到国务院发布的通知。
按照惯例,一般文件会在10月份以后发布,我们可以设置脚本在10月份以后再去抓取相关文章。

分析文件内容
根据文件分析,内容中的关键词有放假、至、*月*日、*日。

编写解析脚本
- 动态调整时间范围,获取文章列表
- 抓取文章详情
- 解析文章详情
- 生成日期文件
配置定时脚本
yml文件如下:
name: Script
on:
schedule:
- cron: '0 12 * * *'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: 1.18
- name: 'Gen New Year Calendar'
run: go run calendar/calendar.go
- name: 'Show Diff'
run: git add .
- name: 'Push Calendar'
uses: actions-go/push@7ad7ce209f2a038e7bca929b7a4c92026363f856
with:
commit-message: "new calendar"
remote: origin
创建Actions
项目 -> Actions -> New workflow -> set up a workflow yourself


编写文件
由于本身只需要定时执行,于是on设置的只有定时

拓展提交到git仓库
由于需要生成保存日期文件,那么提交到仓库是比较好的一个选择。
在右侧的Marketplace中找到了actions-go/push组件。

保存查看执行
由于设定的是每天12点执行(PS:这里的12点不是东八区的时区),所以想要立马看到效果,可以设置每5分钟执行一次(这是Action的限制,最少5分钟一次),或者设置触发机制为push,手动触发执行。
下面是脚本的执行情况:


最后
快去玩耍吧,你值得拥有。
本文介绍了如何利用GithubActions编写脚本,定时从国务院网站抓取最新的节假日信息,并将其提交到Git仓库。通过配置cron表达式,脚本将在每年10月后自动运行,解析文件内容,提取关键日期,生成文件并进行版本控制。这是一个低成本且稳定的自动化解决方案。
526

被折叠的 条评论
为什么被折叠?



