美文网首页CI/CD
使用JenkinsApi 启动Jenkins Job

使用JenkinsApi 启动Jenkins Job

作者: __Andy__ | 来源:发表于2019-03-31 22:21 被阅读0次

    使用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=[身份验证令牌]
    

    相关文章

      网友评论

        本文标题:使用JenkinsApi 启动Jenkins Job

        本文链接:https://www.haomeiwen.com/subject/oswlbqtx.html