标签: gerrit-trigger

Jenkins的Gerrit触发器找不到任何修改版本

我在使用Jenkins + Gerrit时遇到了麻烦.

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

  • Jenkins中的Gerrit Trigger配置似乎没问题:当我推出一个新的变更集时,会启动Jenkins构建.

  • 我用过这个: Jenkins:Gerrit Trigger问题的 设置也能够"手动"启动它.

  • 至于我的配置,我有这样的东西:https://stackoverflow.com/a/18347982/2248987.Branch Specifier是$ 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 …
Run Code Online (Sandbox Code Playgroud)

git gerrit jenkins gerrit-trigger

14
推荐指数
2
解决办法
1万
查看次数

Jenkins Gerrit 触发器 - “/var/lib/jenkins/.ssh/id_rsa”不是有效的密钥文件

我已经按照 Jenkins 安装文档中的文档在 Ubuntu 服务器中安装了 Jenkins ,并且正在尝试设置Gerrit Trigger Plugin。在设置管理设置部分时,SSH 密钥文件部分始终给出错误“/var/lib/jenkins/.ssh/id_rsa”不是有效的密钥文件。

我已在默认位置“/var/lib/jenkins/”中以 Jenkins 用户身份生成了 ssh 密钥

ssh-keygen我尝试使用,生成密钥ssh-keygen -t rsassh-keygen -t rsa -b 2048并且密钥是使用或不使用密码短语生成的,也作为 pem 文件生成,但仍然显示为无效密钥文件。

这些文件位于“/var/lib/jenkins/.ssh/”位置

jenkins@jenkins:~/.ssh$ ls -la
total 16
drwx------  2 jenkins jenkins 4096 Oct  9 14:18 .
drwxr-xr-x 17 jenkins jenkins 4096 Oct  9 14:18 ..
-rw-------  1 jenkins jenkins 2602 Oct  9 14:05 id_rsa
-rw-r--r--  1 jenkins jenkins  569 Oct  9 14:05 …
Run Code Online (Sandbox Code Playgroud)

openssh ssh-keys jenkins jenkins-plugins gerrit-trigger

6
推荐指数
1
解决办法
3082
查看次数

Jenkins Gerrit Trigger 插件的“禁止文件路径”的准确使用

Jenkins Gerrit 触发器插件有一个按钮“添加禁止文件路径”,但实际上没有太多可用的文档。
那么它的确切行为是什么?

  • 是否抑制触发,如果一个改变的文件相匹配?
  • 或者如果所有更改的文件都匹配,它是否会禁止触发器?
    (换句话说:只有匹配的文件发生了变化)
  • 我想它“覆盖”了“添加文件路径”的匹配项,不是吗?
  • 它仅适用于目录名还是适用于文件名?

如果
“文件路径”=^((?!_abc)(?!_def).)*$
行为等于:
“禁止文件路径”= ^.*_abc$|^.*_def$

jenkins gerrit-trigger

5
推荐指数
1
解决办法
2557
查看次数

Jenkins Gerrit轮询失败:不断触发构建

因此,我们在Jenkins CI构建管理器上使用Gerrit Trigger(2.23.0)并使用docker容器进行实际构建.

Gerrit Repo轮询最近出现在我们的一些分支机构中的问题是失败并导致它每次都"检测到变化",所以尽管没有变化,它仍在不断重建.

检查Gerrit Repo Polling Log以查找任何受影响的作业,并提供以下输出之一:

Started on Feb 1, 2017 3:12:25 PM
Polling SCM changes on aosp-host
[workspace] $ repo init -u http://xxx.xxx.xxx.xxx/git/project/platform/manifest.git -b branch -m branch.xml
Get https://gerrit.googlesource.com/git-repo/clone.bundle
Get https://gerrit.googlesource.com/git-repo
fatal: Not a git repository: '/home/jenkins/workspace/.repo/manifests.git'
fatal: Not a git repository: '/home/jenkins/workspace/.repo/manifests.git'
fatal: cannot obtain manifest http://xxx.xxx.xxx.xxx/git/project/platform/manifest.git
Done. Took 1 min 19 sec
Changes found
Run Code Online (Sandbox Code Playgroud)

或者,如果构建已经构建(gerrit在进行scm轮询之前等待构建完成)

Started on Feb 2, 2017 3:24:15 AM
Polling SCM changes on aosp-host
[workspace] $ repo init -u …
Run Code Online (Sandbox Code Playgroud)

jenkins repo gerrit-trigger

5
推荐指数
0
解决办法
496
查看次数

Jenkins Gerrit-Trigger在成功运行作业后未报告+1

我目前正尝试使用Jenkins Gerrit-Trigger发出"+1 Verified",但有些原因是+1失败了.

由于插件能够成功地向相关的Gerrit变更集发出"-1 Verified"和"Build Started"注释,因此权限似乎是有序的.

当工作成功时,"+1已验证"永远不会实现.检查Jenkins日志显示与作业相关的最后一个条目显示403响应错误:

Jenkins日志也显示相同的请求:

com.sonymobile.tools.gerrit.gerritevents.workers.rest.AbstractRestCommandJob run
SEVERE: Gerrit response: Forbidden
Run Code Online (Sandbox Code Playgroud)

格里特也接受了请求和403响应:

"POST /a/changes/tdmdev~develop~Id917dda3449bf9af738ad7f122adaecba70004bd/revisions/7eab7e90c6b7e66f23faaac7cbfd40d8c9c93726/review HTTP/1.1" 403 46 - "Apache-HttpClient/4.5.2 (Java/1.8.0_77)"
Run Code Online (Sandbox Code Playgroud)

