对于我的项目,我有一个相当长的 github 操作,当创建新的拉取请求时会触发该操作。
这些是我使用的触发器:
on:
pull_request:
types: [opened, ready_for_review, labeled]
此操作被定义为我的拉取请求的“状态检查”要求,以确保该操作在允许某人合并其 PR 之前运行良好。
但是,我的 PR 也需要及时更新develop
在被允许合并任何东西之前。
所以我经常遇到的场景是这样的:
- 创建新的拉取请求
- Github Action 启动,我的 PR 的检查状态变为“进行中”
- 我意识到我的分支没有与开发保持同步,所以我更新了它。
- PR 的检查状态变为“预期”,因为我当前的运行是在分支的先前版本上开始的。
我对这种情况的问题是,即使我的 github 操作运行现在完全无效/过时(因为分支的内容发生了变化),操作本身仍在运行。我需要手动转到操作选项卡并取消此运行。
如果分支或 PR 的内容发生更改,是否有办法自动取消此运行?
由于 CI 作业在不同的 github 运行器中执行,因此没有直接的方法可以自动取消以前的 CI 作业natively与 Github 操作。
但是,有一些解决方法可以帮助您解决问题:
1 - 使用Github API取消工作流程运行 https://docs.github.com/en/rest/reference/actions#cancel-a-workflow-run直接(在您的具体情况下,自动化可能并不简单)。
2 - 使用取消工作流程操作 https://github.com/marketplace/actions/cancel-workflow-action,这将取消任何之前未执行的运行completed
对于给定的工作流程。
3 - 使用跳过重复操作 https://github.com/marketplace/actions/skip-duplicate-actions,在合并、拉取请求或类似操作后跳过重复的工作流程运行。
4 - 使用本机concurrency field https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#concurrency以确保一次仅运行使用同一并发组的单个作业或工作流。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)