GitHub Actions:如何构建合并请求的合并请求?

时间:2019-08-28 01:24:04

标签: github-actions

我对GitHub Actions感到非常兴奋。

我现在使用Travis-CI和AppVeyor,它们具有“ PR”(拉动请求)构建,可以构建代码,就像合并了拉动请求一样。

我想使用GitHub Actions进行持续集成,但是GitHub Actions似乎仅支持构建推送的提交,而不是合并的结果。如何达到我想要的效果?

1 个答案:

答案 0 :(得分:3)

根据https://github.com/actions/checkout/issues/15#issuecomment-524093065https://github.com/actions/checkout/issues/15#issuecomment-524107344,如果您将工作流设置为在pull_request事件而不是push事件上触发,则GITHUB_SHA将是合并提交,因此checkout操作将签出合并结果,然后您可以在其上构建和运行单元测试。

免责声明:我尚未进入测试版,因此我无法自己验证此信息;我可以继续讲别人说的对他们有用的话。

我现在已经进入测试版,因此我可以确认它是否有效。我在my test repo中运行了以下工作流程的构建:

name: Build PR

on: [pull_request]

jobs:
  build:

    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macOS-latest]
        dotnet: [2.2.402, 3.0.100-rc1-014190]
    runs-on: ${{ matrix.os }}

    steps:
    # ... trimmed ...
    - name: Dump GitHub context
      env:
        GITHUB_CONTEXT: ${{ toJson(github) }}
      run: echo "$GITHUB_CONTEXT"
      if: runner.os != 'Windows'
    # ... trimmed ...

Here's a build log of that workflow running。 PR是here;该PR的第一个提交是提交ID ec81c6f

Picture evidence of commit ID

我运行git fetch origin pull/10/merge:merge-pr-10来获取合并提交时,我得到的提交是f1ea865,是ec81c6f44a09bc上的合并(这是我的最新提交创建PR时master个分支)。并注意实际构建的SHA:

Picture evidence of build SHA

因此,仅通过使用on: [pull_request]作为工作流的触发事件,它就可以实现我想要的。如果您查看the PR's history,将会发现我尝试了几件事来查看是什么触发了新构建:添加评论,关闭存储库,打开存储库...这就是我的发现。

  • 添加评论没有触发新的工作流程运行
  • 按下新的提交 DID 触发新的工作流程运行
  • 关闭PR不会触发新的工作流程运行
  • 重新打开PR DID 触发新的工作流程运行
  • 向PR添加标签确实没有触发新的工作流程运行
  • 从PR中删除标签确实触发了新的工作流程运行

这就是我所期望的。