Jenkins

try to take over the world!

// ==UserScript==
// @name         Jenkins
// @namespace    http://tampermonkey.net/
// @version      5
// @description  try to take over the world!
// @author       You
// @match        http://*/jenkins/view/*/job/*/
// @match        http://*/jenkins/job/*/
// @require      https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js
// @grant        none
// ==/UserScript==
/* jshint -W097 */
'use strict';
// Your code here...

$(document).ready(function () {
    $("body").append(`<div class="am-progress am-progress-xs" style="position:fixed;width: 100%;top:0;display: none;z-index=9999;left: 0;"><div class="am-progress-bar" style="width: 80%;"></div></div>`)
    if($("#buildHistory").length <= 0) return

    var cur = 0
    var mmax = 0
    $("#breadcrumbs").append($("<li><input class='exPut'type='button' value='查看构建列表'></li>").click(function () {
        cur = 0
        $(`<style>
        *{
            padding:0;
            margin: 0;
        }

        #result_tb tr,#result_tb td,#result_tb th{
            color:black;
            white-space: nowrap;
            text-align:center;
            vertical-align: middle;
            margin:0 auto;
            font-family:'Microsoft YaHei';
            font-size:13px;
        }

        #result_tb tr:hover{
            background-color:#66ffff;
            color: black;
        }
        </style>`).appendTo('head');

        $("#main-panel").html("<table border=0 id='result_tb'><tbody></tbody></table>");

        var urls = new Array()
        var href = $(".build-status-link").eq(0).attr("href");
        var strArr = href.split("/")
        var max = Number(strArr[strArr.length - 2])
        href = href.replace(max + "/console", "")
        for (let index = max; index >= 0; index--) {
            $("#result_tb").prepend("<tr></tr>")
            var url = "http://" + window.location.host + href + index + "/api/json";
            //console.info("请求地址:" + url)
            urls.push(url);
        }

        $.get(urls[0], function (data, staus) {
            var result = "<th></th>";
            result += "<th></th>";
            result += "<th></th>";
            result += "<th>svn ver</th>";
            var parameters = data.actions[0].parameters;
            for (var i = 0; i < parameters.length; i++) {
                result += "<th>" + parameters[i].name + "</th>";
            }
            $("#result_tb tr:eq(0)").prepend($(result)).find("th").each(function () {
                $(this).click(function () {
                    var idx = $(this).index()
                    $("#result_tb tr").each(function () {
                        $(this).find("td:eq(" + idx + ")").remove();
                    })
                    $(this).remove();
                })
            });
        });

        $(".am-progress-xs").css("display","initial")
        $(".am-progress-bar").css("width","0%")
        mmax = urls.length
        for (let index = 0; index < urls.length; index++) {
            const url = urls[index];


            $.get(url, function (data, staus) {
                //console.info("数据:" + data)
                cur++
                $(".am-progress-bar").css("width",((cur/mmax) * 100) + "%")
                if(cur==mmax) $(".am-progress-xs").css("display","none")

                var idx = index + 1
                var time = new Date(data.timestamp)
                var result = "<td>" + data.displayName + "</td>";
                result += "<td>" + time.toLocaleString() + "</td>";
                result += "<td>" + data.actions[1].causes[0].userName + "</td>";
                result += "<td></td>";

                var logUrl = url.replace("api/json","logText/progressiveText")
                $.get(logUrl, function (_data, _staus) {
                    var ret = "",matchReg=""
                    if(_data.indexOf("SVN版本号:") != -1){
                        matchReg = /SVN版本号:.*/g;
                        ret = _data.match(matchReg)[0]
                        ret = ret.replace("SVN版本号:","")
                    }else if(_data.indexOf("Last Changed Rev") != -1){
                        matchReg = /Last Changed Rev.*/g;
                        ret = _data.match(matchReg)[0]
                        ret = ret.replace("Last Changed Rev:","")
                    }else if(_data.indexOf("Checked out revision") != -1){
                        matchReg = /Checked out revision.*/g;
                        ret = _data.match(matchReg)[0]
                        ret = ret.replace("Checked out revision","")
                    }else{
                        ret = "null"
                    }
                    if(_data.indexOf("m_UnitySvnVersion:") != -1){
                        matchReg = /m_UnitySvnVersion:.*/g;
                        var temp = _data.match(matchReg)[0]
                        temp = temp.replace("m_UnitySvnVersion:","")
                        if(temp != "0")ret = temp
                    }
                    //console.log(ret,logUrl)

                    $("#result_tb tr:eq(" + idx + ")").find("td:eq(3)").html(ret)
                });

                var parameters = data.actions[0].parameters;
                var index_Network = 5;
                var index_QRCode = 12;
                for (var i = 0; i < parameters.length; i++) {
                    result += "<td>" + parameters[i].value + "</td>";
                }
                //console.info("当前信息:" + result)
                $("#result_tb tr:eq(" + idx + ")").prepend($(result));
                $("#result_tb tr:eq(" + idx + ")").each(function () {
                    $(this).click(function () {
                         for (var i = 0; i < parameters.length; i++) {
                            if(parameters[i].name == "内网外网"){
                                index_Network = i;
                            }else if (parameters[i].name == "QRCode"){
                                index_QRCode = i;
                            }
                        }
                        //console.info("内外网:" + index_netwoek + "---" + "二维码:" + index_QRCode)
                        if(parameters[index_QRCode].value == "yes" && parameters[index_Network].value == "内网测试" || parameters[index_Network].value == "测试服"){
                            var qrcode_url = data.url.replace(data.url.substring(data.url.lastIndexOf(data.number)), "ws/QRCode/");
                            qrcode_url += data.number + ".png";
                            //window.open(data.url,"_blank");
                            window.location.href = qrcode_url;
                        }else{
                            window.alert("当前APK没有二维码,再点剁手!!");
                        }
                    });
                 });
            });
        }
    }));

    $(document).ajaxError(function(e,xhr,opt){
        cur++
        if(cur==mmax) $(".am-progress-xs").css("display","none")
        $(".am-progress-bar").css("width",((cur/mmax) * 100) + "%")
    });
});