发现了github可以白嫖定时任务的功能。
GitHub Actions 是 GitHub 提供的一个持续集成和持续部署(CI/CD)平台,它允许开发者自动化他们的软件开发工作流程。具体来说,GitHub Actions 可以在代码仓库中触发一系列自动化操作,例如构建、测试和部署代码。
在github--》action模块下,可以创建自己的工作流workflow,yaml文件
类似这种:
name: test
on:
schedule:
# 每周五的北京时间上午9点执行,UTC时间是每周五的01:00 (北京时间比UTC时间早8小时)
# * 是通配符,表示任意值
# cron 格式: 分 时 日 月 周
- cron: "0 1 * * 1-5"
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Check out repository code
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: "20" # 指定Node.js的版本
- name: Install dependencies
run: npm install
- name: Run test script
run: node test.js
简单解释下上述代码 这段代码是一个GitHub Actions的工作流程配置文件,用于自动化软件开发中的一些常规任务。GitHub Actions是GitHub提供的CI/CD(持续集成/持续部署)服务。这个特定的工作流程被命名为“test”,并且配置了自动化任务的触发时机和要执行的任务。下面是具体的解释:
-
name: test
:这是工作流程的名称,这里叫做“test”。 -
on
:这个关键字后面跟着的是触发工作流程的条件。-
schedule
:表示这个工作流程是按照计划时间触发的。- cron: "0 1 * * 1-5"
:这里使用了cron语法来设定计划时间。这个表达式的意思是每周一到周五的UTC时间01:00(即北京时间上午9:00,因为北京时间比UTC时间早8小时)执行。cron表达式的格式是“分 时 日 月 周”,所以这里的“0 1 * * 1-5”表示在每个月的每一天的UTC时间01:00分,只要是星期一到星期五,就会触发这个工作流程。
-
-
jobs
:定义了一组作业,这些作业会在工作流程被触发时按顺序执行。-
test
:这是一个作业的ID,代表了一个作业。-
runs-on: ubuntu-latest
:指定作业运行在最新版本的Ubuntu虚拟环境上。 -
steps
:定义了作业中的步骤。-
- name: Check out repository code
:第一个步骤,作用是将代码仓库的代码签出(即复制)到运行作业的虚拟环境中。uses: actions/checkout@v2
:使用了一个叫做actions/checkout
的GitHub Action,@v2
指的是这个Action的版本号。
-
- name: Set up Node.js
:第二个步骤,设置Node.js的环境。-
uses: actions/setup-node@v2
:使用了一个名为actions/setup-node
的GitHub Action来安装Node.js,版本号是v2
。 -
with
:这个关键字后面跟着的是这一步骤的参数。node-version: "20"
:指定使用20版本的Node.js。
-
-
- name: Install dependencies
:第三个步骤,安装项目依赖。run: npm install
:执行npm install
命令,安装定义在package.json
文件中的依赖。
-
- name: Run test script
:第四个步骤,运行测试脚本。run: node test.js
:执行node test.js
命令,这里假定有一个叫做test.js
的脚本文件,这个文件包含了需要运行的测试代码。
-
-
-
总结来说,这个GitHub Actions工作流程在每周一到周五的北京时间上午9:00自动执行,在一个Ubuntu虚拟机上签出代码,设置Node.js环境,安装依赖,然后运行测试脚本。
问题
但是发现他这个定时任务并不准时,😭
比如设定早上9点执行的任务,但是可能到了9点十几分后才执行。
了解后才知道这个时间只是控制github吧任务在9点时排在任务队列,等待执行。
所以比较适用对时间要求不那么严格的任务!!!!!!