当前位置: 首页 > 面试题库 >

让詹金斯从Mercurial提交构建项目

朱修德
2023-03-14
问题内容

有没有一种方法可以在单个存储库中指定钩子?

现在,我们在“ / 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:checkboxTrigger 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。您的本地挂钩用于其他用途,例如电子邮件,日志,配置等。



 类似资料:
  • 问题内容: 我在Mercurial回购中托管了一个Gradle多项目。我想以这种方式设置我的Jenkins:如果我仅将更改提交到1个子项目中,则仅会构建该子项目并将其发布到我的Nexus存储库中。 有人可以给我提示吗?还是完全有可能? 问题答案: 在这里留下将来的最终解决方案。 我们为每个子项目创建了一个单独的Jenkins作业。Jenkins的Mercurial插件允许指定“模块”: 通过在存储

  • 我要求允许在单个从节点的单个Jenkins作业中进行并发构建。 因此,我启用了throttle concurrent build选项,并发布了我能够进行并发构建的帖子。但是,如果我给MaxNo of concurrent builds 7或大于7,那么它总是一次处理6个构建,第7个构建处于等待状态。 在这种情况下有没有限制?

  • 问题内容: 我们在同一个SVN存储库中有一个包含两个子项目的项目。例如: 项目的构建应包括两个子项目的构建结果。为了使构建速度更快,我仅在分别更改了SVN的情况下(在svn:// ip / svn / trunk / subproject1中)才运行subproject1的构建。对于subproject2同样 最好的方法是什么?我可以做一份工作吗?在这种情况下,我应该如何定义构建触发器? 还是我需

  • 问题内容: 我想要一个可以通过作业名称卷曲的jenkins build / CI作业的API。jenkins是否有可用的此类API? 问题答案: 2小时前,我在这里发布了使用Jenkins REST API和Curl的解决方案:使用批处理脚本开始Jenkins构建 这是curl命令的示例(对于带有参数的作业): 和没有参数的工作: 如果您不想使用用户名/密码,则可以为您的Jenkins用户生成一个

  • 问题内容: 我试图通过在提交钩子中使用此URL来触发我的Jenkins项目 并且没有被触发。但是,当我在Web浏览器中键入此URL时,它将触发我的构建。 当我在命令提示符下尝试时,出现错误 错误404 例外: Stacktrace: 由Winstone Servlet Engine v0.9生成。 2014年4月22日星期二10:10:10 有人可以告诉我我在做什么错吗? 问题答案: 首先,按照E

  • 有没有可能让詹金斯使用真正的浏览器而不是无头浏览器?我正在运行一些用TestNG编写的测试(使用Selenium webdriver)。当我运行testng时。在Eclipse中,浏览器启动并运行测试。但当我使用Jenkins并用maven运行测试时,它不会启动任何浏览器。