17

我无法使用 Jenkins+Gerrit。

这是我到目前为止得到的:

  • Jenkins 中的 Gerrit 触发器配置似乎没问题:当我推送一个新的变更集时,Jenkins 构建就会启动。

  • 我使用了这个: Jenkins:Gerrit Trigger 问题 的设置也能够“手动”启动它。

  • 至于我的配置,我有这样的东西:https ://stackoverflow.com/a/18347982/2248987 。分支说明符是 $GERRIT_BRANCH 和 Ref Spec 是 $GERRIT_REFSPEC

  • Gerrit 和 Git 各自工作得很好。访问似乎也可以。

这是我的问题。构建时(gerrit 触发或手动),日志输出为:

 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url ssh://user@host:29418/testproject # timeout=10
Fetching upstream changes from ssh://user@host:29418/testproject
 > git --version # timeout=10
using GIT_SSH to set credentials 
 > git -c core.askpass=true fetch --tags --progress ssh://user@host:29418/testproject refs/heads/master
 > git rev-parse origin/$GERRIT_BRANCH^{commit} # timeout=10
 > git rev-parse $GERRIT_BRANCH^{commit} # timeout=10
ERROR: Couldn't find any revision to build. Verify the repository and branch configuration for this job.
Finished: FAILURE

我被这条消息卡住了,尝试使用空仓库、非空仓库,以及有或没有“审查中”的变更集

4

6 回答 6

15

我曾经遇到过这个问题,现在我想我已经解决了,我指责 Jenkins UI 隐藏了一些基本的配置元素;)

这是修复之前我的 Jenkins 构建的输出:

Triggered by Gerrit: https://bbpcode.epfl.ch/code/15056
[EnvInject] - Loading node environment variables.
Building remotely on rh6.6-02 (amd64-RedHatEnterpriseServer 6.6 RedHatEnterpriseServer amd64-RedHatEnterpriseServer-6.6 rh6.x RedHatEnterpriseServer-6.6 amd64) in workspace /var/tmp/jenkins/workspace/datamining.nip-commons.gerrit
 > /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > /usr/bin/git config remote.origin.url ssh://bbpcode.epfl.ch/datamining/nip-commons # timeout=10
Fetching upstream changes from ssh://bbpcode.epfl.ch/datamining/nip-commons
 > /usr/bin/git --version # timeout=10
 > /usr/bin/git fetch --tags --progress ssh://bbpcode.epfl.ch/datamining/nip-commons +refs/heads/*:refs/remotes/origin/*
 > /usr/bin/git rev-parse 74e4ff18f54bd6e046f7af016614193f566adfe4^{commit} # timeout=10
ERROR: Couldn't find any revision to build. Verify the repository and branch configuration for this job.
Started calculate disk usage of build
Finished Calculation of disk usage of build in 0 seconds
Started calculate disk usage of workspace
Finished Calculation of disk usage of workspace in 0 seconds
Finished: FAILURE

解决方案

您需要打开构建配置并转到“源代码管理”部分,如下所示:

带有高级按钮的 Git 配置

现在您会注意到有一个“高级”按钮,单击它以显示额外的字段,如下所示:

带有 refspec 字段的 Git 配置显示

现在您可以在此处输入您的 refspec:$GERRIT_REFSPEC

现在要么重新触发失败的构建,要么放弃审查并提交一个新的,它应该可以工作。

现在我们有了适当的 refspec,这是 Jenkins 作业的输出:

Retriggered by user kerrien for Gerrit: https://bbpcode.epfl.ch/code/15056
[EnvInject] - Loading node environment variables.
Building remotely on rh6.6-02 (amd64-RedHatEnterpriseServer 6.6 RedHatEnterpriseServer amd64-RedHatEnterpriseServer-6.6 rh6.x RedHatEnterpriseServer-6.6 amd64) in workspace /var/tmp/jenkins/workspace/datamining.nip-commons.gerrit
 > /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > /usr/bin/git config remote.origin.url ssh://bbpcode.epfl.ch/datamining/nip-commons # timeout=10
Fetching upstream changes from ssh://bbpcode.epfl.ch/datamining/nip-commons
 > /usr/bin/git --version # timeout=10
 > /usr/bin/git fetch --tags --progress ssh://bbpcode.epfl.ch/datamining/nip-commons refs/changes/56/15056/2
 > /usr/bin/git rev-parse 74e4ff18f54bd6e046f7af016614193f566adfe4^{commit} # timeout=10
Checking out Revision 74e4ff18f54bd6e046f7af016614193f566adfe4 (dev)
 > /usr/bin/git config core.sparsecheckout # timeout=10
 > /usr/bin/git checkout -f 74e4ff18f54bd6e046f7af016614193f566adfe4
 > /usr/bin/git rev-parse FETCH_HEAD^{commit} # timeout=10
 > /usr/bin/git rev-list 2649d51369413cef4dfb7ec50939945005514cfa # timeout=10
Cleaning workspace
 > /usr/bin/git rev-parse --verify HEAD # timeout=10
Resetting working tree
 > /usr/bin/git reset --hard # timeout=10
 > /usr/bin/git clean -fdx # timeout=10
Triggering datamining.nip-commons.gerrit » default
datamining.nip-commons.gerrit » default completed with result SUCCESS
Started calculate disk usage of build
Finished Calculation of disk usage of build in  2 second
Started calculate disk usage of workspace
Finished Calculation of disk usage of workspace in 0 seconds
Finished: SUCCESS
于 2015-07-30T07:28:35.990 回答
5
  1. 将“要构建的分支 > 分支说明符”字段留空
  2. 单击 Advanced 按钮,并设置自定义 refspec: +refs/heads/feature/my-feature:refs/remotes/origin/feature/my-feature 使用这些设置,插件将正确执行提取,然后只签出“功能/我的功能”分支。
于 2015-04-16T11:57:08.780 回答
1

你可以尝试这样配置

  • Refspec = refs/changes/:refs/changes/
  • 要构建的分支= $GERRIT_REFSPEC

按照那里的完整配置

如果单击“立即构建”,Jenkins 将无法获取源代码,因为 $GERRIT_REFSPEC 在这种情况下不存在。

于 2016-08-31T06:49:14.103 回答
0

Replace $GERRIT_BRANCH with $GERRIT_REFSPEC

于 2015-03-16T01:02:59.897 回答
0

以下设置对我有用:在“高级”部分中使用 $GERRIT_REFSPEC 填充 Refspec。“分支说明符”可以为空白或任何有效值

于 2019-03-19T05:45:28.287 回答
0

经过大量的努力并密切关注日志,我终于找到了解决方案。

这只是我们都犯的配置错误。一旦选中复选框此项目已参数化 需要完成以下配置

在此处输入图像描述

在这里,我将参数名称命名为branchgit 现在在源代码管理中,我们需要专注于构建分支,其值应仅为“$branchgit”,如下图所示 在此处输入图像描述

于 2017-01-09T15:20:08.017 回答