如何在GitHub Actions工作流程中获取请求请求编号

时间:2019-11-27 19:13:51

标签: github github-actions

我想访问Github Actions工作流程中的请求请求编号。我可以访问可用的GITHUB_REF环境变量。尽管在“拉取请求”操作中,其值为:“ refs / pull / 125 / merge”。我只需要提取“ 125”。

我发现了类似的帖子here,该帖子显示了如何使用此变量获取当前分支。尽管在这种情况下,我解析的内容有所不同,但我无法隔离请求请求号。

我尝试使用解析为“合并”的{GITHUB_REF ## * /} 我也尝试过{GITHUB_REF#* /}解析为“ pull / 125 / merge”

我只需要请求请求号(在我的示例中是125)

3 个答案:

答案 0 :(得分:5)

尽管已经回答了,但我发现最简单的方法是使用github上下文。以下示例显示了如何将其设置为环境变量。

env:
  PR_NUMBER: ${{ github.event.number }}

答案 1 :(得分:4)

@Samira的答案正常运行。我发现有一种新方法可以做到这一点,并希望与可能偶然发现此问题的任何人分享。

解决方案是在工作流程的开头添加一个阶段,该阶段从Github令牌(事件)获取PR号,然后将其设置为环境变量,以便在整个工作流程的其余部分轻松使用。这是代码:

  - name: Test
    uses: actions/github-script@0.3.0
    with:
      github-token: ${{github.token}}
      script: |
        const core = require('@actions/core')
        const prNumber = context.payload.number;
        core.exportVariable('PULL_NUMBER', prNumber);

现在,在以后的任何阶段,您都可以简单地使用$ PULL_NUMBER来访问之前设置的环境变量。

答案 2 :(得分:2)

使用awk提取GITHUB_REF的部分而不是bash magick怎么样?

摘自awk联机帮助页:

  

-F fs

     

-场分隔符fs

     

将fs用作输入字段分隔符(FS预定义变量的值)。

只要记住这一点,仅提取所需变量的一部分就很简单。 awk在所有平台上都可用,因此下面的步骤将在任何地方都适用:

- run:   echo ::set-env name=PULL_NUMBER::$(echo "$GITHUB_REF" | awk -F / '{print $3}')
  shell: bash