在不推动提交的情况下触发Travis-CI重建?


414

使用Travis-CI,是否可以在不将新提交提交到GitHub的情况下触发重建?

用例:由于外部性,构建失败。资料来源实际上是正确的。如果只是重新运行,它将建立OK并通过。

例如,apt-get由于软件包服务器关闭而导致故障,但服务器又重新备份。但是,在推送新提交之前,构建状态为“卡住”为“失败”。

除了推动“虚拟”提交以外,是否有某种方法可以使Travis-CI进行其他构建?

Answers:


458
  • 如果您具有该仓库的写权限:在构建的详细信息屏幕上,有一个按钮↻Restart Build。同样在“更多选项”下有一个触发器构建菜单项。

    注意:诸如Ghostery之类的浏览器扩展程序可能会阻止重新启动按钮的显示。尝试禁用扩展或将Travis CI列入白名单。

    注意2:如果.travis.yml上游的配置已更改,则单击“重建”按钮将使用旧配置运行travis。要对travis配置应用上游更改,必​​须向PR添加提交或关闭/重新打开它。

  • 如果您已发送拉取请求:您可以关闭PR,然后再次打开它。这将触发一个新版本。

重新启动构建:

重新启动构建屏幕截图

触发构建:

触发构建屏幕截图


1
我发现并在其他情况下使用了它。但是我可能会发誓,由于上述原因,它出现了Error(错误)情况,而Gear(齿轮)菜单缺少该选项。也许那是一次fl幸,或者我误会了。无论如何,我认为您已经回答了它应该如何工作,所以我会继续并将您的回答标记为已接受。谢谢!
格雷格·亨德肖特

3
如果我查看我拥有,出错或失败的任何项目的构建历史,它都有一个重新启动按钮
jbtule 2013年

20
我认为一个棘手的案例是,您为其他人的项目提交了一个拉取请求,并且由于与您的PR本身无关的原因而出错,并且您知道如果您可以轻推它再试一次,它将成功。为什么不能(不是您的项目)是可以理解的,但是为什么(您的PR错误地“看起来不好”)也可以理解。
格雷格·亨德肖特

94
别忘了您必须登录才能看到这个消息:P
Michael J. Calkins 2014年

8
而且您需要对github repro具有写权限。因此,这对于向上游推的货叉将不起作用。
Izhaki 2014年

206

如果打开GitHub上存储库的“设置”选项卡,请单击“ 集成和服务”,找到Travis CI,然后单击“ 编辑”,您应该会看到一个“ 测试服务”按钮。这将触发构建。


6
我认为travis-ci删除了重新启动构建按钮,因此这是唯一对我有效的方法。尽管它执行两个构建…
Blaise

1
@Blaise您是否有机会使用Ghostery(或类似工具)?尝试禁用它。对我来说,这导致重新启动生成按钮重新出现。
格雷格·亨德肖特2014年

29
最初为回购激活Travis CI建筑时,此方法有效。对于没有任何先前版本的存储库,“重新加载版本”按钮不存在。
布赖恩·米勒

12
对于像我这样的白痴的注意事项:在GithubSettings的存储库中打开,而不在Travis的回购页面上打开!我不敢相信我浪费了20分钟试图Service Hooks在Travis的页面上找到。:(
约翰·雷德

83

我知道您说的是不提交提交,但是如果您在master以外的分支上工作,那么方便的是提交一个空的提交。

git commit --allow-empty -m "Trigger"

您可以在最后恢复基准并删除压扁/删除空的提交并在所有git钩子上工作:)


1
太好了,谢谢!我只想补充一点,我必须重新设置基础才能将“触发器”提交移到历史上。否则,它将在删除“触发器”提交后直接丢弃新的构建。
pmos

63
同样,您可以修改现有的commit和force push:git commit --amend --no-edit && git push -f
grahamrhay 2015年

4
@grahamrhay在您不是目标存储库的所有者时,最好触发PR构建,它可以保留内容,无需合并或变基或执行任何操作。请给出答案,以便可以更明显地对其进行投票。
TWiStErRob '16

我分叉了一个我无法访问的存储库,这是唯一对我有用的东西,因为Travis没有任何版本,可以在新创建的fork上重新启动。
Nick McCurdy

1
@TWiStErRob其他人在下面写下了这样的答案。
富兰克林·于

30

我发现了另一种强制重新运行CI构建和其他触发器的方法:

  1. git commit --amend --no-edit无任何变化。这将重新创建当前分支中的最后一个提交。
  2. git push --force-with-lease origin pr-branch

8
我不推荐这个。它破坏性地修改了历史记录,因此可能会使基于该提交而具有分支的人员感到困惑,并且该--amend标志HEAD在某些情况下也可能不会更改提交。
Nick McCurdy

7
当您只需要BUMP webhooks进行PR时,我发现这种情况很少见。没有人真正应该脱离请求请求,因此没有人会依赖确切的提交ID。
弗拉德·弗罗洛夫

4
git push --force-with-lease origin pr-branch
坚持

21

登录到Travis并转到构建页面。您将在齿轮图标旁边的右上角看到“重新启动构建”按钮:

屏幕抓取

注意:您需要对链接的GitHub存储库具有写权限,此功能才能起作用。


