【问题标题】:How do I trigger a scheduled action on a specific branch?如何触发特定分支上的计划操作?
【发布时间】:2020-08-27 16:55:37
【问题描述】:

我已经做了一个动作。我希望它按计划在分支foo 上运行(在我的情况下,一天两次)。

这是我目前所得到的:

repo/.github/workflows/daily-foo-tests.yml

name: Run integration tests on foo branch twice a day
on:
  schedule:
    # Execute at 00:01 and 13:01 UTC daily
    - cron:  '00 01,13 * * *'

jobs:
  build:
    name: Run UI Automation
    runs-on: [self-hosted, macOS, X64]
    steps:
      - uses: actions/checkout@v2
      - name: dotnet build
        with: { ref: foo }
        // continues to do stuff, not important

现在,此操作已推送到上述foo 分支。但是,转到github.com/org/repo/actions,它不会触发(我已经等了 24 小时了;此时它应该已经做了什么)。

在指定分支上触发计划的 github 操作工作流的正确方法是什么?

【问题讨论】:

  • this answer。您的工作流必须提交到默认分支才能触发on: schedule
  • 那么,假设foostaging 分支,master 是存储库的默认分支 - 在触发任何内容之前,工作流 yaml 必须存在于 master 分支上?我不希望它在默认分支上的最新提交 SHA 上运行;我想要 foo 分支上的最新提交 sha。
  • 是的,完全正确。 on: schedule 工作流在非默认分支中不起作用。但是你仍然可以在它运行时检出其他分支。
  • 我不确定我是否遵循,所以我会直接问:我可以在非默认分支上以任何方式运行计划的工作流吗?这是你发给我的答案的最后一部分吗?

标签: github github-actions


【解决方案1】:

工作流必须提交到要触发的默认分支。如果您只将其提交到非默认分支,它将无法正常工作。

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

参考:https://docs.github.com/en/actions/reference/events-that-trigger-workflows#schedule

例如,这应该提交到默认分支。当它运行时,它会检出分支foo,然后您可以构建、测试等。

on:
  schedule:
    - cron:  '0 1 * * 4'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          ref: foo
      
      # Build steps go here

【讨论】:

  • 谢谢。我会试试这个解决方案。我会接受...在 12 小时内,如果是绿色的 ;-)
  • 如果有任何方法可以在两个分支中运行它,例如默认值和 foo?当然我可以写 yml 让每个分支都有单独的步骤,或者为每个分支实现单独的 yml 文件,但是没有更简单的方法吗?
  • @diidu 我知道简化该场景的唯一方法是使用job matrix 以避免每个分支都有重复的步骤。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-09
  • 1970-01-01
  • 2022-12-18
  • 1970-01-01
  • 1970-01-01
  • 2021-06-04
相关资源
最近更新 更多