有没有办法在每次推送存储库Y时触发存储库X的Travis CI构建?具体来说,我希望每次推送到http://github.com/tensorflow/tensorflow
时都会启动我的构建答案 0 :(得分:2)
好问题!以下是我能想到的一些解决方案:
如果您拥有repo的管理员权限(或知道有人做过),您可以创建一个订阅push
事件的webhook,并在触发时启动Travis的构建CI使用Travis API。
这需要:
在http://github.com/tensorflow/tensorflow/settings/hooks/new上创建新的GitHub webhook。当然,根据您的需要自定义设置,但是根据我的信息,我建议使用application/json
内容类型,只让GitHub触发带有push
事件的webhook。
编写一个期望来自GitHub的HTTP POST有效负载的小型Web应用程序,并使用Travis CI的API启动构建。此Web应用程序可以使用任何语言编写,但必须部署到始终保持清醒和监听的位置(以防止丢失构建)。
这是我的例子。
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
有用的文档
但是,如果您对repo没有管理员权限,则可以在控件中创建 的存储库镜像,然后按照上面的说明进行操作(使用一些差异)。从我做的小研究开始,在GitHub上创建一个存储库的镜像是不可能的(或者至少不容易),而无需管理员访问原始/官方存储库。
话虽如此,我找到了一个应该有效的解决方法。
将tensorflow/tensorflow
导入GitLab并使用镜像存储库功能,使其镜像http://github.com/tensorflow/tensorflow作为您的GitLab存储库的上游。
从那里开始,按照上面的说明正常操作,除非使用GitLab的webhook API代替GitHub来发送推送事件以触发我们的网络应用程序在Travis CI上开始构建。
有用的文档
我希望这些信息有用。如果您有任何其他问题,请告诉我,我很乐意以任何方式提供帮助。 :)