有没有一种方法可以在单个存储库中指定钩子?
现在,我们在“ / etc / mercurial / hgrc”文件中指定了该钩子,但是每次它生成两次,并且为每个存储库中的每次提交生成。
因此,我们要为每个存储库指定一个构建。
这是我们实现钩子的方式:
[hooks]
changegroup = curl --silent http://jenkins:8080/job/ourProject/build
它在Ubuntu服务器上。
好的,我找到了想要的东西(我是赏金;我的案件是Mercurial,有特定分支)。
在主/原始存储库中,放置一个具有所需构建脚本的钩子。Pregroupchange
是保持传入的更改。我在主存储库上安装了一个rhodecode,它本身具有自己的钩子。
这样,我仍然可以触发Jenkins,并且在触发rhodecode推送通知和其他通知之后仍可以进行更改。
[hooks]
pregroupchange = /path/to/script.extention
在脚本中,放置所需的动作,同时也是詹金斯的触发器。不要忘记在Jenkins:Job:Configure:Build Triggers:checkbox
Trigger builds中远程启用+将您的desired_token
(这里是Mercurial)放在这里。
因为您不能仅触发Mercurial中的特定分支,所以我以这种方式找到了分支名称。另外,要从远程脚本触发,您需要在Jenkins中授予整体匿名访问权限,或创建具有凭据的特定用户并将其放入触发URL。
重击示例:
#!/bin/bash
BRANCH_NAME=`hg tip --template "{branch}"`
if [ $BRANCH_NAME = "branch_name" ]; then
curl --silent http://jenkins_domain:port/path/to/job?token=desired_token
fi
对于原始问题:
这样,您只为所需分支执行一个构建。挂钩仅用于主存储库,以防您使用多个克隆和多个开发人员。您可能拥有本地的钩子,但不要对每个开发人员都从本地触发Jenkins。仅在进行推送(提交,传入和组更改)时才从主存储库触发Jenkins。您的本地挂钩用于其他用途,例如电子邮件,日志,配置等。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句