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

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

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

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


当前回答

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

其他回答

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

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

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

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

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

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

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

你可以使用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 CI客户端,您可以使用Travis restart <job#>从控制台中手动重新运行构建。你可以使用travis show <branch>找到分支的最后一个job#

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

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