如何白嫖Github定时任务功能

44 阅读3分钟

发现了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点时排在任务队列,等待执行。

所以比较适用对时间要求不那么严格的任务!!!!!!