如何防止同一分支并行运行 GitHub 操作(包括拉取请求)?

Cla*_*pel 5 github-actions

我有一个 GitHub 操作。它可以从分支、拉取请求或手动触发。我想实现以下目标:决不能有两个来自同一分支的操作​​并行运行,包括来自该分支的拉取请求。

我最好的想法是这样做(伪代码):

concurrency: {{ if github.head_ref is nonempty then github.head_ref else github.ref }}
Run Code Online (Sandbox Code Playgroud)

当作业由 PR 触发时,github.head_ref包含源分支的名称。当作业从分支触发时,github.ref包含分支名称。所以上面的表达式应该可以解决我的问题,除了它不是有效的 GitHub 操作代码,而且我无法弄清楚是否可以制作这样的表达式。

我可以编写一个表达式或表达式组合来实现上述目的吗?或者我可以通过其他方式解决我的根本问题吗?

Mat*_*teo 5

正如文档中所建议的,在例中,您可以定义一个后备/默认值,因此请尝试使用:

concurrency: 
  group: ${{ github.head_ref ||  github.ref }}

Run Code Online (Sandbox Code Playgroud)

  • 通过添加更多有关代码的作用以及它如何帮助操作员的信息,可以改进您的答案。 (9认同)