我对GitHub Actions感到非常兴奋。
我现在使用Travis-CI和AppVeyor,它们具有“ PR”(拉动请求)构建,可以构建代码,就像合并了拉动请求一样。
我想使用GitHub Actions进行持续集成,但是GitHub Actions似乎仅支持构建推送的提交,而不是合并的结果。如何达到我想要的效果?
答案 0 :(得分:3)
根据https://github.com/actions/checkout/issues/15#issuecomment-524093065和https://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
:
我运行git fetch origin pull/10/merge:merge-pr-10
来获取合并提交时,我得到的提交是f1ea865
,是ec81c6f
到44a09bc
上的合并(这是我的最新提交创建PR时master
个分支)。并注意实际构建的SHA:
因此,仅通过使用on: [pull_request]
作为工作流的触发事件,它就可以实现我想要的。如果您查看the PR's history,将会发现我尝试了几件事来查看是什么触发了新构建:添加评论,关闭存储库,打开存储库...这就是我的发现。
这就是我所期望的。