Github + Jenkins >> 如何在代码仓库“提交并推送”时触发构建?

4
  • 我已经在本地计算机上设置了Jenkins实例,并可以通过- "http://localhost:8080" 访问它。
  • 创建了一个公共的Git存储库,并将我的ASP.NET MVC项目添加到其中。
  • 同时配置了Jenkins来构建该项目,它的工作非常好。

但是,这是手动触发。也就是说,只有用户在Jenkins控制台上点击“立即构建”时才会触发构建。

实际上,我的要求是当更改提交并推送时触发构建。(也就是在提交更改时“提交并推送”)。

我参考了很多博客和文章,并了解了Git钩子。我也尝试创建“post-receive”钩子。我在源代码映射的位置(例如,“E:\Git\test-jenkins.git\hooks”)创建了一个钩子。

#!/bin/bash
curl POST "http://localhost:8080/job/Test-Jenkins/build" --data delay=0sec

但这并没有起作用。在“提交和推送”时,构建从未被触发。 当我尝试直接将URL复制到浏览器中时,会触发构建,因此我相信URL没有问题。 但是脚本本身没有被执行。
请问有人能提供如何解决这个问题的建议吗?
非常感谢任何对此的帮助。
2个回答

2
由于Github服务器无法访问本地托管的Jenkins服务器以触发构建,因此需要一个静态IP地址或将DNS条目映射到动态IP。同时,需要为外部访问打开8080端口。只有这样,Github才能通过其Webhook访问您的本地实例。希望对您有所帮助:)

请参考文章中的第8步 >> http://www.frictionlesscode.com/have-continuous-integration-with-jenkins-in-30-mins/ 在这里,作者在配置post-receive git hook时仅使用了localhost(没有IP地址)。我相信这应该在localhost上工作-因为git hook在本地计算机上,从那里可以访问localhost。你认为这仍然是因为只有localhost吗? - Nirman
2
对于未来的读者,@Nirman在他的评论中提供的文章描述了如何在连接了post commit钩子的本地git存储库上在PC上运行Jenkins - 因此文章作者不需要外部可访问的IP地址 - 他没有使用GitHub。 - Pauli Price
@marfarma:你说得对,在OP的情况下,由于他正在使用Github,他需要在公共IP上托管Jenkins。 - Arpit Aggarwal

0

我认为你应该在Github的存储库设置中使用“Webhook和服务”。请参见下面的图片:jenkins + github

要实现它,您必须拥有Jenkins的公共域名。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接