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

时间:2013-07-12 03:07:26

标签: travis-ci

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

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

例如,apt-get因包服务器关闭而失败,但服务器又重新启动。但是,在推送新提交之前,构建状态“卡在”“失败”。

除了推动“虚拟”提交之外,还有一些方法可以推动Travis-CI进行另一次构建吗?

16 个答案:

答案 0 :(得分:419)

  • 如果您对repo具有写入权限:在构建的详细信息屏幕上,有一个按钮以下,其工具提示为“重新构建”。

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

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

  • 如果您发送了拉取请求:您可以close the PR then open it again。这将触发新版本。

ButtonPicutre

答案 1 :(得分:201)

如果您在GitHub上打开存储库的设置标签,请点击集成&服务,找到 Travis CI 并点击修改,您会看到测试服务按钮。这将触发构建。

答案 2 :(得分:71)

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

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

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

答案 3 :(得分:23)

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

screengrab

注意:您需要具有对链接的GitHub仓库的写入权限才能使其生效。

答案 4 :(得分:23)

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

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

答案 5 :(得分:20)

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

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

答案 6 :(得分:13)

您可以使用Travis CLI执行此操作。作为described in the documentation,首先安装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"
 }

答案 7 :(得分:8)

如果您安装了Travis CI Client,则可以使用travis restart <job#>从控制台手动重新运行构建。您可以使用travis show <branch>

找到分支的上一个作业#
travis show master
travis restart 48 #use Job number without .1
travis logs master

Travis CI Client

更新:可悲的是,看起来这并没有使用最新的提交启动新版本,而是使用回购的先前状态重新启动以前的版本。

答案 8 :(得分:8)

Travis现在提供了一种触发&#34;定制&#34;从他们的Web UI构建。寻找&#34;更多选项&#34;右侧菜单按钮靠近项目顶部的页面。

More Options → Trigger Build

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

Custom Build Dialog Box

当我写这篇文章时,它处于测试阶段,并且似乎有些错误(但我希望他们能很快解决问题)。

答案 9 :(得分:4)

我在这里要提到的是,我们现在有了一种在网络上触发新版本的方法。有关详细信息,请参阅https://blog.travis-ci.com/2017-08-24-trigger-custom-build

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

答案 10 :(得分:3)

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

答案 11 :(得分:1)

我刚刚通过点击“更新分支”来触发拉动请求的测试以重新运行。这里: github check tests component

答案 12 :(得分:1)

请确保先登录到Travis。在您登录之前,不会显示“重建”按钮。我知道这很明显,但是也有人在上面绊了一下;-)

答案 13 :(得分:1)

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

答案 14 :(得分:0)

这是我在Dependabot已打开的PR上触发重建的原因,但是由于.travis.yml中的错误而失败:

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

答案 15 :(得分:-1)

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