Mem*_*eak 6 mercurial-hook jenkins mercurial-commit
有没有办法在单个存储库中指定一个钩子?
现在我们已经在"/ etc/mercurial/hgrc"文件中指定了钩子,但每次构建两次时,它都会为每个存储库中的每个提交构建.
所以我们想要为每个存储库指定一个构建.
这就是我们实现钩子的方式:
[hooks]
changegroup = curl --silent http://jenkins:8080/job/ourProject/build
Run Code Online (Sandbox Code Playgroud)
它在Ubuntu服务器上.
小智 7
您应该在.hg目录中创建,/home/user/mercurial/.hg/hgrc并添加钩子:
[hooks]
commit.jenkins = wget -q http://localhost:8080/mercurial/notifyCommit?url=file:///home/user/mercurial > /dev/null
incoming.jenkins = wget -q http://localhost:8080/mercurial/notifyCommit?url=file:///home/user/mercurial > /dev/null
Run Code Online (Sandbox Code Playgroud)
好的,我找到了我要找的东西(我是赏金;我的案例是具有特定分支的 Mercurial)。
在 main/origin 存储库中,放置一个带有所需构建脚本的钩子。Pregroupchange是为了维护传入的更改。我在主存储库上安装了一个 rhodecode,它本身有自己的钩子。
这样,我仍然触发Jenkins,并且仍然有触发rhodecode推送通知和其他之后的更改。
[hooks]
pregroupchange = /path/to/script.extention
Run Code Online (Sandbox Code Playgroud)
在脚本中,放置您想要的操作,也是 Jenkins 的触发器。不要忘记在Jenkins:Job:Configure:Build Triggers:checkbox远程构建触发器中启用+将您的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
Run Code Online (Sandbox Code Playgroud)
对于原来的问题:
通过这种方式,您只需为所需的分支执行一次构建。挂钩仅适用于主存储库,以防您与多个克隆和多个开发人员一起工作。您可能有本地钩子,但不要为每个开发人员从本地触发 Jenkins。仅当推送到来时(提交、传入和组更改)从主存储库触发 Jenkins。您的本地挂钩用于其他内容,例如电子邮件、日志、配置等。
| 归档时间: |
|
| 查看次数: |
5462 次 |
| 最近记录: |