在Github操作推送事件中获取原始分支名称以掌握

时间:2020-09-11 16:09:54

标签: git github github-actions

我试图设置一个Github动作推送事件来掌握(因此,合并)。问题是对于我想做的事情,我需要原始拉取请求分支的名称。 Github的 pull request 事件通过调用${{ github.head_ref }}使此操作变得容易,但是 push 事件中不存在此选项。我原本以为${{ github.head }}会给我我想要的东西,但实际上它只是给我refs/heads/master,而不是原始PR分支的名称。

换句话说,假设我使用名为foo的分支打开了master分支的PR。在推送事件中,我希望能够获得foo来完成我的工作。

这可能吗?

3 个答案:

答案 0 :(得分:0)

如果只想获取触发管道的分支,则可以从环境GITHUB_REF中获取它,该环境也可以作为$ {{github.ref}}访问。如果您要触发标签,则GITHUB_REF将没有正确的分支名称,因此您需要遵循How to get a branch name on GitHub action when push on a tag?

所示的过程

答案 1 :(得分:0)

我发现我的用例使用拉取请求事件而非推入事件可以接受的解决方法:

on:
  pull_request:
    types: [closed]
    branches:
      - master

以上内容说,由于合并的PR自动关闭,因此只能在对已关闭的master分支的拉取请求上运行。但是为了使此操作仅在已合并的已关闭PR上运行,而不仅仅是在任何已关闭的PR上运行,在作业的相关步骤中,我添加了条件检查以确保已关闭的PR也已被合并:

if: github.event.pull_request.merged == true

然后我可以访问问题中提到的分支名称:${{ github.head_ref }}

答案 2 :(得分:0)

对于第一个问题,如何在 master 上的 push 操作中获取源分支名称? Github action 到目前为止还没有提供方法。我创建了一个操作来帮助实现它,但需要一些先决条件。

  • 此操作需要在主分支或任何(或任何合并目标分支)上运行
  • 需要从 Github Merge 按钮合并源分支,并且不能更改自动消息。
  • 如果分支没有通过 Github Merge 按钮合并,则需要在提交消息中指定分支名称,例如 xxx xxx/branch-name xxx

然后你可以得到源名称。 示例

    sb = Snackbar(text='Elemento copiato negli appunti!')
    sb.ids.text_bar.text_color = get_color_from_hex('181818')
    sb.show()

在此处查看更多详细信息:https://github.com/tonynguyenit18/github-action-custom-vars