配置一个 Github Actions 定时任务

452 阅读2分钟

前言

项目中,偶尔会需要用到工作日和休假相关的数据信息。而这个数据是根据国家发布的信息来确定的,每年都不一样。

故想写个脚本,生成来年的节假日信息。

然而,想要长期执行,需要有个稳定的服务来维持。

服务器成本较高,本地不稳定。

于是想到了Github Actions

生成数据

获取国务院文件

传送门

指定搜索日期和相关条件,可以搜索到国务院发布的通知。

按照惯例,一般文件会在10月份以后发布,我们可以设置脚本在10月份以后再去抓取相关文章。

image.png

分析文件内容

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

Dingtalk_20220719100036.jpg

编写解析脚本

  • 动态调整时间范围,获取文章列表
  • 抓取文章详情
  • 解析文章详情
  • 生成日期文件

配置定时脚本

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

Dingtalk_20220719100903.jpg

image.png

编写文件

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

Dingtalk_20220719101328.jpg

拓展提交到git仓库

由于需要生成保存日期文件,那么提交到仓库是比较好的一个选择。

在右侧的Marketplace中找到了actions-go/push组件。

Dingtalk_20220719102006.jpg

保存查看执行

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

下面是脚本的执行情况:

Dingtalk_20220719102407.jpg

Dingtalk_20220719102457.jpg

最后

快去玩耍吧,你值得拥有。