gpt4 book ai didi

github-actions - GitHub 操作 : how to build a pull request as if it were merged?

转载 作者:行者123 更新时间:2023-12-04 04:31:37 26 4
gpt4 key购买 nike

我对 GitHub Actions 感到非常兴奋。

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

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

最佳答案

根据 https://github.com/actions/checkout/issues/15#issuecomment-524093065https://github.com/actions/checkout/issues/15#issuecomment-524107344 ,如果您将工作流程设置为在 pull_request 上触发事件而不是 push事件,GITHUB_SHA将是合并提交,所以 checkout action 将检查合并的结果,然后您可以在其上构建和运行单元测试。
它也被正式记录 here :

GITHUB_SHA = Last merge commit on the GITHUB_REF branch
GITHUB_REF = PR merge branch refs/pull/:prNumber/merge


免责声明:我还没有进入测试版,所以我不能自己验证这些信息;我可以传递其他人所说的对他们有用的东西。
我现在已经进入测试版,所以我可以确认这有效。我在 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 .公关是 here ;该 PR 的第一个提交是提交 ID ec81c6f :
Picture evidence of commit ID
当我跑 git fetch origin pull/10/merge:merge-pr-10获取合并提交,我得到的提交是 f1ea865 , ec81c6f 的合并到 44a09bc (这是创建 PR 时我 master 分支上的最新提交)。并注意实际构建的 SHA:
Picture evidence of build SHA
所以只需使用 on: [pull_request]作为我工作流程的触发事件,它完成了我想要的。如果你看 the PR's history ,你会看到我尝试了几件事来查看是什么触发了新的构建:添加评论、关闭存储库、打开存储库......这是我发现的。
  • 添加评论没有 不是 触发新的工作流运行
  • 推送新提交 DID 触发新的工作流运行
  • 关闭 PR 做了 不是 触发新的工作流运行
  • 重新开放 PR DID 触发新的工作流运行
  • 向 PR 添加标签确实 不是 触发新的工作流运行
  • 从 PR 中删除标签确实 不是 触发新的工作流运行

  • 这正如我所料。

    关于github-actions - GitHub 操作 : how to build a pull request as if it were merged?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57683943/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com