Jenkins gerrit 触发器在构建时未获取我的更改

标签 jenkins jenkins-plugins gerrit

我已经用 gerrit 触发器插件配置了 jenkins 来验证我们推送到 gerrit 的每个提交。
我期待这个触发器包含我对原始仓库的最新更改并进行构建。
但是,它仅克隆 repo 项目并在没有我更改的情况下进行编译。

下面是我在 jenkins 中对 gerrit 触发器的配置设置。

Refspec: $GERRIT_REFSPEC 
Branches to build: $GERRIT_BRANCH 
Build trigger: Gerrit event 
Trigger on: patch set created 
Gerrit project: added project and branch

以下是构建输出消息
Triggered by Gerrit: http://ci-test1/22
Building on master in workspace /var/lib/jenkins/jobs/Build_Adserver_4.7/workspace
Checkout:workspace / /var/lib/jenkins/jobs/Build_Adserver_4.7/workspace - hudson.remoting.LocalChannel@733aee56
Using strategy: Default
Last Built Revision: Revision 701a75ef38aa191ac1b806c48e6b3451671888f6 (ads/4.7)
Fetching changes from 1 remote Git repository
Fetching upstream changes from abc
Commencing build of Revision 701a75ef38aa191ac1b806c48e6b3451671888f6 (ads/4.7)
Checking out Revision 701a75ef38aa191ac1b806c48e6b3451671888f6 (ads/4.7)
[workspace] $ /bin/sh -xe /tmp/hudson1375188638196718521.sh
+ echo 'Started Build'
Started Build
+ echo ..................
..................
+ echo 'Build Finished'
Build Finished
Finished: SUCCESS

这里 701a75ef38aa191ac1b806c48e6b3451671888f6 是 repo 分支的 HEAD,8cbda558adcad4fb7eb714e0b3fb98a6fbf5811c 是我最新版本的 SHA-id。

我也从 jenkins 工作区进行了验证,它不包括我的更改。

抱歉,如果我遗漏了任何要提及的信息。请告诉我
如果我在这里遗漏了什么,请帮助我。

最佳答案

使用 Jenkins 1.532.2 Git 客户端插件 1.6.2 Git 插件 2.0.1 Git 触发器 2.11.0

以下是配置 Gerrit 触发器的步骤(根据内存,希望一切正常):

  • 安装插件“Gerrit Trigger”、“Git Plugin”和“Git Client Plugin”
  • 在主 jenkins 配置(HOME->Manage Jenkins)中,单击 Gerrit Trigger。
  • 创建服务器并配置它。使用“测试连接”来确保它工作正常。
  • 最后,在“控制”下按“开始”(不知道它的作用是什么,或者它是否真的需要,但我做到了)。
  • 转到您的项目配置 (MYPROJECT->Configure)
  • 检查“构建触发器”下的“Gerrit 事件”
  • 在新添加的菜单中,选择您的服务器、触发器等。
  • 对于 Gerrit 项目,我使用“Plain”和“MYPROJECT”作为模式
  • 对于分支,我使用“路径”和“**”作为模式(构建所有分支)
  • 在“源代码管理”下(从我的 UI 中的触发器开始),单击“Git”
  • 设置存储库 URL,这里 $USER 为我匹配,否则写正确的用户 $GERRIT_SCHEME://$USER@$GERRIT_HOST:$GERRIT_PORT/$GERRIT_PROJECT
  • 指定一个分支:$GERRIT_BRANCH
  • 在右侧的“Repositories”下,单击“Advanced”,为“Refspec”输入 $GERRIT_REFSPEC
  • 单击右下方的添加,然后选择“选择构建内容的策略”
  • 选择“Gerrit 触发器”

  • 不是很直观,但它应该可以工作。我建议确保正在构建正确的 SHA1 Id。

    如果遇到Error stderr: fatal: Couldn't find remote ref $GERRIT_REFSPEC

    enter image description here

    关于Jenkins gerrit 触发器在构建时未获取我的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19060650/

    相关文章:

    git - 我如何列出对我在 gerrit 中的更改发表的所有评论?

    git - 有没有办法记录 "unfetch"?

    ios - 在 Jenkins 上使用 faSTLane 构建失败失败

    git - Jenkins 作业通知失败,显示 "No git consumers for URI ..."

    linux - 如何让 Selenium 在 GCP 中与 Jenkins2 一起工作

    jenkins - Jenkins 中的 Selenium 网格设置

    git - 补丁没有被推送到 gerrit

    jenkins - VHDL 测试结果转换为 jUnit(或其他 Jenkins 认可的)格式

    docker - 无法使用Jenkins的kubernetes-plugin构建docker镜像

    jenkins - 将变量从 shell 脚本传递到 jenkins