11
这个答案与被接受的答案基本相同,并在以后提交。
Dan Dascalescu 2014年

5
@DanDascalescu发布时没有截图。我现在才意识到,您可以编辑其他人的回复!;)
Juan

1
@Juan您仍然可以删除我建议这样做的答案,因为它会增加不必要的混乱。
拉法尔·恩登

20

如果您在GitHub上有一个具有.travis.yml的新项目,但从未经过测试,则可以不通过以下方式运行测试:

  1. 启用Travis CI设置中的测试
  2. 在GitHub上打开项目页面
  3. 打开设置-> Webhooks和服务
  4. 在服务中找到Travis CI,然后按“编辑”按钮
  5. 按“测试服务”

3
这是那些拥有新创建项目的人的答案。
埃里克MORAND

16

您可以使用Travis CLI进行此操作。如文档所述,首先安装CLI工具,然后:

travis login --org --auto
travis token

您可以将此令牌保留在环境变量中 TRAVIS_TOKEN,只要保留在其中的文件不受公共场所的版本控制即可。

我使用此功能提交触发器:

function travis_trigger() {
     local org=$1 && shift
     local repo=$1 && shift
     local branch=${1:-master} && shift

     body="{
             \"request\": {
               \"branch\": \"${branch}\"
              }
           }"

     curl -s -X POST \
          -H "Content-Type: application/json" \
          -H "Accept: application/json" \
          -H "Travis-API-Version: 3" \
          -H "Authorization: token $TRAVIS_TOKEN" \
          -d "$body" \
          "https://api.travis-ci.org/repo/${org}%2F${repo}/requests"
 }

您可以为自己的叉子设置自己的Travis构建。
山姆·布莱曼

您可以构建派生请求请求的fork的分支。
山姆·布莱曼

您的PR和PR的分支本质上是相同的,对吗?如果上游在进行PR后有其他更改,请确保将其重新设置为100%确保。但这仍然需要发生,并且GitHub应该在UI中显示一个rebase按钮,在这种情况下,它将触发PR的新构建。
山姆·布莱曼

11

Travis现在提供了一种从其Web UI触发“自定义”构建的方法。在项目页面顶部附近的右侧查找“更多选项”菜单按钮。

更多选项→触发构建

然后,您将看到一个对话框,您可以在其中选择分支并自定义配置:

自定义构建对话框

在我撰写本文时,它处于beta版本,并且似乎存在一些问题(但是我希望他们会尽快解决这些问题)。


2
谢谢。对我来说,这是最好的响应,因为触发器构建也会更改构建的ID,而不是简单的重建(通过按钮)。如果您在脚本中使用Travis的ID,那么了解这一点很重要。
卡里玛·拉夫斯

2
这需要更高
Gillespie

8

如果安装Travis CI客户端,则可以用来travis restart <job#>从控制台手动重新运行构建。您可以使用来找到分支的最后一个作业travis show <branch>

travis show master
travis restart 48 #use Job number without .1
travis logs master

Travis CI客户

更新:可悲的是,这看起来似乎并没有使用最新的提交来启动新的构建,而只是使用仓库的先前状态重新启动了先前的构建。


我不了解更新说明。从该命令看来,您可以定义要重新启动的作业。所以问题是要触发一个工作,想想大多数人都想在提交已被触发的情况下执行此操作,但是他们想再次对其进行测试……哦,我想您不能停用commit分支触发器并手动构建HEAD。
redanimalwar

@redanimalwar一个常见的用例是在CI构建无法检测到更改或处于静默期时强制构建它。
山姆·布莱曼

4

我在这里应该提到,我们现在可以在网络上触发新的构建。参见https://blog.travis-ci.com/2017-08-24-trigger-custom-build详细信息,。

TL; DR单击“更多选项”,然后选择“触发构建”。


如果您没有对该存储库的写访问权限/过滤器,并且想针对自己的请求请求重新运行构建,则此方法将无效。我没有看到这个选项。当尝试Travis CLI时,它说,build #xxxx has been restarted 但是如果您浏览网页,则看不到任何构建情况
bitek

3

如果构建从未发生(也许您没有及时将Pull-Request构建开关设置为打开),则可以在Github上将Pull Request标记为已关闭,然后将其标记为已打开,然后将触发新的构建。



1

这是我触发Dependabot已打开但由于以下错误而失败的PR上的重建的工作.travis.yml

  1. 关闭公关
  2. 等待Dependabot发表评论(“好吧,我不会再通知您此版本,但是会在有新版本的情况下与您取得联系。”)。它将删除其分支。
  3. 恢复删除的Dependabot分支(类似 dependabot/cargo/tempfile-3.0.4)。
  4. 再次打开公关

1

请确保首先登录到Travis。直到您登录后,“重建”按钮才会出现。我知道这很明显,但是有人也曾踩过它;-)


0

有时,服务器确实犯了一些错误。尝试注销/登录,然后一切可能正确。(是的,今天下午发生在我身上。)


-1

如果您没有写入权限,请关闭并重新打开PR。


不,请不要留下垃圾回收请求,这很烦人。只需将新的提交推送到您的分支(例如,您可以更改提交日期:git commit --amend --date = now && git push -f)。
intgr
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.