diff --git a/chart/gitlab-service/templates/NOTES.txt b/chart/gitlab-service/templates/NOTES.txt index 9f6345e..c9a7709 100755 --- a/chart/gitlab-service/templates/NOTES.txt +++ b/chart/gitlab-service/templates/NOTES.txt @@ -3,7 +3,7 @@ Verify deployment: curl -s $(kubectl get po --namespace {{ .Release.Namespace }} \ - -l choerodon.io/release={{ .Release.Name }} \ + -l app.kubernetes.io/name={{ .Release.Name }} \ -o jsonpath="{.items[0].status.podIP}"):{{ .Values.containerPort.actuatorPort }}/actuator/health | jq -r .status If the following similar information appears, it is a successful deployment: diff --git a/chart/gitlab-service/templates/deployment.yaml b/chart/gitlab-service/templates/deployment.yaml index 27e7232..99aa66c 100755 --- a/chart/gitlab-service/templates/deployment.yaml +++ b/chart/gitlab-service/templates/deployment.yaml @@ -194,9 +194,8 @@ spec: {{- end }} {{- if .Values.startupProbe.enabled }} startupProbe: - httpGet: - path: /actuator/health - port: actuator + tcpSocket: + port: server initialDelaySeconds: {{ .Values.startupProbe.initialDelaySeconds }} periodSeconds: {{ .Values.startupProbe.periodSeconds }} timeoutSeconds: {{ .Values.startupProbe.timeoutSeconds }} diff --git a/chart/gitlab-service/values.yaml b/chart/gitlab-service/values.yaml index 1afd656..2d268d1 100755 --- a/chart/gitlab-service/values.yaml +++ b/chart/gitlab-service/values.yaml @@ -264,7 +264,7 @@ livenessProbe: # -- Enable livenessProbe enabled: true # -- Initial delay seconds for livenessProbe - initialDelaySeconds: 480 + initialDelaySeconds: 300 # -- Period seconds for livenessProbe periodSeconds: 5 # -- Timeout seconds for livenessProbe @@ -272,12 +272,12 @@ livenessProbe: # -- Success threshold for livenessProbe successThreshold: 1 # -- Failure threshold for livenessProbe - failureThreshold: 5 + failureThreshold: 2 readinessProbe: # -- Enable readinessProbe enabled: true # -- Initial delay seconds for readinessProbe - initialDelaySeconds: 30 + initialDelaySeconds: 20 # -- Period seconds for readinessProbe periodSeconds: 5 # -- Timeout seconds for readinessProbe @@ -285,16 +285,16 @@ readinessProbe: # -- Success threshold for readinessProbe successThreshold: 1 # -- Failure threshold for readinessProbe - failureThreshold: 5 + failureThreshold: 2 startupProbe: # -- Enable startupProbe - enabled: false + enabled: true # -- Initial delay seconds for startupProbe - initialDelaySeconds: 0 + initialDelaySeconds: 10 # -- Period seconds for startupProbe - periodSeconds: 5 + periodSeconds: 3 # -- Timeout seconds for startupProbe - timeoutSeconds: 3 + timeoutSeconds: 2 # -- Success threshold for startupProbe successThreshold: 1 # -- Failure threshold for startupProbe diff --git a/pom.xml b/pom.xml index 10c32c7..8276dfc 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 gitlab-service - 2.0.0.RELEASE + 2.2.0-20-SNAPSHOT jar https://github.com/choerodon/gitlab-service @@ -12,7 +12,7 @@ io.choerodon choerodon-framework-parent - 2.0.0.RELEASE + 2.2.0-20-SNAPSHOT @@ -56,7 +56,7 @@ io.choerodon choerodon-gitlab4j-api - 1.3.0-SNAPSHOT + 2.1.2.RELEASE org.springframework.boot @@ -108,7 +108,7 @@ com.google.code.gson gson - 2.6.2 + 2.8.9 org.eclipse.jgit diff --git a/src/main/java/io/choerodon/gitlab/api/controller/v1/CommitController.java b/src/main/java/io/choerodon/gitlab/api/controller/v1/CommitController.java index 4fe69e6..8abf67d 100644 --- a/src/main/java/io/choerodon/gitlab/api/controller/v1/CommitController.java +++ b/src/main/java/io/choerodon/gitlab/api/controller/v1/CommitController.java @@ -3,9 +3,6 @@ import java.util.List; import java.util.Optional; -import io.choerodon.gitlab.api.vo.CommitVO; -import io.choerodon.gitlab.api.vo.GitlabTransferVO; - import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.gitlab4j.api.models.Commit; @@ -18,10 +15,9 @@ import io.choerodon.core.exception.FeignException; import io.choerodon.gitlab.api.vo.CommitStatuseVO; +import io.choerodon.gitlab.api.vo.GitlabTransferVO; import io.choerodon.gitlab.app.service.CommitService; -import javax.validation.Valid; - /** * Created by zzy on 2018/1/14. */ diff --git a/src/main/java/io/choerodon/gitlab/api/controller/v1/GroupsController.java b/src/main/java/io/choerodon/gitlab/api/controller/v1/GroupsController.java index 9ddef8b..2297f50 100644 --- a/src/main/java/io/choerodon/gitlab/api/controller/v1/GroupsController.java +++ b/src/main/java/io/choerodon/gitlab/api/controller/v1/GroupsController.java @@ -12,6 +12,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import io.choerodon.core.domain.Page; import io.choerodon.core.exception.FeignException; import io.choerodon.gitlab.api.vo.GitlabTransferVO; import io.choerodon.gitlab.api.vo.GroupVO; @@ -44,6 +45,24 @@ public ResponseEntity> list(@ApiParam(value = "userId") return ResponseEntity.ok(groupService.listGroupsWithParam(userId, owned, search, skipGroups)); } + /** + * 分页查询所有组 + * + * @return List + */ + @ApiOperation(value = "分页查询有权限的所有组") + @PostMapping("/{userId}/paging") + public ResponseEntity> paging(@ApiParam(value = "userId") + @PathVariable(value = "userId") Integer userId, + @RequestParam(value = "page") Integer page, + @RequestParam(value = "size") Integer size, + @RequestParam(value = "owned", required = false) Boolean owned, + @RequestParam(value = "search", required = false) String search, + @RequestParam(value = "minAccessLevel", required = false) Integer minAccessLevel, + @RequestBody List skipGroups) { + return ResponseEntity.ok(groupService.pagingGroupsWithParam(userId, page, size, owned, search, skipGroups,minAccessLevel)); + } + /** * 查询所有组 * @@ -122,6 +141,25 @@ public ResponseEntity> listMember( .orElseThrow(() -> new FeignException("error.groups.members.get")); } + /** + * 查询组中的成员 + * + * @param groupId 组对象Id + * @return List + */ + @ApiOperation(value = "分页查询成员列表") + @GetMapping(value = "/{groupId}/members/page") + public ResponseEntity> pageMember( + @ApiParam(value = "组ID", required = true) + @PathVariable Integer groupId, + @RequestParam Integer page, + @RequestParam Integer size, + @ApiParam(value = "用户userId") + @RequestParam(required = false) Integer userId, + @RequestParam(value = "search", required = false) String search) { + return ResponseEntity.ok(groupService.pageMember(groupId, page, size, userId, search)); + } + /** * 根据用户ID获得组成员信息 * @@ -230,8 +268,9 @@ public ResponseEntity> listProjects( @RequestParam(value = "owned", required = false) Boolean owned, @RequestParam(value = "search", required = false) String search, @RequestParam(value = "page", required = false) Integer page, - @RequestParam(value = "perPage", required = false) Integer perPage) { - return ResponseEntity.ok(groupService.listProjects(groupId, userId, owned, search, page, perPage)); + @RequestParam(value = "perPage", required = false) Integer perPage, + @RequestParam(value = "minAccessLevel", required = false) Integer minAccessLevel) { + return ResponseEntity.ok(groupService.listProjects(groupId, userId, owned, search, page, perPage, minAccessLevel)); } /** @@ -252,6 +291,16 @@ public ResponseEntity queryGroupByName( return new ResponseEntity<>(groupService.queryGroupByName(groupName, userId), HttpStatus.OK); } + @ApiOperation(value = "根据组id查询组") + @GetMapping(value = "/query_by_id/{group_iid}") + public ResponseEntity queryGroupByIid( + @ApiParam(value = "组名", required = true) + @PathVariable(value = "group_iid") Integer groupIid, + @ApiParam(value = "userId") + @RequestParam(required = false) Integer userId) { + return new ResponseEntity<>(groupService.queryGroupByIid(groupIid, userId), HttpStatus.OK); + } + @ApiOperation(value = "根据组名检索组的列表") @GetMapping(value = "/{group_name}/with_statistics") public ResponseEntity> queryGroupWithStatisticsByName( diff --git a/src/main/java/io/choerodon/gitlab/api/controller/v1/HookController.java b/src/main/java/io/choerodon/gitlab/api/controller/v1/HookController.java index 6895dcd..9a88f1a 100644 --- a/src/main/java/io/choerodon/gitlab/api/controller/v1/HookController.java +++ b/src/main/java/io/choerodon/gitlab/api/controller/v1/HookController.java @@ -71,6 +71,20 @@ public ResponseEntity create( .orElseThrow(() -> new FeignException("error.projects.update.hook")); } + @ApiOperation(value = "更新ProjectHook对象") + @PutMapping("{hook_id}") + public ResponseEntity update( + @ApiParam(value = "项目ID", required = true) + @RequestParam Integer projectId, + @ApiParam(value = "userId") + @RequestParam(required = false) Integer userId, + @ApiParam(value = "hookId", required = true) + @PathVariable(value = "hook_id") Integer hookId, + @RequestBody @Valid ProjectHook projectHook) { + return Optional.ofNullable(hookService.updateProjectHook(projectId, hookId, userId, projectHook)) + .map(target -> new ResponseEntity<>(target, HttpStatus.NO_CONTENT)) + .orElseThrow(() -> new FeignException("error.projects.update.hook")); + } /** * 获取ProjectHook对象 diff --git a/src/main/java/io/choerodon/gitlab/api/controller/v1/PipelineScheduleController.java b/src/main/java/io/choerodon/gitlab/api/controller/v1/PipelineScheduleController.java index a1ba8d4..91d3159 100644 --- a/src/main/java/io/choerodon/gitlab/api/controller/v1/PipelineScheduleController.java +++ b/src/main/java/io/choerodon/gitlab/api/controller/v1/PipelineScheduleController.java @@ -6,7 +6,6 @@ import io.swagger.annotations.ApiParam; import org.gitlab4j.api.models.PipelineSchedule; import org.gitlab4j.api.models.Variable; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; diff --git a/src/main/java/io/choerodon/gitlab/api/controller/v1/ProjectsController.java b/src/main/java/io/choerodon/gitlab/api/controller/v1/ProjectsController.java index f34306e..3edccca 100644 --- a/src/main/java/io/choerodon/gitlab/api/controller/v1/ProjectsController.java +++ b/src/main/java/io/choerodon/gitlab/api/controller/v1/ProjectsController.java @@ -133,7 +133,7 @@ public ResponseEntity>> batchSaveVariableEvent( @ApiParam(value = "项目ID", required = true) @PathVariable Integer projectId, @ApiParam(value = "用户ID", required = true) - @RequestParam(value = "userId") Integer userId, + @RequestParam(value = "userId", required = false) Integer userId, @ApiParam(value = "variable信息", required = true) @RequestBody @Valid List list) { return Optional.ofNullable(projectService.batchCreateVariable(projectId, list, userId)) @@ -323,7 +323,7 @@ public ResponseEntity> getDeployKeys( @ApiParam(value = "项目ID", required = true) @RequestParam Integer projectId, @ApiParam(value = "用户Id") - @RequestParam Integer userId) { + @RequestParam(required = false) Integer userId) { return Optional.ofNullable(projectService.getDeployKeys(projectId, userId)) .map(target -> new ResponseEntity<>(target, HttpStatus.OK)) .orElseThrow(() -> new FeignException("error.project.deploy.key.get")); @@ -461,6 +461,23 @@ public ResponseEntity getMember( .orElseThrow(() -> new FeignException("error.groups.member.create")); } + /** + * 查询项目角色 + * + * @param projectId 项目id + * @param userId 用户Id + * @return Member + */ + @ApiOperation(value = "查询项目角色,包含继承的角色") + @GetMapping(value = "/{projectId}/members/all/{userId}") + public ResponseEntity getAllMember( + @ApiParam(value = "项目id", required = true) + @PathVariable(value = "projectId") Integer projectId, + @ApiParam(value = "成员信息", required = true) + @PathVariable(value = "userId") Integer userId) { + return ResponseEntity.ok(projectService.getAllMember(projectId, userId)); + } + /** * 获取项目下所有成员 * @@ -476,6 +493,20 @@ public ResponseEntity> getAllMemberByProjectId( .map(result -> new ResponseEntity<>(result, HttpStatus.OK)) .orElseThrow(() -> new FeignException("error.project.member.list")); } + /** + * 获取项目下所有成员 + * + * @param projectId 项目id + * @return List + */ + @ApiOperation(value = "获取项目下所有成员") + @GetMapping(value = "/{project_id}/all_members/list") + public ResponseEntity> getAllMemberByProjectIdAndQuery( + @ApiParam(value = "项目id", required = true) + @PathVariable(value = "project_id") Integer projectId, + @RequestParam(value = "query") String query) { + return ResponseEntity.ok(projectService.getAllMemberByProjectIdAndQuery(projectId, query)); + } /** * 获取用户的gitlab项目列表 diff --git a/src/main/java/io/choerodon/gitlab/api/controller/v1/UserController.java b/src/main/java/io/choerodon/gitlab/api/controller/v1/UserController.java index 852edcf..7f14f83 100644 --- a/src/main/java/io/choerodon/gitlab/api/controller/v1/UserController.java +++ b/src/main/java/io/choerodon/gitlab/api/controller/v1/UserController.java @@ -86,6 +86,19 @@ public ResponseEntity> list( .orElseThrow(() -> new FeignException("error.users.queryAll")); } + /** + * 查找所有admin用户 + * + * @return List + */ + @ApiOperation(value = "查找所有用户") + @GetMapping(value = "/list_admin_users") + public ResponseEntity> listAdminUsers() { + return Optional.ofNullable(userService.getAdminUsers()) + .map(target -> new ResponseEntity<>(target, HttpStatus.OK)) + .orElseThrow(() -> new FeignException("error.users.queryAll")); + } + /** * 根据用户ID获得用户信息 * diff --git a/src/main/java/io/choerodon/gitlab/api/vo/GitlabUserReqDTO.java b/src/main/java/io/choerodon/gitlab/api/vo/GitlabUserReqDTO.java index 7ab6000..ce83d7c 100644 --- a/src/main/java/io/choerodon/gitlab/api/vo/GitlabUserReqDTO.java +++ b/src/main/java/io/choerodon/gitlab/api/vo/GitlabUserReqDTO.java @@ -1,7 +1,5 @@ package io.choerodon.gitlab.api.vo; -import com.fasterxml.jackson.annotation.JsonProperty; - import java.util.Date; /** diff --git a/src/main/java/io/choerodon/gitlab/app/service/ConfigService.java b/src/main/java/io/choerodon/gitlab/app/service/ConfigService.java index 90074df..44146bf 100644 --- a/src/main/java/io/choerodon/gitlab/app/service/ConfigService.java +++ b/src/main/java/io/choerodon/gitlab/app/service/ConfigService.java @@ -1,7 +1,5 @@ package io.choerodon.gitlab.app.service; -import org.springframework.http.ResponseEntity; - /** * @author: trump * @date: 2019/8/21 16:33 diff --git a/src/main/java/io/choerodon/gitlab/app/service/GroupService.java b/src/main/java/io/choerodon/gitlab/app/service/GroupService.java index aae272e..0e22653 100644 --- a/src/main/java/io/choerodon/gitlab/app/service/GroupService.java +++ b/src/main/java/io/choerodon/gitlab/app/service/GroupService.java @@ -1,11 +1,13 @@ package io.choerodon.gitlab.app.service; +import java.util.List; + +import org.gitlab4j.api.models.*; + +import io.choerodon.core.domain.Page; import io.choerodon.gitlab.api.vo.GroupVO; import io.choerodon.gitlab.api.vo.MemberVO; import io.choerodon.gitlab.api.vo.VariableVO; -import org.gitlab4j.api.models.*; - -import java.util.List; public interface GroupService { /** @@ -196,8 +198,13 @@ List batchCreateVariable(Integer groupId, * @param userId 用户Id * @return List */ - List listProjects(Integer groupId, Integer userId, Boolean owned, String search, Integer page, Integer perPage); + List listProjects(Integer groupId, Integer userId, Boolean owned, String search, Integer page, Integer perPage, Integer minAccessLevel); List queryGroupWithStatisticsByName(String groupName, Integer userId, Boolean statistics); + Group queryGroupByIid(Integer groupIid, Integer userId); + + Page pageMember(Integer groupId, Integer page, Integer size, Integer userId, String search); + + Page pagingGroupsWithParam(Integer userId, Integer page, Integer size, Boolean owned, String search, List skipGroups, Integer minAccessLevel); } diff --git a/src/main/java/io/choerodon/gitlab/app/service/HookService.java b/src/main/java/io/choerodon/gitlab/app/service/HookService.java index 1d552d6..7b987d0 100644 --- a/src/main/java/io/choerodon/gitlab/app/service/HookService.java +++ b/src/main/java/io/choerodon/gitlab/app/service/HookService.java @@ -2,7 +2,6 @@ import java.util.List; -import org.gitlab4j.api.models.CommitStatuse; import org.gitlab4j.api.models.ProjectHook; @@ -23,4 +22,6 @@ public interface HookService { ProjectHook updateProjectHook(Integer projectId,Integer hookId, Integer userId); List listProjectHook(Integer projectId, Integer userId); + + ProjectHook updateProjectHook(Integer projectId, Integer hookId, Integer userId, ProjectHook projectHook); } diff --git a/src/main/java/io/choerodon/gitlab/app/service/ProjectService.java b/src/main/java/io/choerodon/gitlab/app/service/ProjectService.java index a9c0d00..8f2d64c 100644 --- a/src/main/java/io/choerodon/gitlab/app/service/ProjectService.java +++ b/src/main/java/io/choerodon/gitlab/app/service/ProjectService.java @@ -251,4 +251,7 @@ Map createProtectedBranches(Integer projectId, Project updateNameAndPath(Integer projectId, Integer userId, String name); + List getAllMemberByProjectIdAndQuery(Integer projectId, String query); + + Member getAllMember(Integer projectId, Integer userId); } diff --git a/src/main/java/io/choerodon/gitlab/app/service/RepositoryService.java b/src/main/java/io/choerodon/gitlab/app/service/RepositoryService.java index 6697f98..4265de7 100644 --- a/src/main/java/io/choerodon/gitlab/app/service/RepositoryService.java +++ b/src/main/java/io/choerodon/gitlab/app/service/RepositoryService.java @@ -105,16 +105,6 @@ public interface RepositoryService { */ List listBranches(Integer projectId, Integer userId, AppExternalConfigDTO appExternalConfigDTO); - -// /** -// * 项目下创建readme -// * -// * @param projectId 项目id -// * @param userId 用户Id -// */ -// boolean createFile(Integer projectId, Integer userId); - - /** * 项目下获取file * diff --git a/src/main/java/io/choerodon/gitlab/app/service/UserService.java b/src/main/java/io/choerodon/gitlab/app/service/UserService.java index 90e03d1..0cbc780 100644 --- a/src/main/java/io/choerodon/gitlab/app/service/UserService.java +++ b/src/main/java/io/choerodon/gitlab/app/service/UserService.java @@ -10,6 +10,8 @@ public interface UserService { + List getAdminUsers(); + /** * 获得当前用户信息 * diff --git a/src/main/java/io/choerodon/gitlab/app/service/impl/GroupServiceImpl.java b/src/main/java/io/choerodon/gitlab/app/service/impl/GroupServiceImpl.java index 9e3698d..e3b8a66 100644 --- a/src/main/java/io/choerodon/gitlab/app/service/impl/GroupServiceImpl.java +++ b/src/main/java/io/choerodon/gitlab/app/service/impl/GroupServiceImpl.java @@ -7,12 +7,15 @@ import org.gitlab4j.api.GitLabApi; import org.gitlab4j.api.GitLabApiException; import org.gitlab4j.api.GroupApi; +import org.gitlab4j.api.Pager; import org.gitlab4j.api.models.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import io.choerodon.core.domain.Page; +import io.choerodon.core.domain.PageInfo; import io.choerodon.core.exception.FeignException; import io.choerodon.gitlab.api.vo.GroupVO; import io.choerodon.gitlab.api.vo.MemberVO; @@ -238,9 +241,7 @@ public void deleteVariable(Integer groupId, String key, Integer userId) { @Override public void batchDeleteVariable(Integer groupId, List keys, Integer userId) { - keys.forEach(key -> { - deleteVariable(groupId, key, userId); - }); + keys.forEach(key -> deleteVariable(groupId, key, userId)); } @Override @@ -264,11 +265,16 @@ public List batchCreateVariable(Integer groupId, List list } @Override - public List listProjects(Integer groupId, Integer userId, Boolean owned, String search, Integer page, Integer perPage) { + public List listProjects(Integer groupId, Integer userId, Boolean owned, String search, Integer page, Integer perPage, Integer minAccessLevel) { GitLabApi gitLabApi = gitlab4jclient.getGitLabApi(userId); try { GroupProjectsFilter groupProjectsFilter = new GroupProjectsFilter(); - groupProjectsFilter.withOwned(owned).withSearch(search).withPage(page).withPerPage(perPage); + groupProjectsFilter + .withOwned(owned) + .withSearch(search) + .withPage(page) + .withPerPage(perPage) + .withMinAccessLevel(minAccessLevel); return gitLabApi.getGroupApi().getProjects(groupId, groupProjectsFilter); } catch (GitLabApiException e) { throw new FeignException(e.getMessage(), e); @@ -285,4 +291,42 @@ public List queryGroupWithStatisticsByName(String groupName, Integer user return null; } } + + @Override + public Group queryGroupByIid(Integer groupIid, Integer userId) { + GitLabApi gitLabApi = gitlab4jclient.getGitLabApi(userId); + try { + return gitLabApi.getGroupApi().getGroup(groupIid); + } catch (GitLabApiException e) { + throw new FeignException(e.getMessage(), e); + } + } + + @Override + public Page pageMember(Integer groupId, Integer page, Integer size, Integer userId, String search) { + GitLabApi gitLabApi = gitlab4jclient.getGitLabApi(userId); + try { + Pager allMembers = gitLabApi.getGroupApi().getAllMembers(groupId, search, null, page + 1, size); + return new Page<>(allMembers.getCurrentItems(), new PageInfo(page, size), allMembers.getTotalItems()); + } catch (GitLabApiException e) { + throw new FeignException(e.getMessage(), e); + } + } + + @Override + public Page pagingGroupsWithParam(Integer userId, Integer page, Integer size, Boolean owned, String search, List skipGroups, Integer minAccessLevel) { + GitLabApi gitLabApi = gitlab4jclient.getGitLabApi(userId); + try { + GroupFilter groupFilter = new GroupFilter(); + if (minAccessLevel != null) { + groupFilter.withSkipGroups(skipGroups).withOwned(owned).withSearch(search).withMinAccessLevel(AccessLevel.forValue(minAccessLevel)); + } else { + groupFilter.withSkipGroups(skipGroups).withOwned(owned).withSearch(search); + } + Pager groups = gitLabApi.getGroupApi().getGroups(groupFilter, page + 1, size); + return new Page<>(groups.getCurrentItems(), new PageInfo(page, size), groups.getTotalItems()); + } catch (GitLabApiException e) { + throw new FeignException(e.getMessage(), e); + } + } } \ No newline at end of file diff --git a/src/main/java/io/choerodon/gitlab/app/service/impl/HookServiceImpl.java b/src/main/java/io/choerodon/gitlab/app/service/impl/HookServiceImpl.java index 1bfbf7d..34b4bed 100644 --- a/src/main/java/io/choerodon/gitlab/app/service/impl/HookServiceImpl.java +++ b/src/main/java/io/choerodon/gitlab/app/service/impl/HookServiceImpl.java @@ -53,4 +53,13 @@ public List listProjectHook(Integer projectId,Integer userId) { } } + + @Override + public ProjectHook updateProjectHook(Integer projectId, Integer hookId, Integer userId, ProjectHook projectHook) { + try { + return gitlab4jclient.getGitLabApi(userId).getProjectApi().modifyHook(projectHook); + } catch (GitLabApiException e) { + throw new FeignException(e.getMessage(), e); + } + } } diff --git a/src/main/java/io/choerodon/gitlab/app/service/impl/MergeRequestServiceImpl.java b/src/main/java/io/choerodon/gitlab/app/service/impl/MergeRequestServiceImpl.java index 9bb26f9..e5985a3 100644 --- a/src/main/java/io/choerodon/gitlab/app/service/impl/MergeRequestServiceImpl.java +++ b/src/main/java/io/choerodon/gitlab/app/service/impl/MergeRequestServiceImpl.java @@ -3,6 +3,7 @@ import java.util.List; import java.util.stream.Collectors; +import org.gitlab4j.api.Constants; import org.gitlab4j.api.GitLabApiException; import org.gitlab4j.api.models.Commit; import org.gitlab4j.api.models.MergeRequest; @@ -68,7 +69,7 @@ public MergeRequest queryMergeRequest(Integer projectId, Integer mergeRequestId, public List listMergeRequests(Integer projectId) { try { return gitlab4jclient.getGitLabApi(null).getMergeRequestApi() - .getMergeRequests(projectId); + .getMergeRequests(projectId, Constants.MergeRequestState.ALL); } catch (GitLabApiException e) { throw new FeignException("error.mergeRequests.list"); } diff --git a/src/main/java/io/choerodon/gitlab/app/service/impl/ProjectServiceImpl.java b/src/main/java/io/choerodon/gitlab/app/service/impl/ProjectServiceImpl.java index 15152a2..077da04 100644 --- a/src/main/java/io/choerodon/gitlab/app/service/impl/ProjectServiceImpl.java +++ b/src/main/java/io/choerodon/gitlab/app/service/impl/ProjectServiceImpl.java @@ -317,4 +317,25 @@ public Project updateNameAndPath(Integer projectId, Integer userId, String name) throw new FeignException(e.getMessage(), e); } } + + @Override + public List getAllMemberByProjectIdAndQuery(Integer projectId, String query) { + try { + return gitlab4jclient.getGitLabApi().getProjectApi().getAllMembers(projectId, query); + } catch (GitLabApiException e) { + throw new FeignException(e.getMessage(), e); + } + } + + @Override + public Member getAllMember(Integer projectId, Integer userId) { + try { + return gitlab4jclient.getGitLabApi().getProjectApi().getMember(projectId, userId, true); + } catch (GitLabApiException e) { + LOGGER.error("no member found"); + Member member = new Member(); + member.setAccessLevel(AccessLevel.NONE); + return member; + } + } } \ No newline at end of file diff --git a/src/main/java/io/choerodon/gitlab/app/service/impl/RepositoryServiceImpl.java b/src/main/java/io/choerodon/gitlab/app/service/impl/RepositoryServiceImpl.java index c7b8430..0ddcdc5 100644 --- a/src/main/java/io/choerodon/gitlab/app/service/impl/RepositoryServiceImpl.java +++ b/src/main/java/io/choerodon/gitlab/app/service/impl/RepositoryServiceImpl.java @@ -26,8 +26,6 @@ @Service public class RepositoryServiceImpl implements RepositoryService { - private static final Logger logger = LoggerFactory.getLogger(RepositoryServiceImpl.class); - private Gitlab4jClient gitlab4jclient; public RepositoryServiceImpl(Gitlab4jClient gitlab4jclient) { diff --git a/src/main/java/io/choerodon/gitlab/app/service/impl/UserServiceImpl.java b/src/main/java/io/choerodon/gitlab/app/service/impl/UserServiceImpl.java index 854a687..6d04b6f 100644 --- a/src/main/java/io/choerodon/gitlab/app/service/impl/UserServiceImpl.java +++ b/src/main/java/io/choerodon/gitlab/app/service/impl/UserServiceImpl.java @@ -5,6 +5,7 @@ import org.gitlab4j.api.Constants; import org.gitlab4j.api.GitLabApiException; +import org.gitlab4j.api.Pager; import org.gitlab4j.api.UserApi; import org.gitlab4j.api.models.Email; import org.gitlab4j.api.models.ImpersonationToken; @@ -53,6 +54,16 @@ public List listUser(Integer perPage, Integer page, Boolean active) { } } + @Override + public List getAdminUsers() { + try { + Pager adminUsers = gitlab4jclient.getGitLabApi().getUserApi().getAdminUsers(1, 100); + return adminUsers.all(); + } catch (GitLabApiException e) { + throw new FeignException(e.getMessage(), e); + } + } + @Override public User queryCurrentUser() { try { diff --git a/src/main/java/io/choerodon/gitlab/infra/common/config/GitlabHealthy.java b/src/main/java/io/choerodon/gitlab/infra/common/config/GitlabHealthy.java index b96df31..7dd5262 100644 --- a/src/main/java/io/choerodon/gitlab/infra/common/config/GitlabHealthy.java +++ b/src/main/java/io/choerodon/gitlab/infra/common/config/GitlabHealthy.java @@ -1,10 +1,9 @@ package io.choerodon.gitlab.infra.common.config; -import io.choerodon.core.exception.CommonException; -import io.choerodon.core.exception.FeignException; -import io.choerodon.gitlab.app.service.impl.GroupServiceImpl; import org.gitlab4j.api.GitLabApi; import org.gitlab4j.api.GitLabApiException; +import org.gitlab4j.api.models.ApplicationSettings; +import org.gitlab4j.api.models.Setting; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; @@ -12,6 +11,9 @@ import org.springframework.boot.actuate.health.HealthIndicator; import org.springframework.stereotype.Component; +import io.choerodon.core.exception.CommonException; +import io.choerodon.core.exception.FeignException; + @Component public class GitlabHealthy implements HealthIndicator { @@ -44,7 +46,10 @@ public Health health() { return Health.down().withDetail("Error Code", "the token or the url is error, or the ingress resolution error!").build(); } else { try { - gitLabApi.getApplicationApi().modifyApplicationSetting(true); + ApplicationSettings applicationSettings = gitLabApi.getApplicationSettingsApi().getApplicationSettings(); + if (!Boolean.TRUE.equals(applicationSettings.getSetting(Setting.ALLOW_LOCAL_REQUESTS_FROM_WEB_HOOKS_AND_SERVICES))) { + gitLabApi.getApplicationSettingsApi().updateApplicationSetting(Setting.ALLOW_LOCAL_REQUESTS_FROM_WEB_HOOKS_AND_SERVICES, true); + } } catch (GitLabApiException e) { throw new FeignException(e); } diff --git a/src/main/resources/messages/messages_zh_CN.properties b/src/main/resources/messages/messages_zh_CN.properties index df59402..fe0a083 100644 --- a/src/main/resources/messages/messages_zh_CN.properties +++ b/src/main/resources/messages/messages_zh_CN.properties @@ -55,4 +55,5 @@ error.member.projects.list=获取用户的gitlab项目失败 error.user.email.check=用户邮箱校验失败 error.reset.user.password=重置用户密码失败 error.group.variable.get=获取组变量失败 -error.group.variable.create=创建组变量失败 \ No newline at end of file +error.group.variable.create=创建组变量失败 +error.key-encrypt.decrypt.abnormal_content=页面失效,请重新访问首页进入 \ No newline at end of file