我有一个 GitHub 操作。它可以从分支、拉取请求或手动触发。我想要实现以下目标:决不能有此操作的两个实例从同一分支并行运行,包括来自该分支的拉取请求。
我最好的想法是这样做(伪代码):
concurrency: {{ if github.head_ref is nonempty then github.head_ref else github.ref }}
当作业由 PR 触发时,
github.head_ref
包含源分支的名称。当作业从分支触发时,github.ref
包含分支名称。所以上面的表达式应该可以解决我的问题,除了它不是有效的 GitHub 操作代码,而且我无法弄清楚是否可以制作这样的表达式。
我可以编写一个表达式或表达式组合来实现上述目的吗?或者我可以通过其他方式解决我的根本问题吗?
按照文档中的建议,在 this 示例中,您可以定义一个后备/默认值,因此请尝试使用:
concurrency:
group: ${{ github.head_ref || github.ref }}