CI/CD

使用JenkinsApi 启动Jenkins Job

2019-03-31  本文已影响0人  __Andy__

使用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 ~

image.png

代码示例:

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


遇到问题一:

报错截图.png
分析如下:
感谢:https://blog.csdn.net/mmh19891113/article/details/79106222
解决方法:
Jenkins-系统管理-全局安全配置- CSRF Protection,如下图
image.png

遇到问题二:
还是报错

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=[身份验证令牌]
上一篇 下一篇

猜你喜欢

热点阅读