我已经过测试,看看是否有任何关于API的问题,并且使用Gerrit日志中的URL成功报告了"+1 Verify":

curl -v -X POST -d '{"reviewer":"srv_devops_jenkins","labels":{"Verified":"+1"}}' -H "Content-Type: application/json" --user "srv_devops_jenkins:***" --digest http://foobar.com:8080/a/changes/tdmdev~develop~Id917dda3449bf9af738ad7f122adaecba70004bd/revisions/7eab7e90c6b7e66f23faaac7cbfd40d8c9c93726/review
Run Code Online (Sandbox Code Playgroud)

Gerrit Trigger配置为支持RESTClient请求,我已确保以下内容:

  • RESTClient凭据是正确的,单击"测试REST连接"将返回成功响应.
  • 勾选"启用已验证"
  • 重新启动Jenkins中的Gerrit Trigger连接

我成功的唯一方法是禁用"REST API"并通过SSH连接发出请求,唯一的缺点是我们需要在自定义标签上发出+ 1,据我所知,这些标签不受支持通过Gerrit-Trigger通过SSH.

Versions:
Jenkins: 2.48
Gerrit-Trigger: 2.23.0
Gerrit: 2.12
Run Code Online (Sandbox Code Playgroud)

感谢您的任何帮助,您可以提供.

gerrit jenkins gerrit-trigger

5
推荐指数
1
解决办法
3516
查看次数

如何在 Jenkinsfile 中的 Jenkins 管道代码中添加 gerrit-trigger 事件

我想在 Jenkinsfile 中添加 gerrit 触发事件,就像我们在 JobDSL 中一样,

        triggers {
            upstream('pipeline_properties', 'UNSTABLE')
            gerrit {
                events {
                    refUpdated()
                }
                project('reg_exp:jenkins', ["plain:${jenkins_branch}"])
            }
        }
Run Code Online (Sandbox Code Playgroud)

这在管道代码中是否可行,可以在触发器下找到诸如 cron 和内容之类的东西,但无法获得如何在其中添加 gerrit-trigger 事件的参考。

gerrit-trigger jenkins-pipeline

4
推荐指数
1
解决办法
3901
查看次数

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

我已经用gerrit触发器插件配置了jenkins,以验证我们审阅到gerrit的每个提交。我希望此触发器将我的最新更改包含在原始回购中并进行构建。但是,它仅克隆回购项目并进行编译,而无需我进行更改。下面是我在詹金斯中的Gerrit触发器的配置设置。

Refspec: $GERRIT_REFSPEC 
Branches to build: $GERRIT_BRANCH 
Build trigger: Gerrit event 
Trigger on: patch set created 
Gerrit project: added project and branch
Run Code Online (Sandbox Code Playgroud)

git jenkins gerrit-trigger

3
推荐指数
1
解决办法
1385
查看次数

如何在jenkins中使用gerrit触发器插件为变更集执行Jenkinsfile?

我们在Jenkins中使用gerrit-trigger,当推送新的变更集进行审核时会触发构建.

现在我们要介绍管道并使用解决方案在scm中定义管道

因此,我们期望在构建被触发时,管道插件下方可以检查此refspec

在此输入图像描述

但是${GERRIT_REFSPEC}这里没有效果,它仍然可以检查主人

 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision adf5d360582b1b24f088cfa8ac0f0ebf64a57692 (refs/remotes/origin/master)
Commit message: "DO:CI End of summer"
 > git config core.sparsecheckout # timeout=10
 > git checkout -f adf5d360582b1b24f088cfa8ac0f0ebf64a57692

有什么建议它是如何工作的?

git gerrit jenkins gerrit-trigger jenkins-pipeline

3
推荐指数
1
解决办法
4887
查看次数

如何在jenkins git插件中下载一个特定的Gerrit更改集?

通常,我们在jenkins中使用gerrit触发器插件来下载gerrit变更集。

但是在某些情况下,我们想直接下载特定的变更集。

例如openstack Change#503032

git pull git://git.openstack.org/openstack/tripleo-quickstart-extras refs/changes/32/503032/2
Run Code Online (Sandbox Code Playgroud)

并设置Refspecrefs/changes/32/503032/2像混帐回购协议

在此处输入图片说明

并启用Honor refspec on initial clone其他行为,例如

在此处输入图片说明

但是我在控制台日志中出现错误

从git://git.openstack.org/openstack/tripleo-quickstart-extras获取上游更改
 > git fetch --tags --progress git://git.openstack.org/openstack/tripleo-quickstart-extras refs / changes / 32/503032/2 --depth = 1
 > git rev-parse refs / remotes / origin / master ^ {commit}#timeout = 10
 > git rev-parse refs / remotes / origin / origin / master ^ {commit}#timeout = 10
 > git rev-parse origin / master ^ {commit}#timeout = 10
错误:找不到要构建的任何修订。验证此作业的存储库和分支配置。 …

git jenkins jenkins-plugins gerrit-trigger

1
推荐指数
1
解决办法
933
查看次数

Jenkins Gerrit 触发器插件提供编码的 GERRIT_CHANGE_COMMIT_MESSAGE 和 GERRIT_EVENT_COMMENT_TEXT

Jenkins Gerrit 触发器插件为GERRIT_CHANGE_COMMIT_MESSAGEGERRIT_EVENT_COMMENT_TEXT提供编码值

我如何解密它 - 使其易于阅读?

plugins comments commit-message jenkins gerrit-trigger

1
推荐指数
1
解决办法
1646
查看次数