Git钩子:在我推送到远程仓库后,我把它们放在哪里

时间:2017-11-16 20:25:34

标签: git github jenkins

我已经阅读了git hooks文档,我还在试图弄清楚我为某些事件放置git钩子的脚本,以及我如何管理它们:

前提条件:

  • 在某台机器A上创建裸git存储库foo
  • Jenkins在机器A上运行
  • 我将我的存储库foo克隆到机器B
  • 我对机器B上的foo做了一些更改
  • 将更改提交给B
  • 上的foo
  • 将更改推送至f
  • 假设主分支

所需行为: 在推到机器A之后,我希望Jenkins在机器A上启动构建

一台机器A,有一个钩子目录,里面有各种钩子脚本样本。 一台机器B,有一个带有各种钩子脚本样本的.git / hooks目录。

问题:

  • 我在哪里放置脚本以使Jenkins重建我的应用程序?在机器A或机器B上?
  • 这个名字是什么?推后?
  • 如果我把它们放在机器B上,如果删除我的foo克隆并重新克隆存储库,那么脚本是否会被删除?
  • 如果我重新克隆,我是否需要重新创建它们?
  • git是否在git版本控制下挂起了自己的版本,或者你只是管理它们没有源代码控制?

由于

1 个答案:

答案 0 :(得分:0)

  

我在哪里放置脚本以使Jenkins重建我的应用程序?

在运行Jenkins的机器上(在机器A上)。

  

这个名字是什么?推后?

你想要一个post-receive钩子(假设A是你的遥控器),which

  在所有参考之后推进时,

[...]在遥控器上运行   更新。它不接受参数,但通过stdin接收信息   以“”的形式。因为它是   在更新后调用,它不能中止该过程。

-

  

如果我把它们放在机器B上,如果我删除了我的foo克隆并重新克隆了存储库,那么脚本是否会被删除?

     

如果我重新克隆,我是否需要重新创建它们?

是。这是因为:

  

git是否在git版本控制下挂起了自己的版本,或者你只是管理它们没有源代码控制?

它们不是因为active hooks live in .git/hooks不受版本控制。有关详细信息,请参阅该答案。

那就是说,这可能是XY problem。您可能不希望专门用于触发构建,但使用Jenkins的轮询来扫描更改,这可能更容易管理。