使用API启动Jenkins Job
第一种:可通过http进行调用
第二种:Linux下使用 Curl进行调用
第一步 配置TOKEN
image.png一、HTTP请求
Step2.请求后发现403
参考:https://www.jianshu.com/p/aa0dc1157599
按照楼上的解决办法试了一下
http://127.0.0.1:8080/job/demo/build?token=TOKEN_TEST
可以启动任务
然后又用代码写了一下 OK ~
代码示例:
package job;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import java.io.IOException;
public class HttpRunjob {
public static void main(String[] args) throws IOException {
String url = "http://localhost:8080/job/";
String JksjobName = "demo";
String ADMIN_TOKEN_STRING = "TOKEN_TEST";
String jksjob_url_new = url
+ JksjobName
+ "/buildWithParameters?token="
+ ADMIN_TOKEN_STRING;
System.out.println("当前发送的请求为:" + jksjob_url_new);
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpget = new HttpGet(jksjob_url_new);
CloseableHttpResponse response = httpClient.execute(httpget);
System.out.println("返回值状态码为"
+ response.getStatusLine().getStatusCode());
// 返回码为201,表示“请求成功”
if (response.getStatusLine().getStatusCode() == 201) {
System.out.println(已发送到jenkins服务器");
response.close();
}
}
}
pom.xml 引用
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
</dependency>
带参数的构造
在此处添加参数.png如果只在请求中加参数,未在Jenkins上配置参数会报以下错误
image.png
解决方案:在配置中添加构建参数
二、Linux 环境通过curl 命令
参考:https://www.cnblogs.com/wuhaidong/articles/10483355.html
Linux的curl命令用来发送HTTP请求。
-X 参数:指定请求方式
-v 参数:显示响应结果
-u 参数:携带用户名/密码
-H 参数:携带请求消息头信息
模式: curl -X post -v -u [Jenkins 用户名]:[Jenkins 密码] -H "请求消息头信息" http://[服务器 IP 地址]:[服务器端口 号]/jenkins/job/[Jenkins 项目名称]/build?token=[身份验证令牌]
curl -X post -v -u username:password http://localhost:8080/job/demo/build?token=TOKEN_TEST
遇到问题一:
分析如下:
感谢:https://blog.csdn.net/mmh19891113/article/details/79106222
解决方法:
Jenkins-系统管理-全局安全配置- CSRF Protection,如下图
image.png
遇到问题二:
还是报错
解决方法:
curl -n -X post -v -u username:password http://127.0.0.1:8080/job/demo/buildWithParameters?token=TOKEN_TEST&projectId=projectId&jobId=jobId&id=id
最后用的这种方式
原因是这个JOB有参数
Curl 总结
带参
curl -X post -v -u [Jenkins 用户名]:[Jenkins 密码] -H "请求消息头信息" http://[服务器 IP 地址]:[服务器端口号]/job/[Jenkins 项目名称]/buildWithParameters?token=[身份验证令牌] &Param1=XXX
不带参数
curl -X post -v -u [Jenkins 用户名]:[Jenkins 密码] -H "请求消息头信息" http://[服务器 IP 地址]:[服务器端口号]/job/[Jenkins 项目名称]/build?token=[身份验证令牌]
网友评论