Authored by qinchao

docker 发布支持镜像

@@ -419,4 +419,5 @@ public class HttpUriContants { @@ -419,4 +419,5 @@ public class HttpUriContants {
419 public static final String ADDORUPDATE_DOCKER_INFO = "/dockerProject/addOrUpdateDockerInfo"; 419 public static final String ADDORUPDATE_DOCKER_INFO = "/dockerProject/addOrUpdateDockerInfo";
420 public static final String GET_DOCERK_INFO_BY_ID = "/dockerProject/getDockerInfoById"; 420 public static final String GET_DOCERK_INFO_BY_ID = "/dockerProject/getDockerInfoById";
421 public static final String DEL_DOCKER_INFO_BYID = "/dockerProject/delDockerInfoById"; 421 public static final String DEL_DOCKER_INFO_BYID = "/dockerProject/delDockerInfoById";
  422 + public static final String DOCKER_DEPLOY_ROLLBACK_BY_IMAGE="/dockerProject/deployByImageStore";
422 } 423 }
@@ -27,6 +27,7 @@ import java.util.ArrayList; @@ -27,6 +27,7 @@ import java.util.ArrayList;
27 import java.util.HashMap; 27 import java.util.HashMap;
28 import java.util.List; 28 import java.util.List;
29 import java.util.Map; 29 import java.util.Map;
  30 +import java.util.concurrent.CompletableFuture;
