GitHub 操作工作流计划不适用于非默认分支

Posted

技术标签:

【中文标题】GitHub 操作工作流计划不适用于非默认分支【英文标题】:GitHub action workflow schedule not working on non-default branch 【发布时间】:2020-12-05 17:52:47 【问题描述】:

我正在尝试在名为 workflow-test 的分支上设置工作流。它必须按计划运行,每 24 小时运行一次。此工作流必须运行 python 脚本并提交和推送 python 脚本所做的更改。我让它在推送上工作,但它似乎没有按计划工作。我查看了有关此主题的所有问题并尝试了所有解决方案,但均无济于事。

这是我的代码:

name: update-state
on: 
  schedule:
    - cron: '0 0 * * *'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Git checkout
        uses: actions/checkout@v2
        with:
          ref: workflow-test

      - name: Setup python
        uses: actions/setup-python@v1
        with:
          python-version: '3.x'
      - name: Execute script
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
          python scripts/script.py
        
      - name: Commit files
        run: |
          git config --local user.email "action@github.com"
          git config --local user.name "GitHub Action"
          git add -A
          git commit -m "update data" -a
      - name: Push changes
        uses: ad-m/github-push-action@v0.6.0
        with:
          github_token: $ secrets.GITHUB_TOKEN 
          branch: workflow-test

这是我尝试过的:

根据堆栈溢出答案,在主分支上运行计划,这应该会触发计划在另一个分支上工作; 添加with: ref: branch-part。

我也尝试过在推送时触发此工作流程,这确实有效。一切运行正常。这没有with: ref: branch-part。但据我了解,在使用计划时这是必要的,因为计划签出到默认分支的最后一次提交,因此必须将其更改为您正在处理的分支。

它似乎甚至没有尝试运行此工作流程。它没有提供尝试在“操作”选项卡下运行此工作流的记录。因此,我认为问题出在schedule 部分,因为它在推送时工作,甚至在按计划工作时也不运行。

我还尝试将一个简单的工作流按计划添加到我的master 分支,该分支确实可以运行。但是当我按计划将这个简单的工作流添加到我的workflow-test 分支时,它不再运行了。

我无法再找到有关堆栈溢出、文档或其他任何地方的修复。因此,我决定提出自己的问题。我希望有一个人可以帮助我。在此先感谢:)。

编辑:此工作流程会更新网站使用的数据。

【问题讨论】:

工作流文件是否提交到主分支? 它也不适用于我的非默认分支。看起来这方面的文档缺乏。 【参考方案1】:

计划的 GitHub Actions 在默认或基本分支上运行,由 the documentation 指定:

计划的工作流在默认的最新提交上运行,或者 基础分支。

这意味着您的工作流文件必须提交到master 分支。然后它可以从其他分支签出代码,但工作流文件本身必须位于master

这是演示其工作原理的最小示例。

name: Experiment
on: 
  schedule:
  - cron: '*/5 * * * *'

jobs:
  job1:
    name: Debug
    runs-on: ubuntu-latest

    steps:
    - name: Git checkout
      uses: actions/checkout@v2
      with:  ref: debug 
    - name: List files
      run: ls

此操作每 5 分钟运行一次 (*/5),并列出 debug 分支中的文件。

【讨论】:

是的,这行得通!非常感谢您的解决方案。但是,当时的文档似乎非常缺乏。文档中没有明确说明计划的工作流必须驻留在master 分支中。也没有其他解决方案(我能找到的)提到这个解决方案。 是的。 GitHub 有时将master 分支称为“默认分支”,因为对于某些人来说,它可能不是master

以上是关于GitHub 操作工作流计划不适用于非默认分支的主要内容,如果未能解决你的问题,请参考以下文章

问题在于平衡括号。我正在使用堆栈进行操作。它不适用于仅一个测试用例,即')'。否则它工作正常

Xcode Cocoa 默认选择器动画不适用于 iOS 应用程序

Spring Boot @ControllerAdvice 部分工作,不适用于自定义异常

GitHub要改默认分支名了,你的开源项目受影响了吗?

GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流(转载)

热重载不适用于升级的(.Net 5 -> .Net 6)项目