首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在推到不同的存储库时自动触发Travis?

在推到不同的存储库时自动触发Travis?
EN

Stack Overflow用户
提问于 2017-12-04 20:17:28
回答 1查看 1.4K关注 0票数 2

是否有办法在每次推到存储库Y时触发Travis CI为存储库X构建?具体来说,我希望我的构建在每次推到http://github.com/tensorflow/tensorflow时都能启动

EN

回答 1

Stack Overflow用户

发布于 2017-12-08 21:52:09

问得好!以下是我能想到的一些解决方案:

如果您在回购上拥有管理权限(或者认识一个这样的人),您可以创建一个订阅push事件的webhook,当触发时,使用Travis启动一个在Travis上的构建。

这将需要:

  1. 在GitHub上创建一个新的http://github.com/tensorflow/tensorflow/settings/hooks/new网络钩子。当然,根据您认为合适的情况定制设置,但根据我所掌握的信息,我建议使用application/json内容类型,并且只让GitHub用push事件触发webhook。
  2. 编写一个小型web应用程序,期待来自GitHub的HTTP有效负载,并使用Travis的API启动构建。这个web应用程序可以用任何语言编写,但它必须部署到总是处于清醒状态和监听状态的地方(以防止缺少构建)。

这就是我的例子。

代码语言:javascript
运行
复制
post "/push-webhook" do
  uri = URI.parse("https://api.travis-ci.org/repo/your-org/your-repo/requests")

  request = Net::HTTP::Get.new(uri.request_uri)
  request["Content-Type"] = "application/json"
  request["Accept"] = "application/json"
  request["Travis-API-Version"] = "3"
  request["Authorization"] = "token your-token"

  body = { "request" => { "branch" => "master" } }
  request.body = body.to_json

  response = http.request(request)
end
  1. 然后瞧!一旦部署了这个web应用程序,并且正确地配置了您的GitHub webhook,您将看到http://github.com/tensorflow/tensorflow上的每一个新的推送都会运行在Travis上的构建。

有帮助的文件

但是,如果您在回购上没有管理权限,您可以创建一个由您控制的存储库镜像,然后按照上面的说明进行操作(有一些不同之处)。根据我所做的一些研究,如果没有原始/官方存储库的管理权限,就不可能(或者至少不容易)在GitHub上创建存储库的镜像。

话虽如此,我还是找到了一个可行的解决办法。

  1. tensorflow/tensorflow导入GitLab并使用镜像存储库功能,以便将http://github.com/tensorflow/tensorflow映射为GitLab回购的上游。
  2. 从这里开始,按照上面的说明,除了使用GitLab的web钩子API而不是GitHub发送推事件来触发我们的web应用程序来启动Travis CI上的构建之外。

有帮助的文件

我希望这些信息是有帮助的。如果你还有其他问题,请告诉我,我很乐意尽我所能提供帮助。:)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47641297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档