30 31
31 32
32 @RestController 33 @RestController
@@ -81,6 +82,8 @@ public class DockerBuildCtrl { @@ -81,6 +82,8 @@ public class DockerBuildCtrl {
81 model.addAttribute("releaseWorkJob_projectDeployType", map.get("projectDeployType")==null?"":(String)map.get("projectDeployType")); 82 model.addAttribute("releaseWorkJob_projectDeployType", map.get("projectDeployType")==null?"":(String)map.get("projectDeployType"));
82 model.addAttribute("releaseWorkJob_branch", map.get("branch")==null?"":(String)map.get("branch")); 83 model.addAttribute("releaseWorkJob_branch", map.get("branch")==null?"":(String)map.get("branch"));
83 model.addAttribute("releaseWorkJob_imageFile", map.get("imageFile")==null?"":(String)map.get("imageFile")); 84 model.addAttribute("releaseWorkJob_imageFile", map.get("imageFile")==null?"":(String)map.get("imageFile"));
  85 + model.addAttribute("releaseWorkJob_uploadCDN", map.get("uploadCDN")==null?"":String.valueOf(map.get("uploadCDN")));
  86 + model.addAttribute("releaseWorkJob_cdnBranch", map.get("cdnBranch")==null?"":String.valueOf(map.get("cdnBranch")));
84 model.addAttribute("releaseWorkJob_project",releaseWorkJob_project); 87 model.addAttribute("releaseWorkJob_project",releaseWorkJob_project);
85 model.addAttribute("releaseWorkJob_id", workJobId); 88 model.addAttribute("releaseWorkJob_id", workJobId);
86 } 89 }
@@ -103,7 +106,7 @@ public class DockerBuildCtrl { @@ -103,7 +106,7 @@ public class DockerBuildCtrl {
103 BaseResponse response=httpRestClient.defaultGet("/dockerProject/getDockerProjectMapByIds", BaseResponse.class, mapIds); 106 BaseResponse response=httpRestClient.defaultGet("/dockerProject/getDockerProjectMapByIds", BaseResponse.class, mapIds);
104 Map projectMap=JSON.parseObject((String)response.getData(),Map.class); 107 Map projectMap=JSON.parseObject((String)response.getData(),Map.class);
105 108
106 - if("deploy".equalsIgnoreCase(operate_name)){ 109 + if("deploy".equalsIgnoreCase(operate_name)&&"git".equals(project_deploy_type)){
107 for(String buildIdWithProjectId:buildIds.split(",")){ 110 for(String buildIdWithProjectId:buildIds.split(",")){
108 int index = buildIdWithProjectId.indexOf("-"); 111 int index = buildIdWithProjectId.indexOf("-");
109 String projectId=buildIdWithProjectId.substring(0,index); 112 String projectId=buildIdWithProjectId.substring(0,index);
@@ -116,6 +119,7 @@ public class DockerBuildCtrl { @@ -116,6 +119,7 @@ public class DockerBuildCtrl {
116 buildInfoList.add(map); 119 buildInfoList.add(map);
117 } 120 }
118 }else{ 121 }else{
  122 + //回滚 或者 镜像文件发布
119 String projectId=project_id; 123 String projectId=project_id;
120 Map map=new HashMap(); 124 Map map=new HashMap();
121 map.put("projectId",projectId); 125 map.put("projectId",projectId);
@@ -136,6 +140,7 @@ public class DockerBuildCtrl { @@ -136,6 +140,7 @@ public class DockerBuildCtrl {
136 model.addAttribute("clusters_text", clusters_text); 140 model.addAttribute("clusters_text", clusters_text);
137 model.addAttribute("operate_name", operate_name); 141 model.addAttribute("operate_name", operate_name);
138 model.addAttribute("branch_name", branch_name); 142 model.addAttribute("branch_name", branch_name);
  143 + model.addAttribute("project_deploy_type", project_deploy_type);
139 model.addAttribute("image_file_name", image_file_name); 144 model.addAttribute("image_file_name", image_file_name);
140 model.addAttribute("workid_name", workid_name); 145 model.addAttribute("workid_name", workid_name);
141 model.addAttribute("rollbackfile_name", rollbackImageStore); 146 model.addAttribute("rollbackfile_name", rollbackImageStore);
@@ -251,13 +256,13 @@ public class DockerBuildCtrl { @@ -251,13 +256,13 @@ public class DockerBuildCtrl {
251 **/ 256 **/
252 @RequestMapping(value = "/rollback") 257 @RequestMapping(value = "/rollback")
253 @ResponseBody 258 @ResponseBody
254 - public BaseResponse rollback(String project_id, String environment_name, String clusters_name,String rollbackImageStore){ 259 + public BaseResponse deployByImageStore(String project_id, String environment_name, String clusters_name,String rollbackImageStore){
255 Map<String, String> map = new HashMap<>(); 260 Map<String, String> map = new HashMap<>();
256 map.put("projectId", project_id); 261 map.put("projectId", project_id);
257 map.put("environment", environment_name); 262 map.put("environment", environment_name);
258 map.put("clusters_name", clusters_name); 263 map.put("clusters_name", clusters_name);
259 map.put("rollbackImageStore", rollbackImageStore); 264 map.put("rollbackImageStore", rollbackImageStore);
260 - return httpRestClient.defaultGet("/dockerProject/rollback", BaseResponse.class, map); 265 + return httpRestClient.defaultGet(HttpUriContants.DOCKER_DEPLOY_ROLLBACK_BY_IMAGE, BaseResponse.class, map);
261 } 266 }
262 267
263 /** 268 /**
@@ -268,12 +273,32 @@ public class DockerBuildCtrl { @@ -268,12 +273,32 @@ public class DockerBuildCtrl {
268 @RequestMapping(value = "/mirrorAndDeploy") 273 @RequestMapping(value = "/mirrorAndDeploy")
269 @ResponseBody 274 @ResponseBody
270 public BaseResponse mirrorAndDeploy(String project_id, String project_name, 275 public BaseResponse mirrorAndDeploy(String project_id, String project_name,
271 - String environment_name,String clusters_name, String operate_name,String project_deploy_type, String branch_name,String image_file_name,  
272 - String rollbackfile_name,String workid_name, Model model, HttpSession session) {  
273 - DockerJenkinsReq dockerJenkinsReq=new DockerJenkinsReq(); 276 + String environment_name,String clusters_name, String operate_name,String project_deploy_type,
  277 + String branch_name,String image_file_name,
  278 + String rollbackfile_name,String workid_name,int uploadCDN,String cdnBranch, Model model, HttpSession session) {
274 User user = (User) session.getAttribute("user"); 279 User user = (User) session.getAttribute("user");
275 - dockerJenkinsReq.setUserName(user.getName());  
276 - dockerJenkinsReq.setUserMail(user.getEmail()); 280 + String userName=user.getName();
  281 + String userEmail=user.getEmail();
  282 + if("image".equals(project_deploy_type)){
  283 + if(1==uploadCDN){
  284 + //发布异步任务
  285 + CompletableFuture.runAsync(new Runnable() {
  286 + @Override
  287 + public void run() {
  288 + Map<String,String> param=new HashMap<>();
  289 + param.put("projectId",project_id);
  290 + param.put("cdnBranch",cdnBranch);
  291 + param.put("workid_name",workid_name);
  292 + param.put("operatorEmail",userEmail);
  293 + httpRestClient.defaultGet("/dockerProject/uploadCDN",BaseResponse.class,param);
  294 + }
  295 + });
  296 + }
  297 + return deployByImageStore(project_id,environment_name,clusters_name,image_file_name);
  298 + }
  299 + DockerJenkinsReq dockerJenkinsReq=new DockerJenkinsReq();
  300 + dockerJenkinsReq.setUserName(userName);
  301 + dockerJenkinsReq.setUserMail(userEmail);
277 dockerJenkinsReq.setProjectIds(project_id); 302 dockerJenkinsReq.setProjectIds(project_id);
278 dockerJenkinsReq.setNodeEnv(environment_name); 303 dockerJenkinsReq.setNodeEnv(environment_name);
279 dockerJenkinsReq.setClusterId(clusters_name); 304 dockerJenkinsReq.setClusterId(clusters_name);
@@ -179,7 +179,8 @@ @@ -179,7 +179,8 @@
179 var buildInfoList = '${buildInfoList}'; 179 var buildInfoList = '${buildInfoList}';
180 180
181 $(function () { 181 $(function () {
182 - if("${operate_name}".toUpperCase()=="DEPLOY"){ 182 + console.log("project_deploy_type is "+"${project_deploy_type}");
  183 + if("${operate_name}".toUpperCase()=="DEPLOY"&&"git"=="${project_deploy_type}"){
183 if(buildInfoList!=null&&buildInfoList.length>0){ 184 if(buildInfoList!=null&&buildInfoList.length>0){
184 var buildInfoListJson=JSON.parse(buildInfoList); 185 var buildInfoListJson=JSON.parse(buildInfoList);
185 //docek发布 186 //docek发布
@@ -188,6 +189,7 @@ @@ -188,6 +189,7 @@
188 } 189 }
189 } 190 }
190 }else{ 191 }else{
  192 + //回滚或者镜像发布
191 if(buildInfoList!=null&&buildInfoList.length>0){ 193 if(buildInfoList!=null&&buildInfoList.length>0){
192 var buildInfoListJson=JSON.parse(buildInfoList); 194 var buildInfoListJson=JSON.parse(buildInfoList);
193 //docek回滚 195 //docek回滚
@@ -144,6 +144,20 @@ @@ -144,6 +144,20 @@
144 </div> 144 </div>
145 </div> 145 </div>
146 146
  147 + <div class="form-group" id="uploadCDN_div" class="deploy_type_div_class" style="display: none">
  148 + <label class="col-sm-1 control-label">上传CDN</label>
  149 +
  150 + <div class="col-sm-1" style="width: 110px;">
  151 + <select id="uploadCDN" name="uploadCDN" class="form-control" style="width: 100px;height:40px">
  152 + <option value="0" <c:if test="${releaseWorkJob_uploadCDN == '0' }">selected</c:if> >否</option>
  153 + <option value="1" <c:if test="${releaseWorkJob_uploadCDN == '1' }">selected</c:if> >是</option>
  154 + </select>
  155 + </div>
  156 + <div class="col-sm-7" style="width: 200px;">
  157 + <input id="cdnBranch" name="cdnBranch" type="text" value="${releaseWorkJob_cdnBranch}" class="form-control" style="padding-left:10px;float:left" placeHolder="上传cdn的分支"/>
  158 + </div>
  159 + </div>
  160 +
147 <div class="form-group" id="rollback-div" style="display: none"> 161 <div class="form-group" id="rollback-div" style="display: none">
148 <label class="col-sm-1 control-label">回滚版本选择</label> 162 <label class="col-sm-1 control-label">回滚版本选择</label>
149 163
@@ -304,12 +318,15 @@ @@ -304,12 +318,15 @@
304 function deployTypeOnchange(val) { 318 function deployTypeOnchange(val) {
305 $(".deploy_type_div_class").hide(); 319 $(".deploy_type_div_class").hide();
306 $("#"+val+"_deploy_type_div").show(); 320 $("#"+val+"_deploy_type_div").show();
  321 +
  322 + if(val=="image"){
  323 + $("#uploadCDN_div").show();
  324 +
307 if("${releaseWorkJob_id}".length>0){ 325 if("${releaseWorkJob_id}".length>0){
308 $("#projectDeployType").prop("disabled", true); 326 $("#projectDeployType").prop("disabled", true);
309 return ; 327 return ;
310 } 328 }
311 329
312 - if(val=="image"){  
313 $("#imagesList").select2("val", ""); 330 $("#imagesList").select2("val", "");
314 $('#imagesList').select2().empty(); 331 $('#imagesList').select2().empty();
315 //加载项目的镜像 332 //加载项目的镜像
@@ -341,6 +358,10 @@ @@ -341,6 +358,10 @@
341 data: list 358 data: list
342 }); 359 });
343 } 360 }
  361 + }else{
  362 + //$("#uploadCDN").val(0);
  363 + $("#uploadCDN_div").hide();//隐藏当前区域
  364 +
344 } 365 }
345 } 366 }
346 367
@@ -664,6 +685,8 @@ @@ -664,6 +685,8 @@
664 685
665 var branch = $("input[name='branch']").val(); 686 var branch = $("input[name='branch']").val();
666 var imageFile=$("#imagesList").val(); 687 var imageFile=$("#imagesList").val();
  688 + var uploadCDN = $("#uploadCDN").val();
  689 + var cdnBranch = $("#cdnBranch").val();
667 if(projectDeployType=="image"){ 690 if(projectDeployType=="image"){
668 $("#comfirm_deploy_content_div_image").show(); 691 $("#comfirm_deploy_content_div_image").show();
669 branch=""; 692 branch="";
@@ -671,6 +694,12 @@ @@ -671,6 +694,12 @@
671 alert("请填写镜像文件"); 694 alert("请填写镜像文件");
672 return; 695 return;
673 } 696 }
  697 + if(uploadCDN==1){
  698 + if(!cdnBranch){
  699 + alert("请填写上传CDN分支");
  700 + return;
  701 + }
  702 + }
674 }else if(projectDeployType=="git"){ 703 }else if(projectDeployType=="git"){
675 $("#comfirm_deploy_content_div_git").show(); 704 $("#comfirm_deploy_content_div_git").show();
676 if (!branch) { 705 if (!branch) {
@@ -831,7 +860,9 @@ @@ -831,7 +860,9 @@
831 param.workid_name=$("input[name='workid_name']").val(); 860 param.workid_name=$("input[name='workid_name']").val();
832 param.clusters_name=$("input[name='clusters_name']").val(); 861 param.clusters_name=$("input[name='clusters_name']").val();
833 param.clusters_text=$("input[name='clusters_text']").val(); 862 param.clusters_text=$("input[name='clusters_text']").val();
834 - 863 + param.uploadCDN = $("#uploadCDN").val();
  864 + param.cdnBranch = $("#cdnBranch").val();
  865 + console.log(param);
835 //三个node项目发布灰度环境时,自动启用灰度,发布online环境时,自动关闭灰度 866 //三个node项目发布灰度环境时,自动启用灰度,发布online环境时,自动关闭灰度
836 param.az2AutoSwitchOnlineCheck=""; 867 param.az2AutoSwitchOnlineCheck="";
837 if("yohoblk-wap"==param.project_name||"yohobuywap-node"==param.project_name||"yohobuy-node"==param.project_name){ 868 if("yohoblk-wap"==param.project_name||"yohobuywap-node"==param.project_name||"yohobuy-node"==param.project_name){