问题标签 [gerrit-trigger]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jenkins - 我们可以用变量在詹金斯中将消息自定义回gerrit吗?
在 Jenkins gerrit-trigger plugin中,我们可以自定义构建消息,不知道我们是否可以在里面使用变量?
像下面的${PORT}
?
在 2017.03.31 更新,看起来已经有问题JENKINS-37885
gerrit-trigger - Gerrit 触发器在 Windows 上看不到我的 SSH 密钥文件
Gerrit 触发器返回“C:\Windows\System32\config\systemprofile.ssh\id_rsa”不存在。
无论文件存在,Jenkins 都可以使用它克隆 repos。这是在 Windows 服务器 2016 上
jenkins - 我可以在 Gerrit 补丁上进行声纳扫描吗?
作为我在 Gerrit 中的预检工作流程的一部分,我想配置 sonarqube 以对提交的补丁执行扫描,我在我的 Jenkins 中使用 sonar-gerrit 插件并配置 gerrit-trigger 来运行此分析作业。此作业配置为预览模式并运行分析,但分析发生在不包括提交的补丁集的存储库上。我如何确保在补丁集上运行分析?
jenkins - 为现有更改上传新补丁集时如何触发作业
第一次上传补丁集时,我的工作效果很好。之后,当在相同的 gerrit 更改上再次上传新的补丁集时,它不会再次触发。我已经尝试了添加评论的触发器包含正则表达式。我目前在同一个工作中有这些触发器:补丁集创建评论添加包含正则表达式
jenkins - 使用声纳 gerrit 插件的 gerrit jenkins 集成问题
Gerrit-Trigger 插件可以在 Gerrit 仪表板上发表评论,但 sonar-gerrit 插件没有发表评论并出现如下所示的错误:
Gerrit-Trigger 插件:2.23
格里特:2.7
Sonar-Gerrit 插件:2.0
声纳:5.6
詹金斯:2.32
Jenkins 工作级别日志
错误:步骤“将 SonarQube 问题发布为 Gerrit 评论”失败:无法发布评论:请求不成功。消息:服务器错误。状态码:500。内容:内部服务器错误。完成:失败
詹金斯系统日志:
从以下位置获取声纳报告:/opt/jenkinsnew/workspace/sonargerrit/.sonar/sonar-report.json
2017 年 5 月 17 日晚上 8:22:45 信息 org.jenkinsci.plugins.sonargerrit.SonarToGerritPublisher logMessage
报告已加载并包含 213 个问题
2017 年 5 月 17 日晚上 8:22:45 信息 org.jenkinsci.plugins.sonargerrit.SonarToGerritPublisher logMessage
连接到 Gerrit:服务器名称:GBProjectnewserver。更改编号:168,PatchSetNumber:1
2017 年 5 月 17 日晚上 8:22:45 严重 org.jenkinsci.plugins.sonargerrit.SonarToGerritPublisher 执行
无法发表评论:请求不成功。消息:服务器错误。状态码:500。内容:内部服务器错误。com.urswolfer.gerrit.client.rest.http.HttpStatusException:请求不成功。消息:服务器错误。状态码:500。内容:内部服务器错误。在 com.urswolfer.gerrit.client.rest.http.GerritRestClient.throwHttpStatusException(GerritRestClient.java:467) 在 com.urswolfer.gerrit.client.rest.http.GerritRestClient.checkStatusCodeError(GerritRestClient.java:454) 在 com.urswolfer .gerrit.client.rest.http.GerritRestClient.checkStatusCodeServerError(GerritRestClient.java:447) 在 com.urswolfer.gerrit.client.rest.http.GerritRestClient.checkStatusCode(GerritRestClient.java:433) 在 com.urswolfer.gerrit.client .rest.http.GerritRestClient.request(GerritRestClient.java:227) 在 com.urswolfer.gerrit.client.rest。
jenkins - Gerrit 触发器不会自动评论 - 来自 jenkins 的错误:要提交的 url 无效
我试图弄清楚为什么 Jenkins 中的 Gerrit Trigger 不向工作中的 Gerrit 输出报告(留下评论)。
作业由 gerrit 触发,在构建中使用了正确的 git 更改,作业完成,构建控制台中没有错误。
ssh -p $GERRIT_PORT <gerrit_user>@$GERRIT_HOST gerrit review -m '"Comment"' --verified +1 $GERRIT_PATCHSET_REVISION
虽然使用会发表评论。
这是来自 var/log/jenkins 的唯一日志:
从用户帐户 POV、Jenkins 帐户和节点帐户不是有效的 gerrit 帐户,有一个预定义的 gerrit 帐户,其密钥对用于 Gerrit 触发器配置和作业配置。
Gerrit Trigger 没有回复的问题可能是什么?
java - 带有参数的 Jenkins Gerrit 触发器
我们使用 Jenkins 和 Gerrit 来触发 Jenkins 上的某些工作。我们Trigger on
Comment Added Contains Regular Expression
用来运行作业。mvnw
该作业使用带有一些命令行参数的maven 命令执行 shell 脚本,用于执行 maven。
其中一项工作具有正则表达式,例如.*(\+WEB_TEST|\+WT).*
. 因此,每当我们希望运行 Web 测试时,我们都会+WT
在 gerrit 补丁集上添加注释。现在我们想通过这个注释将一个可选参数传递给 maven。
完全可以吗?
jenkins - Gerrit 推送到新分支不会触发 Jenkins 工作
我的 Jenkins 有一个非常特殊的问题。Gerrit 触发器通常在第一个主分支上工作。当我创建一个新分支并向其推送某些内容时,根本不会触发构建。即使我执行 Query 和 Gerrit 触发补丁,它也不起作用。但是,当我打开作业配置时,保存并手动触发它就可以了。下一次连续推送再次正常工作。
jenkins - 使用 Gerrit 触发器的 Jenkins 多分支
一点背景...
我们已经使用 Gerrit + Jenkins 一年多了,取得了巨大的成功。添加代码审查和构建验证使我们的开发人员对他们提交到源代码的内容更加负责。当我们的项目开始时,我为我的团队设置了两者之间的集成。
现在,我希望能够为使用 Gerrit 进行代码审查的库进行多分支构建。一旦 CR 通过经过验证的构建并且更改使其成为源代码,我希望进行分发构建(Gerrit 触发器可以侦听此事件)。
简单示例
我在下一节中写了一个详细而具体的示例来说明我正在尝试做的事情
为了便于交流我正在尝试做的事情,我将参考项目 A 和库 B。两者都在 Gerrit 中用于 CR 和构建验证。这为我们分发的每个分支提供了 2 个 Gerrit 触发构建以及每晚构建。
图书馆 B 被项目 A 使用(通过凉亭)。当用户向库项目提交更改时,Gerrit 触发器会选择此更改,然后 Jenkins 会构建更改。审核并提交更改后,将手动启动 dist 构建。然后,此构建更新包中的 dist。这将在项目 A 的下一个版本(或当用户手动更新 bower 时)中得到支持。
一个更详细的例子
我们创建了一个库,它是一组可消耗的通用样式和 JavaScript,可以在我们组织的不同 Web 应用程序项目中使用。我们尝试尽可能多地创建大多数人都熟悉的 bower.io 包(我们模仿 Bootstrap)。该库的 git 分支布局旨在模仿 gitflow;开发分支总是下一个版本,等等。
该库有一个src/
包含所有基本代码等的文件夹。该bower.json
文件指向一个dist/
包含已编译、缩小等文件的文件夹。正是通过这个设置,我们在我们的 Web 应用程序中使用了这个包。
使用 Gerrit,我们审查了我们团队为此项目提交的所有提交。这相当容易。带有 Gerrit-Trigger 的 Jenkins 会收到有关新更改的通知并构建补丁集。我们告诉开发人员不要在文件夹中提交更改,dist/
因为它会带来合并的噩梦,但是文件在那里,因此库的每个使用者都不必进行编译输出。
在这一点上,希望对我们正在做的事情有一个很好的高级视图。现在可能更容易解释这个问题。
当我们为我们的主要 Web 应用程序的 QA 团队进行日常构建时,我们会做bower install
. 在我们的 bower.json 文件中,我们指向#develop
ref。这意味着 Web 应用程序将使用库dist/
文件夹中最新的内容。dist/
如果在 Web 应用程序的每日 QA 构建之前尚未完成对更新文件夹的库的提交,则该库实际上不会在该构建中更新。
这让 QA 很难过。他们向开发人员发送一封电子邮件,说明已关闭的票证实际上还没有准备好进行测试。这让我很沮丧,因为我又收到了一封来自开发人员的电子邮件,询问 WTF。
我希望发生的事情
- 为每个项目定义一个多分支管道构建,以便每个分支不需要自己的每日/每晚构建作业。
- 对于库作业,除了用于夜间构建的管道外,它还会在补丁集提交到源代码时启动。
特别是关于第 2 点和上述详细示例:我希望以dist/
受控方式自动更新文件夹,而无需开发人员交互,并且每当潜在客户向源提交批准的补丁集时。
对于第 1 点和关于这个问题,我不是在为项目 A 构建管道构建寻求帮助。
问题
我为库项目创建了一个多分支管道。在其中我想提取源代码:
这行得通!但是,它只是为分支提取最新的。它没有定义构建发生的时间。我打开了 SCM 轮询。
构建完成后,我有一个步骤可以执行此操作:
这里的问题是推送导致轮询触发并进入无限循环。
我想做的是使用 Gerrit-Trigger 的能力在合并更改/补丁时触发构建(提交已发生)。我希望它不是一个自由形式的工作,而是一个管道构建,以便它利用 Jenkins 文件。
我怎样才能让它工作,以便 Gerrit 触发器告诉何时进行构建?
其他解决方法尝试
我确实想出了一种跳过构建的方法。它涉及在构建运行时查看最后的提交消息。然后我可以跳过管道中的所有其他步骤。这只是意味着总会有两个构建,一个包含所有管道步骤,然后一个仅包含“Checkout”阶段。不理想。
jenkins - Sonarqube 没有向 Jenkins 和 Gerrit 报告结果
背景:现在我有一个由一些 Gerrit 事件触发的 Jenkins 自由式工作。当它被触发时,它会下载更改并对它们运行 Sonarqube 分析。分析完成后,应该在 Gerrit 上发表评论,详细说明结果。
不幸的是,无论 Sonarqube 分析的结果如何,评论总是说“未发现违反 sonarqube 的行为”。
版本:
詹金斯 v2.46.2
Gerrit 触发器插件 v.2.24.0
声纳 Gerrit 插件 v2.0
Sonarqube Scanner for Jenkins 插件 v2.6.1
声纳库 v6.3.1
格瑞特 v2.13.5
Jenkins 控制台的输出: