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

呵呵,思路比较明确,但实现时的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);
        }
      });

    });

时间: 2025-01-03 18:12:15

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

自动化部署

---恢复内容开始--- 背景: 作为一个运维方面还算可以的小白,很自然部门中关于一些运维,部署,监控的任务就落到我身上.在被小伙伴们无数次的呼唤解决项目部署问题后,我忍无可忍,所以,我的目标是把他们交给我的部 署任务完美的退回去,即使他们对Linux一无所知. 解决的问题: 频繁的部署,重启任务. 主要项目描述: 项目总有13个模块,spring boot 项目,启动模块有10个. 前提: 主管项目后台模块架构设计,参与大部分开发任务,使平台提供运维支持成为可能.由于项目在 不断扩展期间,所以

持续集成之“自动化部署”

在前文<依赖管理>中,我们讨论了如何在代码变得庞大,组件增多的情况下,做好外部库和内部组件依赖管理,从而提高构建效率.可以应用的实践包括:一次生成,多次复用:建立统一制品库,外部依赖库可以使用像Maven或Ivy这样的工具进行统一管理:对架构进行调整,使一个大的代码库分成多个组件:每个组件有自己的持续集成体系:对多个组件做持续集成.然而,解决一个问题后,总会有另一个问题等在那里,需要你来解决.这次Joe的团队遇到了部署问题. 星期一早上,Alice一进办公室,就看到一脸倦意的Joe坐在椅子上,

微软私有云分享(R2)6-Linux的自动化部署

Windows Server 2012 R2对Linux的支持变得越来越多了,用SCVMM2012 R2部署Linux(如CentOS)显得更有价值,比如支持动态内存,运行效率更高等等. 在SCVMM2012 R2中部署Linux和Windows有很大差异,你以为"下一步"不停点下去就能搞定么?那是不可能的. =====前置条件======== 新手通过SCVMM2012 R2部署Linux失败,主要的原因是,不知道Linux需要安装vmm的相应组件,根据微软的网站信息,大家可能会知道

比Ansible更吊的自动化运维工具,自动化统一安装部署_自动化部署unifyDeploy1.0

新增功能: 2015-03-11 除pass(备份与更新)与start(启动服务)外,实现一切自动化. 注:pass与start设为业务类,由于各类业务不同,所以无法实现自动化.同类业务除外,如更新的都是tomcat的war包等... 新增“list”快捷键,快速操作list规则文件. 简化代码冗余,合拼原有exec工具类到tools. 修复上一轮版本配置文件乱码问题. 新增部署成功后系统版本监控功能. 2015-01-28 逻辑与业务分离,完美实现逻辑与业务分离,业务实现统一shell脚本开发

中小企业自动化部署实践

转载:http://www.unixhot.com/article/31 我们今天的话题是中小企业如何实现自动化部署,为什么定位中小企业呢?因为中小企业常面临着运维人员有限,成本投入有限,但是版本更新快,而且服务器数量 却并不少的局面.基本不会投入运维开发来开发自动化部署平台,那么我们今天就拿运维工程师都熟悉的Shell进行举例,谈谈如何来进行一个自动化部署的设计 1.1    统一认识 在开始之前我们需要先统一认识,在IT管理里面有三大核心要素是PPT,也就是人员/组织架构(People).流

自动化部署的一次实践

问题 现有的状态:需要部署最新代码时,手动在Bamboo上trigger build,然后手动到nexus目录下下载tar包,然后手动用Filezila上传到Server对应目录下,解压后运行. 期望达成的状态:需要部署最新代码时,直接在Server上跑一个脚本,然后它会自动下载并解压. 分析 对于存在的问题,将其细化拆分,一一分析解决方案. 问题1:需要每次手动trigger build. 解决1:在Bamboo上设置自动化的build schedule. 问题2:需要手动下载并解压build

利用Travis IC实现Hexo博客自动化部署

1.Hexo博客的利与弊 Hexo中文 我就默认为看到这篇文章的人都比较了解Hexo博客,也都能够成功手动部署吧.所以第一部分推荐两篇文章一笔带过,让我们快速进入本文的重点内容.实在不知道也不要方先看一看下面推荐的这两篇文章. 手把手教你使用Hexo + Github Pages搭建个人独立博客--令狐葱 Hexo + github 打造个人博客--zdy0_2004 还有一个专栏: Hexo / 总共13篇--水寒 感谢以上文章原创作者的分享,推荐纯属自来水.看完这两篇文章后有没有觉得自己手里

关于自动化部署之docker容器的折腾小记

docker的英文本意是码头工人,也就是搬运工,这种搬运工搬运的是集装箱(Container),集装箱里面装的可不是商品货物,而是任意类型的App,Docker把App(叫Payload)装在Container内,通过Linux Container技术的包装将App变成一种标准化的.可移植的.自管理的组件,这种组件可以在你的latop上开发.调试.运行,最终非常方便和一致地运行在production环境下. 具体什么是docker,你们自己找资料吧,应该好理解.   可以说是个运维的利器,可以把

搭建Puppet自动化部署环境

最近项目上线,自己在部署过程中发现很多问题,发现没有自动化部署工具简直就是纯体力活儿,费时又费力,干的事就是那几个,就不能"一键完成么"的想法油然而生,答案是肯定的,自动化的工具有很多,之所以安装Puppet,只是因为比起别的软件,这款软件原来有学习过,现在又重新拾起来,要把它用到生产环境中,让运维工作不再是体力活,而是实现,全自动部署,更新,这篇只是聊聊安装和配置Puppet,后续还会写具体在生产环境中如何实现自动化代码更新,软件部署等,敬请期待~ 环境介绍: puppetserve