GitHub Action 定时任务执行时区处理

前言

GitHub Actions是一个用于持续集成和持续交付的平台,可自动执行生成、测试和部署流程。通过创建工作流程,您可以对每个拉取请求进行构建和测试,或将合并的请求部署到生产环境。

此外,GitHub Actions不仅仅适用于DevOps,还可在存储库发生其他事件时触发工作流程。例如,当有人在您的存储库中创建新问题时,您可以自动添加相应的标签。

GitHub提供了Linux、Windows和macOS虚拟机来运行工作流程,同时还支持自托管运行器,可以在您自己的数据中心或云基础架构中进行托管。

Github Actions 是很好用的工具,博主鳄鱼儿也写过几篇 Github Actions 文章。

定时任务------schedule

Github Actions 是可以执行定时任务,并且每月有免费额度,对于每日重复任务有奇妙之处,各位程序猿,想必都懂。

Github Actions 核心的能力在于触发工作流里的事件,schedule 这种类型可以定时执行任务事件。

yml 复制代码
name: Schedule Worker
on:
  schedule:
    - cron: '10 0,10 * * *' #每日8:10,18:10,两个时间点执行任务,注意时区,不可更改
jobs:
  work:
    runs-on: ubuntu-latest
    steps:
      - name: set beijing timezone
        uses: szenius/set-timezone@v1.2 # 设置虚拟环境的时区,可更改时区
        with:
          timezoneLinux: "Asia/Shanghai"
      - uses: actions/checkout@v3
      - name: Set up Python 3.9 # 使用python装配器
        uses: actions/setup-python@v2
        with:
          python-version: 3.9
      - name: requirements # 安装
        run: |
          python -m pip install --upgrade pip
          pip3 install -r requirements.txt
      - run: |
          python3 ./main.py # 执行

特别注意:

  1. 因为 Github 是国际网站,默认时区是 UTC 时间(协调世界时间),大致时间是冰岛和英国的时区。UTC 比北京时间慢 8 小时,用目标时间减 8 就可以了。
  2. schedule 延迟问题:GitHub 的官方文档明确写了,schedule 是无法保证准时执行的。

冷知识

UTC(Coodinated Universal Time),协调世界时,又称世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称 UTC。

UTC 是现在全球通用的时间标准,全球各地都同意将各自的时间进行同步协调。UTC 时间是经过平均太阳时(以格林威治时间 GMT 为准)、地轴运动修正后的新时标以及以秒为单位的国际原子时所综合精算而成。

在军事中,协调世界时会使用"Z"来表示。又由于Z在无线电联络中使用"Zulu"作代称,协调世界时也会被称为"Zulu time"。

虚拟环境的时区设置

cron 字段的时区是无法更改的,但虚拟环境的时区,是能修改的。

set-timezone 是一个可以设置环境时区的 action。

set-timezone: github.com/szenius/set...

yml 复制代码
uses: szenius/set-timezone@v1.2
with:
  timezoneLinux: "Asia/Singapore"
  timezoneMacos: "Asia/Singapore"
  timezoneWindows: "Singapore Standard Time"

相关文档

相关推荐
张彦峰ZYF5 分钟前
功能齐了不等于能上线:智能工单系统的AI回归测试、安全防护、成本可观测与CI/CD生产部署
后端·企业智能工单系统·评测线·安全线·成本线·部署线
Rain的Java大神之路8 分钟前
LeetCode 37 解数独面试攻略:回溯 + 位掩码 + MRV,从暴力到毫秒级求解
java·后端·leetcode
量化分析码农21 分钟前
【Python量化波动率实战 05】你的组合真的分散了吗:滚动相关与分散化收益
后端
IT_陈寒1 小时前
Vue这个奇葩的响应式问题让我加班到凌晨
前端·人工智能·后端
脚本自动化开发8 小时前
存储涨价后,磐镭WO5迷你主机值得买吗
后端
一只爱撸猫的程序猿10 小时前
我看着一个 AI 引擎在 14 天里,从"记忆"走进了"搜索"
人工智能·后端·架构
陈随易13 小时前
纯 Go 写的 JS 引擎,跑分超过了 C 语言的 QuickJS
前端·后端·程序员
卷无止境14 小时前
RAGFlow 项目全景报告:从文档解析引擎到 Agent 原生数据库
后端·python
小Z先生14 小时前
我用 Go + 系统 WebView 写了个纯本地 Postman:不装 Electron、不连云端
后端·github
IT_陈寒15 小时前
Redis连接池泄漏那次,我差点把生产环境搞崩了
前端·人工智能·后端