当前位置: 首页 > 知识库问答 >
问题:

为什么Github操作工作流安排在cron未在正确的时间触发的情况下?

秦英发
2023-03-14

我有一个Github操作工作流,每小时、每小时触发一次。

当工作流运行时,它不会在计划的时间运行,即它不会在整点运行。延迟时间可能超过30分钟。我不知道这是为什么。

它不是工作流本身,因为当我在大约30秒内手动运行它时,它会执行。

有人能告诉我是什么原因造成了延误吗?

这是一个时区问题吗?即使如此,在两次连续的工作流运行之间也应该有一个固定的1小时间隔,但事实并非如此。

这是代码

# This is a basic workflow to help you get started with Actions

name: Email every hour

# Controls when the action will run. 
on:
  # Triggers the workflow on push or pull request events but only for the main branch
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]
  schedule:
    - cron: "0 */1 * * *"

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: [3.8]

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v2

      # Set up Python environment
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v2
        with:
          python-version: ${{ matrix.python-version }}

      # Install dependencies
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
          
      # Run script to send email
      - name: Run script
        run: python emailer.py
        env:
          EMAIL_USER: ${{ secrets.EMAIL_USER }}
          EMAIL_PASSWORD: ${{ secrets.EMAIL_PASSWORD }}
          TO_EMAIL: ${{ secrets.TO_EMAIL }} 

Github回购

共有2个答案

郎宏浚
2023-03-14

github操作上的cron作业根据UTC时间触发。另一方面,延迟可能只是服务器端的问题。

孟和怡
2023-03-14

当您设置一个带有时间表的GitHub操作工作流时,比如说每10分钟一次,您实际上是在请求GitHub为您安排该工作流。不能保证工作流每10分钟运行一次。

在GitHub支持社区的一次讨论中(对计划的作业没有保证?),Github partner@brightran多次表示,触发预定工作流时可能会出现延迟:

一般延迟时间在3到10分钟左右。有时候,可能更多,甚至几十分钟,或者一个多小时。

他还说,如果延迟时间太长,预定的工作流程可能不会在当天触发。因此,对于需要执行保证的生产任务,不建议使用GitHub操作计划工作流。

来源

 类似资料:
  • 我正在为项目存储库设置Github操作。 工作流程包括以下步骤: 构建docker形象 将图像推送到容器注册表中 推出Kubernetes部署 然而,我有两种不同的Kubernetes部署:一种用于开发,另一种用于生产。因此,我还有两个Github操作工作流。 每次推送提交时,都会触发Github开发操作工作流: 但我不希望在我的生产工作流程中出现这种情况。我需要一个手动触发器,比如“发送到生产”

  • 如果Cadence集群关闭而工作流应该已经启动,CronWorkflow的行为是什么?当集群回来时,我们会期望工作流仍然启动吗?

  • 问题内容: 我在Ubuntu Hardy VPS上做了一份计划工作,只有一半可以工作,我不知道为什么。这项工作是一个Ruby脚本,它使用mysqldump备份Rails应用程序使用的MySQL数据库,然后将其压缩并使用SFTP上传到远程服务器。 gzip文件已成功创建并复制,但始终为零字节。但是,如果我直接从命令行运行cron命令,它将运行完美。 这是cron工作: 这是datadump.rb:

  • 我正试图通过遵循本教程,使用GitHub操作构建docker映像并将其推送到Amazon ECR 我正在尝试为此repo设置GitHub操作,因此我在<代码>中创建了一个新的工作流。github/workflows目录。 DockerFile已成功创建并生成。 现在,在创建

  • 问题内容: “现代” 守护程序如何在 内部 安排作业?有些人经常通过来安排一次跑步。因此,在写出crontab之后,会执行以下操作: 解析crontab以了解所有将来的事件,并hibernate间隔时间? 每分钟轮询一次汇总的crontab数据库,以确定当前时间是否与计划模式匹配? 其他? 谢谢, 问题答案: 在这个问题上听到了几声。不错的RTFC,其中包含一些离散事件模拟论文和Wikipedia

  • 主要问题: 我试图在网页上打印错误,如果连接到MySQL服务器不做。为此,我写了一个错误的库名