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

用例:由于外部性而导致构建失败。这个来源实际上是正确的。如果简单地重新运行,它将构建OK并通过。

例如,由于包服务器宕机,apt-get失败,但服务器再次备份。然而,构建状态“卡”在“失败”,直到推送新的提交。

有什么方法来推动Travis-CI做另一个构建,而不是推动一个“虚拟”提交?


If you have write access to the repo: On the build's detail screen, there is a button ↻ Restart Build. Also under "More Options" there is a trigger build menu item. Note: Browser extensions like Ghostery may prevent the restart button from being displayed. Try disabling the extension or white-listing Travis CI. Note2: If .travis.yml configuration has changed in the upstream, clicking rebuild button will run travis with old configuration. To apply upstream changes for travis configuration one has to add commit to PR or to close / reopen it. If you've sent a pull request: You can close the PR then open it again. This will trigger a new build.

重新构建:

触发构建:


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


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


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

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

UPDATE:不幸的是,它看起来并没有使用最新的提交启动一个新的构建,而是使用之前的repo状态重新启动一个以前的构建。


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

git commit——allow-empty -m "触发器"

你可以在最后改变base,删除squash/删除空提交,并在所有git钩子上工作:)


如果你在GitHub上有新项目。travis。Yml,但从未测试过,你可以运行测试而不提交:

在Travis CI设置中启用测试 在GitHub上打开项目页面 打开设置-> webhooks和服务 找到Travis CI在服务和按下编辑按钮 按“测试服务”


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

运行git commit——modify——no-edit,不做任何修改。这将重新创建当前分支中的最后一次提交。 Git push——force-with-lease origin pr-branch。


你可以使用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"
 }

我刚刚触发了一个拉请求的测试,通过点击“更新分支”重新运行:


我应该在这里提到,我们现在有了一种在web上触发新构建的方法。详情见https://blog.travis-ci.com/2017-08-24-trigger-custom-build。

博士TL; 点击“更多选项”,然后选择“触发构建”。


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


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

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

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


以下是我在Dependabot打开的PR上触发重建的方法,但由于. travel .yml中的错误而失败:

关闭PR 等待Dependabot的评论(“好吧,我不会再通知你关于这个版本,但当新版本可用时,我会联系你。”)。它会移除它的分支。 恢复已删除的分支Dependabot(类似于Dependabot /cargo/tempfile-3.0.4)。 再次打开PR


请务必先登录崔维斯。直到您登录后,重建按钮才会出现。我知道这是显而易见的,但有人也绊倒了;-)


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