Jenkins

try to take over the world!

K instalaci tototo skriptu si budete muset nainstalovat rozšíření jako Tampermonkey, Greasemonkey nebo Violentmonkey.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Violentmonkey.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Violentmonkey.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Userscripts.

You will need to install an extension such as Tampermonkey to install this script.

K instalaci tohoto skriptu si budete muset nainstalovat manažer uživatelských skriptů.

(Už mám manažer uživatelských skriptů, nechte mě ho nainstalovat!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(Už mám manažer uživatelských stylů, nechte mě ho nainstalovat!)

// ==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) + "%")
    });
});