Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Github 如何配置Travis CI以生成拉取请求&;合并到不带冗余的主机_Github_Travis Ci_Pull Request - Fatal编程技术网

Github 如何配置Travis CI以生成拉取请求&;合并到不带冗余的主机

Github 如何配置Travis CI以生成拉取请求&;合并到不带冗余的主机,github,travis-ci,pull-request,Github,Travis Ci,Pull Request,用“BDD”术语来说: 背景: 鉴于我正在为GH回购做出贡献 当我创建拉取请求时 那么Travis应该构建最新的提交 当我推送到一个现有的拉请求时 那么Travis应该构建最新的提交 当我将拉取请求合并到主机时 那么特拉维斯应该建造大师 我被Travis CI的“构建推送”和“构建PRs”设置弄糊涂了,如下所示: 启用这两个选项都会导致Travis生成两次拉请求 在该分支上提交一次 并再次将该分支的合并提交到其目标 仅启用“build PRs”会导致生成PRs,但不会导致合并后生成(即在主

用“BDD”术语来说:

背景:
鉴于我正在为GH回购做出贡献

当我创建拉取请求时
那么Travis应该构建最新的提交

当我推送到一个现有的拉请求时
那么Travis应该构建最新的提交

当我将拉取请求合并到主机时
那么特拉维斯应该建造大师

我被Travis CI的“构建推送”和“构建PRs”设置弄糊涂了,如下所示:

  • 启用这两个选项都会导致Travis生成两次拉请求
    • 在该分支上提交一次
    • 并再次将该分支的合并提交到其目标
  • 仅启用“build PRs”会导致生成PRs,但不会导致合并后生成(即在主版本上)
  • 通过构建对回购的所有推送,启用“推送”蛮力满足上述标准。你可以尝试用黑名单和白名单来欺骗分支,但除非你严格遵守分支名称的规定,否则这很可能会伤害你
这在和中有更多的解释


有人知道满足上述条件的配置吗?

我最终发现了另一个GH问题(),这让我想到尝试同时启用PRs和PUSH,但有一个白名单将PUSH限制到特定分支。这似乎符合我的工作流程的标准。以下是我所做的:

  • 在回购的Travis设置中启用PRs和branch推送:
  • .travis.yml
    更改为(即,仅构建推送到主控):
  • 分支机构: 仅: -主人
  • 通过创建一个,和另一个带有一些空提交的PR来验证它

  • 核实


  • 公认答案中描述的白名单方法有一些重大局限性。特别是,它不支持在不打开PR的情况下非冗余地构建任意分支


    我打开了。

    如果您不仅要测试
    主分支,还要测试其他一些分支,则可以使用下一个工作流:

    • 同时启用“构建推送”和“构建拉取请求”
    • 分支:除
      指令之外的分支添加到您的
      .travis.yml

      branches:
        except:
          - /^pr\..*/
      
    在此配置中:

    • 任何提交到分支
      功能-A
      的操作都将触发生成
    • 对分支
      pr.feature-A
      的任何提交都不会触发生成
    • 如果在打开的拉取请求中使用分支
      pr.feature-A
      ,则将触发生成
    工作流示例
    • 多个开发人员之间共享的临时WIP分支:
      WIP.feature-A
      ,对该分支的任何提交都将触发生成
    • 当分支准备合并到
      master
      时,您可以将其从
      wip.feature-A
      重命名为
      pr.feature-A
      并打开拉取请求
    • 如果在查看拉取请求时,您希望应用新的修复程序,只需按入
      pr.feature-A
    在上述所有步骤中,只会触发一个生成。

    刚刚在中找到

    添加到.travis.yml

    if: type = push
    
    或者:

    if: type = pull_request
    

    假设您想要构建allPRs,下面的方法就可以了。在设置页面上启用分支和PR构建,并将此行作为
    travis.yml
    中的第一行:

    branches:
      except:
        - /^pr\..*/
    
    if:(type=push和branch-IN(master,dev))或(type=pull\u-request和NOT-branch=~/no-ci/)

    这将尝试在所有推送上进行推送构建,并在打开的PR的所有推送上进行PR构建,但将过滤掉任何不符合条件的。您可能需要对此进行一些修改—关于不在名称中的某个位置构建没有ci的分支的子句显然是可选的,并且您可能没有两个始终希望在其上运行构建的分支


    你可以在特拉维斯的网站上阅读更多

    对于我正在使用的其中一个存储库,以下是我想要的:

    有一个
    origin
    repo,它是执行所有发行的主要回购

    我希望所有到达
    master
    原始分支的拉取请求都应该只与Travis构建一次,而不管它来自分支回购或
    原始分支的任何其他分支

    在这种情况下,这就像一个符咒


    如果:(type==push)或(type==pull\u请求和fork==true)

    确认此工作。请参见此。对于指向除
    master
    以外的其他对象的子要素分支PRs,此操作是否仍然有效?我相信这依赖于Travis的PR build env Var的一个奇怪的怪癖,在这种情况下不起作用。我相信它应该起作用,因为它配置为生成所有拉请求(不管基本分支),但仅限于将build推送到
    master
    @fotinakis——GitHub中有三个选项对应于三种不同类型的合并。选择保留所有分支/要素以将其包括在推送中的选项。然后你可能需要使用travis.yml,我想,以获得特定的分支/功能或排除。这不适用于不以master为目标的请求-它们根本不会生成。分支生成和PR生成是不同的生成,可能会产生不同的结果。分支构建只是分支的顶端。PR构建是合并到master的分支的尖端。如果您在此时将分支合并到master,那么实际上会发生这种情况。如果其他东西在分支打开后被合并到master,那么不可能进行快进合并,这将不同于分支构建。这一点,但是下面的@Corey Noel有一个更完整的答案,我用它来回答我们的问题