触发Travis-CI重建而不推送提交?

Gre*_*ott 395 travis-ci

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

使用案例:由于外部性,构建失败.来源实际上是正确的.如果只是重新运行,它将构建好并通过.

例如,apt-get由于程序包服务器关闭而导致失败,但服务器又重新启动.但是,在推送新提交之前,构建状态"卡在""失败".

有没有办法推动Travis-CI做另一个构建,除了推动"虚拟"提交?

jbt*_*ule 438

  • 如果你有回购写访问:在构建的细节画面,有一个按钮与提示"重新启动构建".

    注意:像Ghostery这样的浏览器扩展可能会阻止显示重启按钮.尝试禁用扩展或白名单Travis CI.

    注意2:如果.travis.yml上游的配置发生了变化,单击"重建"按钮将使用旧配置运行travis.要为travis配置应用上游更改,必​​须向PR添加提交或关闭/重新打开它.

  • 如果您发送了拉取请求:您可以关闭PR然后再次打开它.这将触发新的构建.

ButtonPicutre

  • 不要忘记你必须登录才能看到:P (90认同)
  • 我认为一个棘手的情况是你为其他人的项目提交拉取请求,并且由于与PR本身无关的原因而导致错误,并且如果你可以轻推它再试一次,那么你知道它会成功.这是可以理解的为什么你不能(不是你的项目) - 但也可以理解为什么你想(你的公关错误"看起来很糟糕"). (18认同)
  • 并且您需要具有github repro的写入权限.所以这对上游推出的叉子不起作用. (8认同)
  • 如果我查看我拥有,错误或失败的任何项目的构建历史记录,它有[重启按钮](https://dl.dropboxusercontent.com/u/14785065/Img/travis-ci.jpg) (3认同)
  • 我在其他情况下发现并使用了它。但是我可以发誓我遇到过由于上述原因而出错的情况,并且齿轮菜单缺少该选项。或许那是一次侥幸,或许我错了。无论如何,我认为您已经回答了_supposed_ 是如何工作的,所以我会继续将您的答案标记为已接受。谢谢! (2认同)

Aar*_*ill 204

如果在GitHub上打开存储库的Settings选项卡,单击Integrations&services,找到Travis CI并单击Edit,您将看到Test Service按钮.这将触发构建.

  • 这在您最初为回购激活Travis CI建筑时有效.对于没有任何先前构建的仓库,"重新加载构建"按钮不存在. (28认同)
  • 对于像我这样的白痴的提示:打开`Settings`在仓库中_ON Github_,不会对特拉维斯的回购页面!我不敢相信我浪费了20分钟试图在Travis的页面上找到"Service Hooks".:( (11认同)
  • 我认为travis-ci删除了重启构建按钮,所以这是对我有用的唯一方法.虽然它执行*两个*构建... (6认同)

小智 77

我知道你说的是没有推送提交,但是如果你在master之外的分支上工作,那么方便的事情就是提交一个空提交.

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

你可以在最后重新定义并删除壁球/删除空提交并在所有git钩子上工作:)

  • 同样,你可以修改现有的commit和force push:git commit --amend --no-edit && git push -f (60认同)
  • @grahamrhay当你不是目标回购的所有者时,它是最好的触发PR构建,它保留内容,不需要合并或改组或做任何事情.请把它作为答案,这样就可以更明显地提升它. (3认同)

Vla*_*lov 28

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

  1. 运行git commit --amend --no-edit没有任何更改.这将重新创建当前分支中的最后一次提交.
  2. git push --force-with-lease origin pr-branch.

  • 我不推荐这个.它破坏性地修改了历史记录,因此可能会混淆基于此提交的分支的人,并且`--amend`标志在某些情况下也可能不会更改`HEAD`提交. (7认同)
  • 我觉得在PR只需要BUMP webhooks的罕见情况下这很好.没有人应该真正分支拉取请求,所以没有人会依赖确切的提交ID. (7认同)
  • 去寻找`git push --force-with-lease origin pr-branch`,这样你就不会意外地破坏其他人的变化 (4认同)
  • 如何将`--no-edit`添加到`git commit`中? (3认同)

Jua*_*uan 22

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

screengrab

注意:您需要具有对链接的GitHub存储库的写访问权才能使其正常工作.

  • 这个答案与接受的答案基本相同,并且很晚才提交. (11认同)
  • @DanDascalescu我发布时没有截图.我现在才意识到你可以编辑其他人的回复!;) (5认同)

lam*_*ave 20

如果你在GitHub上有新项目,它有.travis.yml,但从未经过测试,你可以不用这样的方式运行测试:

  1. 在Travis CI配置中启用测试
  2. 在GitHub上打开项目页面
  3. 打开设置 - > webhooks和服务
  4. 在服务中找到Travis CI并按下编辑按钮
  5. 按"测试服务"

  • 这是新创建项目的答案. (3认同)

Sam*_*man 16

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

travis login --org --auto
travis token
Run Code Online (Sandbox Code Playgroud)

您可以将此令牌保留在环境变量中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"
 }
Run Code Online (Sandbox Code Playgroud)


ico*_*ast 10

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

更多选项→触发器构建

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

自定义生成对话框

在我写这篇文章的时候,它处于测试阶段,并且看起来有些小问题(但我希望他们能很快解决问题).

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

Gre*_*ray 8

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

travis show master
travis restart 48 #use Job number without .1
travis logs master
Run Code Online (Sandbox Code Playgroud)

Travis CI客户

更新:遗憾的是,看起来这并没有使用最新的提交启动新的构建,而只是使用repo的先前状态重新启动以前的构建.