不算完美的实现了自动化部署的进度实时更新

简介:

呵呵,思路比较明确,但实现时的JS确实麻烦。

想过用ANGULAR.JS,但不太熟悉。

以前用的JS函数setInterval() 有时停不下来。

后来,看那书上说setTimeout() 可以实现所有setInterval() 功能。

然后,再用promise的then功能来实现先后顺序。。

搞定。。。

短期内不会更新这个版本的进度提示啦。

复制代码
function resetPercent(id_data){
        $.ajax({
              url:'/a/reset_percent/' + id_data,
              success: function(json){
                },
            });
    };

    $(".btn-multi-deploy").click(function(){

          var group_data = $("#deploy-form").serialize();
          var deploy_type = $(this).attr("deploy_type");
          var _self = this;

          var id_array = []
          var id_s_array = []
          var group_array = group_data.split("&");
          for (var key_data in group_array) {
            if (group_array[key_data].indexOf("deployversion_id") != -1) {
                deploy_id = group_array[key_data].split("=")[1]
            };
            if (group_array[key_data].indexOf("check-server") != -1) {
                id_array.push(group_array[key_data].split("=")[1])
            };
          };

          var promiseDEPLOY = $.ajax({
            url:'{% url "autodeploy:deploy-group-cmd-v2" %}',
            type: 'post',
            data:{
                group_cmd: group_data,
                deploy_type: deploy_type,
            },
            dataType: 'json',
            beforeSend: function(){
                $(_self).attr('disabled',"true");
                $(_self).append(" <i class='uk-icon-cog uk-icon-spin'></i>");

                for( index=0;index < id_array.length;index++){
                    resetPercent(id_array[index]);
                }
            },
            success: function(json){
                $(_self).children('i').remove();
                $(_self).append(" <i class='uk-icon-cog uk-icon-spin'></i>")


            },
            error: function(){
                $(_self).children('i').remove();
            },
            complete: function(){
                $(_self).children('i').remove();
                $(_self).append(" <i class='uk-icon-check'></i>")
            }
          });/* end promiseDEPLOY stop */

      promiseShowStatus = promiseDEPLOY.then(function(){

        for( index=0;index < id_array.length;index++){
                var key = id_array[index];
                queryStatus(key);
            }

            function queryStatus(id_subserver){
                $.getJSON("/api/subserver/"+id_subserver,
                    function(data,state){
                        if (state == 'success') {
                            var percent_value,
                                cmd_value;
                            percent_value_array = data.deploy_status.split(",");
                            percent_value = percent_value_array[0];
                            cmd_value = percent_value_array[1];
                            $('#' + id_subserver).html("<div class='uk-progress uk-progress-striped uk-progress-active'><div class='uk-progress-bar' style='width: " + percent_value + "%;'>" +  cmd_value + ' ' + percent_value + "%</div><i class='uk-icon-cog uk-icon-spin'></i></div>");

                                if ( percent_value > 98 ){
                                     $('#' + id_subserver).html("<div class='uk-progress uk-progress-striped uk-progress-success'><div class='uk-progress-bar' style='width: " + percent_value + "%;'>100%</div></div>");
                    clearTimeout(st_func);
                                };

                            };
                    }
                );
            console.log('queryStatus...'+id_subserver);
            var st_func = setTimeout(function(){queryStatus(id_subserver)}, 3000);
        }
      });

    });
复制代码

目录
相关文章
|
6月前
|
Kubernetes 监控 jenkins
基于K8S实现代码自动化上线
基于K8S实现代码自动化上线
|
11月前
|
敏捷开发 数据可视化 搜索推荐
大话项目:项目多、乱、慢,怎么管理项目更高效?
根据国外调查统计,大部分的企业会同时进行11-25个项目。那么现在,当前你的团队同时进行多少个项目呢?是完全没有数据支撑、两眼一抹黑,还是超过了这个平均值?
|
监控 测试技术
测试主管如何做好进度监控和进度汇报?
大家好,我是阿萨。测试执行过程中的进度汇报以及进度监控是项目成败的关键因素。项目执行过程中的测试自动化也会提升测试执行效率。今天针对测试执行过程这2个问题进行解答
139 0
|
监控 测试技术
如何做好项目上线工作?
项目测试达标后,就需要启动上线了。
596 0
如何做好项目上线工作?
|
小程序 Java
如何用项目甘特图,做好项目汇报
如何用项目甘特图,做好项目汇报
|
JSON 缓存 移动开发
从零开始搞监控系统(6)——较长的白屏时间
  在直播间有一个小时榜的Web页面,经常有用户反映点击小时榜,弹出的页面会有蛮长的一段(3秒上下)时间白屏。
从零开始搞监控系统(6)——较长的白屏时间
|
JavaScript 程序员 API
阿里发布新工具,直接帮你改代码!网友:工作量又减轻了~
阿里发布新工具,直接帮你改代码!网友:工作量又减轻了~
298 0
阿里发布新工具,直接帮你改代码!网友:工作量又减轻了~
|
视频直播 Android开发
直播间源码在开发前期必须做的工作及开发步骤
直播间源码的火爆不言而喻,大家对直播的热情也越来越高涨,他不仅给我们的娱乐生活添加了色彩,而且逐渐的改变了我们很多的生活方式。目前市场上做直播间源码开发的有很多,今天与大家一起来分享一下直播间源码在开发前期必须要做的工作及开发步骤都有哪些。
直播间源码在开发前期必须做的工作及开发步骤
|
运维 监控 安全
远程研发能有多高效?手淘新版本上线只用了5天!
2020年注定是不平凡的一年,一场突如其来的新型冠状病毒肆虐全球,部分企业还在复工的路上稳阵脚、备粮草、找契机,“静候”复工的指令,而阿里的同学早已吹响了“无接触,云办公”的号角,全面开启远程研发协同办公的模式,利用移动研发平台,在短短一周时间且足不出户的情况下就实现了一个客户端新版本的研发、测试、灰度、发布、监控、运维、运营等一系列工作。
917 0
远程研发能有多高效?手淘新版本上线只用了5天!
|
弹性计算 运维 监控
十分钟上线- CodeIgniter 项目迁移到函数计算
阿里云函数计算 Function Compute(FC),旨在帮助用户采用弹性伸缩、动态分配资源的方式,来执行业务函数。让用户无需购买部署服务器,无需考虑业务负载,就能快速搭建可处理高并发的后台服务。
十分钟上线- CodeIgniter 项目迁移到函数计算