如何通过脚本重新触发Jenkins中由Gerrit触发的失败CI构建任务?
能否通过脚本重新触发Gerrit触发的Jenkins CI构建?
当然可以,有几种常用的脚本化触发方式,具体如下:
1. 调用Jenkins REST API
这是最通用的方式,无需额外工具,用curl等HTTP工具就能实现:
- 前提是你拥有Jenkins的访问权限(账号密码或者API令牌都可以,推荐用API令牌更安全)
- 基础触发命令(无参数场景):
curl -X POST -u "你的Jenkins账号:API令牌或密码" "http://你的Jenkins地址/job/你的CI任务名称/build" - 如果需要关联特定Gerrit变更(比如重新构建某个变更集的某个补丁集),可以传递对应参数:
这里的参数名要和你Jenkins任务中配置的Gerrit参数完全一致,比如有些任务可能用curl -X POST -u "你的Jenkins账号:API令牌或密码" "http://你的Jenkins地址/job/你的CI任务名称/buildWithParameters?GERRIT_CHANGE_NUMBER=1234&GERRIT_PATCHSET_NUMBER=2"GERRIT_CHANGE_ID而非GERRIT_CHANGE_NUMBER,按需调整即可。
2. 使用Jenkins CLI工具
如果能直接访问Jenkins服务器或者可以使用CLI客户端:
- 先从你的Jenkins实例下载CLI jar包:访问
http://你的Jenkins地址/jnlpJars/jenkins-cli.jar - 触发构建的命令示例:
java -jar jenkins-cli.jar -s http://你的Jenkins地址/ build "你的CI任务名称" -p GERRIT_CHANGE_NUMBER=1234 -p GERRIT_PATCHSET_NUMBER=2
关键注意点
- 确保你的账号拥有该CI任务的构建权限,否则会触发权限报错
- 如果任务是参数化构建,必须传递正确的Gerrit相关参数,否则构建可能无法正确关联到目标代码变更,甚至执行失败
- 若是流水线类型的任务,参数名要和流水线脚本中定义的参数保持一致
内容的提问来源于stack exchange,提问作者Raparthi Bhargav
相关产品推荐
相关产品推荐

