【发布时间】:2013-07-10 12:31:05
【问题描述】:
使用 Travis-CI,是否可以在不向 GitHub 推送新提交的情况下触发重建?
用例:构建由于外部性而失败。来源实际上是正确的。如果只是重新运行,它将构建良好并通过。
例如,apt-get 由于包服务器关闭而失败,但服务器又恢复了。但是,在推送新的提交之前,构建状态“卡在”“失败”。
除了推送“虚拟”提交之外,还有什么方法可以推动 Travis-CI 进行另一个构建?
【问题讨论】:
标签: travis-ci
使用 Travis-CI,是否可以在不向 GitHub 推送新提交的情况下触发重建?
用例:构建由于外部性而失败。来源实际上是正确的。如果只是重新运行,它将构建良好并通过。
例如,apt-get 由于包服务器关闭而失败,但服务器又恢复了。但是,在推送新的提交之前,构建状态“卡在”“失败”。
除了推送“虚拟”提交之外,还有什么方法可以推动 Travis-CI 进行另一个构建?
【问题讨论】:
标签: travis-ci
如果您对 repo 有写入权限:在构建的详细信息屏幕上,有一个按钮 ↻ 重新启动构建。在“更多选项”下还有一个触发器构建菜单项。
注意:Ghostery 等浏览器扩展程序可能会阻止显示重启按钮。尝试禁用扩展程序或将 Travis CI 列入白名单。
注意2:如果.travis.yml 的配置在上游发生了变化,点击rebuild 按钮将使用旧配置运行travis。要为 travis 配置应用上游更改,必须向 PR 添加提交或关闭/重新打开它。
如果您已发送拉取请求:您可以close the PR then open it again。这将触发一个新的构建。
重启构建:
触发构建:
【讨论】:
如果您在 GitHub 上打开存储库的 Settings 选项卡,请单击 Integrations & services,找到 Travis CI 并单击 编辑,您应该会看到一个测试服务按钮。这将触发构建。
【讨论】:
Settings,而不是在 Travis 的 repo 页面上!我不敢相信我浪费了 20 分钟试图在 Travis 的页面上找到 Service Hooks。 :(
我知道你说过没有推送提交,但是如果你在 master 以外的分支上工作,那么方便的是提交一个空提交。
git commit --allow-empty -m "Trigger"
您可以在最后进行 rebase 并删除 squash/删除空提交并适用于所有 git 钩子 :)
【讨论】:
我找到了另一种强制重新运行 CI 构建和其他触发器的方法:
git commit --amend --no-edit 而不做任何更改。这将在当前分支中重新创建最后一次提交。git push --force-with-lease origin pr-branch。【讨论】:
--amend 标志在某些情况下也可能不会更改 HEAD 提交。
git push --force-with-lease origin pr-branch,这样您就不会意外地破坏别人的更改
您可以使用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"
}
【讨论】:
如果您安装了Travis CI Client,您可以使用travis restart <job#> 从控制台手动重新运行构建。你可以使用travis show <branch>找到分支的最后一个工作#
travis show master
travis restart 48 #use Job number without .1
travis logs master
更新:遗憾的是,看起来这并没有使用最新的提交开始新的构建,而是只是使用 repo 的先前状态重新启动先前的构建。
【讨论】:
如果构建从未发生(可能是您没有及时将 Pull-Request 构建开关设置为打开),您可以将 Github 上的 Pull Request 标记为已关闭,然后将其标记为已打开,然后将触发新的构建.
【讨论】:
我应该在这里提到,我们现在有了一种在网络上触发新构建的方法。详情请见https://blog.travis-ci.com/2017-08-24-trigger-custom-build。
TL;DR 点击“更多选项”,然后选择“触发构建”。
【讨论】:
build #xxxx has been restarted,但如果您查看网页,您不会看到任何构建发生
以下是我在 Dependabot 已打开的 PR 上触发重建但由于 .travis.yml 中的错误而失败的方法:
dependabot/cargo/tempfile-3.0.4)。【讨论】:
请确保先登录到 Travis。在您登录之前,重建按钮不会出现。我知道这很明显,但也有人绊倒了它;-)
【讨论】:
有时服务器确实会犯一些错误。 尝试注销/登录,然后一切都可能正确。 (是的,今天下午发生在我身上。)
【讨论】:
如果您没有写入权限,请关闭并重新打开 PR。
【讨论】: