
远程触发Jenkins的Pipeline任务的并发问题处理
发布日期:2021-05-09 00:59:58
浏览次数:7
分类:博客文章
本文共 2085 字,大约阅读时间需要 6 分钟。
前文概述
本文是《远程触发Jenkins的pipeline任务》的续篇,上一篇文章实战了如何通过Http请求远程触发指定的Jenkins任务,并且将参数传递给Jenkins任务去使用,文末提到了有个并发问题待处理,这就是本文的内容:处理上一篇文章提到的遗留问题。
远程触发Jenkins的问题
对Jenkins服务来说,很有可能在某一时刻同时收到多个Http请求,并且这些请求都想触发同一个任务,在实际使用中发现此时Jenkins并不对每个请求都运行一次任务,接下来的实战,我们就来重现并解决此问题;
用Java代码实现多个并发请求
- 我们用代码来模拟同一时刻多个Http请求到达Jenkins的情况:写个Java程序,一次性发送10个Http请求,都是远程触发上一章的Jenkins任务的,参考源码如下:
package com.bolingcavalry;import com.alibaba.fastjson.JSONObject;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;public class App { public static void main( String[] args ) throws Exception { for(int i=0;i<10;i++) { JSONObject jsonObject = new JSONObject(); jsonObject.put("ref", "ref-"+i); jsonObject.put("repositoryURL","https://github.com/zq2599/jenkinsdemo.git"); jsonObject.put("branch", "master"); CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost("http://192.168.133.149:32049/generic-webhook-trigger/invoke?token=token-remote-test"); httpPost.addHeader("Content-Type", "application/json"); httpPost.setEntity(new StringEntity(jsonObject.toJSONString())); CloseableHttpResponse response = httpClient.execute(httpPost); response.close(); httpClient.close(); System.out.println("response code : " + response.getStatusLine().getStatusCode() + "\n"); } }}
- 执行上述Java代码,控制台输出如下图,返回码都是200,证明这10个请求全部成功了:
- 去Jenkins网页上却发现只执行了一次任务,但是10此请求的ref参数都被打印出来了,如下图:
- 10次请求,Jenkins只执行了一次任务,这样的结果显然不是我们想要的,经过摸索和尝试,终于找到了解决此问题的办法;
- 打开任务remote-test的设置页面,如下图,勾选红框1(This project is parameterized),点击红框2增加一个参数,再点击红框3增加一个字符串类型的参数:
- 在参数的编辑框中,Name字段填写ref,如下图红框所示,注意这个参数在上一篇文章中在Generic Webhook Trigger的参数中设置过,是个固定参数:
- 点击底部的Save按钮保存设置;
- 在此运行前面的Java程序,发起10个请求,这次Jenkins创建了10个任务了,如下图:
- 点开其中的一个查看日志,如下图,可见参数正确,并且任务执行成功:远程触发Jenkins任务的并发问题已经修复,如果您也遇到了类型问题,希望本文能给您一些参考。
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年03月21日 03时55分48秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
seo 回忆录百度基本概念(一)
2021-05-09
用ThreadLocal来优化下代码吧
2021-05-09
netcore中使用session
2021-05-09
Android 开发学习进程0.25 自定义控件
2021-05-09
多媒体文件格式全解说(下)--图片
2021-05-09
淘宝WAP版小BUG分析
2021-05-09
asp.net打印网页后自动关闭网页【无需插件】
2021-05-09
SQLServer 查看耗时较多的SQL语句(转)
2021-05-09
【Maven】POM基本概念
2021-05-09
【Java思考】Java 中的实参与形参之间的传递到底是值传递还是引用传递呢?
2021-05-09
【设计模式】单例模式
2021-05-09
【Linux】2.3 Linux目录结构
2021-05-09
java.util.Optional学习笔记
2021-05-09
远程触发Jenkins的Pipeline任务的并发问题处理
2021-05-09
Web应用程序并发问题处理的一点小经验
2021-05-09
entity framework core在独立类库下执行迁移操作
2021-05-09
Asp.Net Core 2.1+的视图缓存(响应缓存)
2021-05-09
RE套路 - 关于pyinstaller打包文件的复原
2021-05-09
【wp】HWS计划2021硬件安全冬令营线上选拔赛
2021-05-09