将其放入" BDD"术语:
背景:
鉴于我正在为GH回购做出贡献当我创建拉取请求时 然后Travis应该构建最新的提交
当我推送现有的拉请求时 然后Travis应该构建最新的提交
当我将拉取请求合并到主人时 然后特拉维斯应该建立主人
Travis-CI" build pushes"让我很困惑。和#34;建立PR"设置,如:
Travis-CI docs和GH issue #3241中详细说明了这一点。
任何人都知道满足上述条件的配置吗?
答案 0 :(得分:88)
我最终发现了另一个GH问题(#2111),它给了我一个尝试启用PR和&推送,但使用白名单限制推送到特定分支。这似乎满足我的工作流程的标准。这就是我的所作所为:
.travis.yml
更改为white-list master
branch(即仅构建推送到主人):branches: only: - master
通过创建PR with the .travis.yml
change来测试它,并使用一些空提交来验证它works for forks too。
答案 1 :(得分:8)
答案 2 :(得分:3)
接受的答案中描述的白名单方法有一些重大限制。特别是,它不支持在不打开PR的情况下非冗余地构建任意分支。
答案 3 :(得分:2)
如果您不仅要测试master
分支,还要测试其他分支,则可以使用下一个工作流程:
将branches:except
指令添加到.travis.yml
:
branches:
except:
- /^pr\..*/
在此配置中:
feature-A
的任何提交都将触发构建pr.feature-A
的任何提交都不会触发构建pr.feature-A
,则会触发构建wip.feature-A
,对此分支的任何提交都将触发构建master
时,您可以将其从wip.feature-A
重命名为pr.feature-A
并打开请求pr.feature-A
在上述所有步骤中,只会触发一个构建。
答案 4 :(得分:1)
假设您要构建所有公关,则可以使用以下方法解决问题。在设置页面上启用分支和PR构建,并将此行作为travis.yml
的第一行:
if: (type = push AND branch IN (master, dev)) OR (type = pull_request AND NOT branch =~ /no-ci/)
这将尝试在所有推送上进行推送构建,并在所有推送上进行PR构建,以打开PR,但是会过滤掉不符合条件的任何内容。您可能需要对此进行一些修改-关于不使用名称中的no-ci构建分支的子句显然是可选的,并且您可能没有两个总是希望在其上运行构建的分支。
您可以在Travis网站上的conditions和conditional builds上阅读更多内容。
答案 5 :(得分:0)
对于我正在使用的其中一个存储库,这是我想要的:
有一个origin
存储库,它是执行所有发行版的主要存储库。
我希望所有传至master
分支的拉取请求都只能origin
本身的任何其他分支。
在这种情况下,它就像一个饰物
if: (type == push) OR (type == pull_request AND fork == true)