Commit a0159a14 authored by 黎博's avatar 黎博

Merge branch 'master' into monitor

parents 7c6b3e7c c7ffd697
......@@ -4,8 +4,6 @@ import cn.qg.holmes.common.JsonResult;
import cn.qg.holmes.entity.k8s.DockerProject;
import cn.qg.holmes.service.k8s.DockerProjectService;
import cn.qg.holmes.utils.GitlabService;
import cn.qg.holmes.utils.HttpClientUtils;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
......@@ -13,7 +11,10 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@CrossOrigin
@RestController
......@@ -32,34 +33,6 @@ public class GitlabController {
*/
@GetMapping("/projects")
public JsonResult getProjectsList() {
// String baseUrl = "http://qaapi.liangkebang.com/proconfig/get_project_for_jenkins?type=";
// String javaResult = HttpClientUtils.doGet(baseUrl + "java");
// String uiResult = HttpClientUtils.doGet(baseUrl + "ui");
// String nodeResult = HttpClientUtils.doGet(baseUrl + "node");
// List<String> javaList = Arrays.asList(javaResult.split("\n"));
// List<String> uiList = Arrays.asList(uiResult.split("\n"));
// List<String> nodeList = Arrays.asList(nodeResult.split("\n"));
// List<Map<String, String>> serviceList = new ArrayList<>();
// for (String service: javaList) {
// Map<String, String> map = new HashMap<>();
// map.put("name", service);
// map.put("type", "java");
// serviceList.add(map);
// }
// for (String service: uiList) {
// Map<String, String> map = new HashMap<>();
// map.put("name", service);
// map.put("type", "ui");
// serviceList.add(map);
// }
// for (String service: nodeList) {
// Map<String, String> map = new HashMap<>();
// map.put("name", service);
// map.put("type", "node");
// serviceList.add(map);
// }
// return JsonResult.buildSuccessResult(serviceList);
List<Map<String, String>> serviceList = new ArrayList<>();
QueryWrapper<DockerProject> dockerProjectQueryWrapper = new QueryWrapper<>();
dockerProjectQueryWrapper
......@@ -109,15 +82,10 @@ public class GitlabController {
*/
@GetMapping("/branches")
public JsonResult getBranchesByProject(String projectName) {
List<Map<String, Object>> projectList = gitlabService.getProjectByRestApi(projectName);
Integer projectId = null;
for (Map<String, Object> project: projectList) {
if (project.get("name").toString().equals(projectName) || project.get("path").toString().equals(projectName)) {
projectId = (Integer) project.get("id");
}
List<Map> branchList = gitlabService.getBranchesByProjectNameByRestApi(projectName);
if (branchList == null) {
return JsonResult.buildErrorStateResult("请检查项目名称或项目配置是否正确!", false);
}
return JsonResult.buildSuccessResult(gitlabService.getBranchesByProjectId(projectName, projectId));
// String url = "https://qaapi.liangkebang.com/pipeline/getGitBranch?name=" + projectName;
// return JsonResult.buildSuccessResult(JSON.parseObject(HttpClientUtils.doGet(url), Map.class));
return JsonResult.buildSuccessResult(branchList);
}
}
......@@ -312,6 +312,18 @@ public class PipelineController {
if (!dingRobotService.updateById(dingRobot)) {
return JsonResult.buildErrorStateResult("更新状态失败!", false);
}
// 同时将pipline里的项目置为不可用
if (status == 2) {
QueryWrapper<Pipeline> pipelineQueryWrapper = new QueryWrapper<>();
pipelineQueryWrapper.eq("ding_robot_id", dingRobotId);
List<Pipeline> pipelineList = pipelineService.list(pipelineQueryWrapper);
if (pipelineList.size() > 0) {
for (Pipeline pipeline: pipelineList) {
pipeline.setEnable(0);
pipelineService.updateById(pipeline);
}
}
}
return JsonResult.buildSuccessResult("更新状态成功!", true);
} catch (Exception e) {
return JsonResult.buildErrorStateResult("更新状态失败!", false);
......
......@@ -86,9 +86,13 @@ public class BugNotifyTask {
// 如果已超过4个小时,则发送钉钉通知
if (duration >= 4) {
DingRobot dingRobot = dingRobotService.getById(jiraBugPool.getDingRobotId());
// 项目进行中才发送通知
if (dingRobot.getStatus() == 1) {
DingdingUtils.sendToDingding(DingdingUtils.buildBugFixRemindMsg(issue, duration), jiraBugPool.getDingUrl());
// 项目存在,且项目进行中才发送通知
if (dingRobot != null) {
if (dingRobot.getStatus() == 1) {
DingdingUtils.sendToDingding(DingdingUtils.buildBugFixRemindMsg(issue, duration), jiraBugPool.getDingUrl());
}
} else {
log.info("提测项目不存在,暂不发送钉钉通知!");
}
}
}
......
package cn.qg.holmes.utils;
import cn.qg.holmes.entity.k8s.DockerProject;
import cn.qg.holmes.service.k8s.DockerProjectService;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.gitlab.api.GitlabAPI;
import org.gitlab.api.models.GitlabBranch;
import org.gitlab.api.models.GitlabProject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component
public class GitlabService {
@Autowired
DockerProjectService dockerProjectService;
private static final String GITABC_URL = "http://gitabc.xyqb.com/";
private static final String GITABC_TOKEN = "XkBv7zaxnX_ag8mHBuN8";
private static final String URL = "http://git.quantgroup.cn/";
private static final String TOKEN = "owKJZwenxNaypTAz4Zcd";
private static final String TJZIMU_URL = "https://gitlab.tjzimu.com/";
private static final String TJZIMU_TOKEN = "jDqS5EHHzpGsn8J1aCUG";
private GitlabAPI gitabcAPI;
private GitlabAPI gitlabAPI;
private GitlabAPI tjzimuGitlabAPI;
public GitlabService() {
try {
// gitabcAPI = GitlabAPI.connect(GITABC_URL, GITABC_TOKEN);
gitlabAPI = GitlabAPI.connect(URL, TOKEN);
tjzimuGitlabAPI = GitlabAPI.connect(TJZIMU_URL, TJZIMU_TOKEN);
// tjzimuGitlabAPI = GitlabAPI.connect(TJZIMU_URL, TJZIMU_TOKEN);
} catch (Exception e) {
e.printStackTrace();
}
......@@ -60,22 +75,44 @@ public class GitlabService {
return branches;
}
/**
* 通过gitlab rest api获取项目列表
* @param projectName 项目名称
* @return
*/
public List<Map<String, Object>> getProjectByRestApi(String projectName) {
String url = URL + "api/v4/projects";
String tjzimuUrl = TJZIMU_URL + "api/v4/projects";
QueryWrapper<DockerProject> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("project_name", projectName);
DockerProject dockerProject = dockerProjectService.getOne(queryWrapper);
if (dockerProject == null) {
return null;
}
String gitUrl = dockerProject.getGitPath();
String gitHost = gitUrl.split("@")[1].split(":")[0];
String apiVersion = "v4"; // 默认版本是v4
String url = null; // restapi url
String result; // 请求结果
Map<String, String> params = new HashMap<>();
String result;
params.put("per_page", "200");
params.put("search", projectName);
params.put("simple", "true");
if (projectName.equals("xyqb-user3")) {
params.put("private_token", TJZIMU_TOKEN);
result = HttpClientUtils.doGet(tjzimuUrl, params);
} else {
// gitabc.xyqb.com使用v3版本,git.quantgroup.cn和gitlab.tjzimu.com都使用v4版本
if (gitHost.equals("gitabc.xyqb.com")) {
apiVersion = "v3";
url = GITABC_URL + "api/" + apiVersion + "/projects";
params.put("private_token", GITABC_TOKEN);
} else if (gitHost.equals("gitlab.git.quantgroup.cn")) {
url = URL + "api/" + apiVersion + "/projects";
params.put("private_token", TOKEN);
result = HttpClientUtils.doGet(url, params);
} else if (gitHost.equals("gitlab.tjzimu.com")) {
url = TJZIMU_URL + "api/" + apiVersion+ "/projects";
params.put("private_token", TJZIMU_TOKEN);
}
return (List<Map<String, Object>>) JSON.parse(result);
if (url == null) {
return null;
}
result = HttpClientUtils.doGet(url, params);
return result == null ? null : (List<Map<String, Object>>) JSON.parse(result);
}
public List<Map> getBranchesByProjectId(String projectName, Integer projectId) {
......@@ -102,14 +139,69 @@ public class GitlabService {
return branchList;
}
public static void main(String[] args) {
GitlabService gitlabService = new GitlabService();
// List<String> branches = gitlabService.getBranchesByProjectName("holmes");
// System.out.println(branches);
// System.out.println(gitlabService.getProjectByRestApi("holmes"));
// System.out.println(gitlabService.getBranchesByProjectId("holmes", 795).size());
System.out.println(gitlabService.getProjectByRestApi("xyqb-user3"));
/**
* 通过gitlab rest api 获取项目分支
* @param projectName
* @return
*/
public List<Map> getBranchesByProjectNameByRestApi(String projectName) {
try {
QueryWrapper<DockerProject> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("project_name", projectName);
DockerProject dockerProject = dockerProjectService.getOne(queryWrapper);
if (dockerProject == null) {
return null;
}
String gitUrl = dockerProject.getGitPath();
String gitHost = gitUrl.split("@")[1].split(":")[0];
String projectPath = gitUrl.split(":")[1].split("\\.")[0];
String encodeProjectPath = URLEncoder.encode(projectPath, "utf8");
String apiVersion = "v4";
String url = null;
String result;
Map<String, String> headers = new HashMap<>();
Map<String, String> params = new HashMap<>();
int initPage = 1;
params.put("per_page", "100");
switch (gitHost) {
case "gitabc.xyqb.com":
apiVersion = "v3";
url = GITABC_URL + "api/" + apiVersion + "/projects/" + encodeProjectPath + "/repository/branches";
headers.put("PRIVATE-TOKEN", GITABC_TOKEN);
break;
case "git.quantgroup.cn":
url = URL + "api/" + apiVersion + "/projects/" + encodeProjectPath + "/repository/branches";
headers.put("PRIVATE-TOKEN", TOKEN);
break;
case "gitlab.tjzimu.com":
url = TJZIMU_URL + "api/" + apiVersion + "/projects/" + encodeProjectPath + "/repository/branches";
headers.put("PRIVATE-TOKEN", TJZIMU_TOKEN);
break;
}
if (url == null) {
return null;
}
List<Map> resultList = new ArrayList<>();
// 目的是在不确定分支数量的情况下获取所有分支
while (true) {
params.put("page", String.valueOf(initPage));
result = HttpClientUtils.doGet(url, headers, params);
if (result == null) {
return null;
}
List<Map> tempList = (List<Map>) JSON.parse(result);
resultList.addAll(tempList);
if (tempList.size() == 100) {
initPage += 1;
} else {
break;
}
}
return resultList;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment