Procházet zdrojové kódy

modify: 更新k8s以及gitlabapi

370774330@qq.com před 5 roky
rodič
revize
a717700090
21 změnil soubory, kde provedl 190 přidání a 829 odebrání
  1. 5 0
      api/pom.xml
  2. 0 13
      api/src/main/java/seecoder/devcloud/api/ApplicationProperties.java
  3. 4 4
      api/src/main/java/seecoder/devcloud/api/DevcloudApiAutoConfiguration.java
  4. 0 144
      api/src/main/java/seecoder/devcloud/api/gitlab/GitlabApi.java
  5. 0 381
      api/src/main/java/seecoder/devcloud/api/gitlab/impl/GitlabApiImpl.java
  6. 0 18
      api/src/main/java/seecoder/devcloud/api/gitlab/model/CommitDetails.java
  7. 0 19
      api/src/main/java/seecoder/devcloud/api/gitlab/model/GitlabGroup.java
  8. 0 10
      api/src/main/java/seecoder/devcloud/api/gitlab/model/GitlabUser.java
  9. 92 0
      api/src/main/java/seecoder/devcloud/api/k8s/K8sApiConfiguration.java
  10. 5 4
      api/src/main/java/seecoder/devcloud/api/k8s/impl/ExecApiImpl.java
  11. 10 10
      api/src/main/java/seecoder/devcloud/api/k8s/impl/IngressApiImpl.java
  12. 6 4
      api/src/main/java/seecoder/devcloud/api/k8s/impl/LogApiImpl.java
  13. 11 10
      api/src/main/java/seecoder/devcloud/api/k8s/impl/NamespaceApiImpl.java
  14. 12 11
      api/src/main/java/seecoder/devcloud/api/k8s/impl/PersistentVolumeClaimImpl.java
  15. 10 9
      api/src/main/java/seecoder/devcloud/api/k8s/impl/PodApiImpl.java
  16. 13 7
      api/src/main/java/seecoder/devcloud/api/k8s/impl/SecretApiImpl.java
  17. 14 10
      api/src/main/java/seecoder/devcloud/api/k8s/impl/ServiceApiImpl.java
  18. 7 2
      web/pom.xml
  19. 0 126
      web/src/main/resources/application-dev.yml
  20. 0 46
      web/src/main/resources/application-prod.yml
  21. 1 1
      web/src/main/resources/application.yml

+ 5 - 0
api/pom.xml

@@ -25,6 +25,11 @@
 
 
     <dependencies>
+        <dependency>
+            <groupId>com.nju.edu</groupId>
+            <artifactId>seecoder-gitlab-client</artifactId>
+            <version>0.1.0</version>
+        </dependency>
         <!-- https://mvnrepository.com/artifact/org.eclipse.jgit/org.eclipse.jgit -->
         <dependency>
             <groupId>org.eclipse.jgit</groupId>

+ 0 - 13
api/src/main/java/seecoder/devcloud/api/ApplicationProperties.java

@@ -9,7 +9,6 @@ import org.springframework.validation.annotation.Validated;
 import javax.validation.Valid;
 import javax.validation.constraints.Email;
 import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
 
 @Data
 @Configuration
@@ -35,18 +34,6 @@ public class ApplicationProperties {
 		@NotEmpty
 		private String host;
 
-		//private String gitProxy;
-		/**
-		 * 回调地址
-		 */
-		@URL
-		@NotEmpty
-		private String webHookProxy;
-
-
-        @NotNull
-        private Integer userId = 1;
-
 		/**
 		 * 采用的Personal/project access tokens的认证方式
 		 * 这里使用管理员的token

+ 4 - 4
api/src/main/java/seecoder/devcloud/api/DevcloudApiAutoConfiguration.java

@@ -1,5 +1,7 @@
 package seecoder.devcloud.api;
 
+import com.nju.edu.gitlab.SeecoderGitlabApi;
+import com.nju.edu.gitlab.SeecoderGitlabClient;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -7,8 +9,6 @@ import seecoder.devcloud.api.docker.DockerApi;
 import seecoder.devcloud.api.docker.impl.DockerApiImpl;
 import seecoder.devcloud.api.git.GitApi;
 import seecoder.devcloud.api.git.impl.GitApiImpl;
-import seecoder.devcloud.api.gitlab.GitlabApi;
-import seecoder.devcloud.api.gitlab.impl.GitlabApiImpl;
 import seecoder.devcloud.api.k8s.*;
 import seecoder.devcloud.api.k8s.impl.*;
 
@@ -27,8 +27,8 @@ public class DevcloudApiAutoConfiguration {
 
     @Bean
     @ConditionalOnBean(ApplicationProperties.class)
-    public GitlabApi gitlabApi(){
-        return new GitlabApiImpl(applicationProperties());
+    public SeecoderGitlabApi seecoderGitlabApi(){
+        return new SeecoderGitlabClient(applicationProperties().getGitlab().getHost(),applicationProperties().getGitlab().getToken());
     }
 
     @Bean

+ 0 - 144
api/src/main/java/seecoder/devcloud/api/gitlab/GitlabApi.java

@@ -1,144 +0,0 @@
-package seecoder.devcloud.api.gitlab;
-
-
-
-import seecoder.devcloud.api.gitlab.model.CommitDetails;
-import seecoder.devcloud.api.gitlab.model.GitlabGroup;
-import seecoder.devcloud.api.gitlab.model.GitlabUser;
-import org.gitlab4j.api.GitLabApiException;
-import org.gitlab4j.api.models.CommitAction;
-
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.util.List;
-import java.util.Set;
-
-public interface GitlabApi {
-	GitlabUser createUser(String username, String email, String password) throws GitLabApiException;
-
-
-	//10 => Guest access
-	//20 => Reporter access
-	//30 => Developer access
-	//40 => Maintainer access
-	//50 => Owner access # Only valid for groups
-	GitlabGroup createGroup(String groupName) throws GitLabApiException;
-
-
-	void addMemberToGroup(Integer groupId, Integer userId) throws GitLabApiException;
-
-	void quitGroup(Integer groupId, Integer userId) throws GitLabApiException;
-
-	Integer addProjectToGroup(Integer groupId, String projectName) throws GitLabApiException;
-
-	/**
-	 * 创建internal项目,默认登录用户可见,在个人作业中使用,因为个人项目的fork,只能用户来fork,所以设置为internal
-	 * @param name
-	 * @return
-	 * @throws GitLabApiException
-	 */
-	Integer createProject(String name) throws GitLabApiException;
-
-	/**
-	 * 创建私有项目,在团队作业中使用,因为root是在每个小组中的,所以root用户可以把该私有项目fork到指定组
-	 * 目前用户在团队里是master权限,团队的私有项目,目前团队里成员可见
-	 * @param name
-	 * @return
-	 * @throws GitLabApiException
-	 */
-	Integer createPrivateProject(String name) throws GitLabApiException;
-
-	Integer createProjectForGroup(String name, int groupId) throws GitLabApiException;
-
-	Integer forkProject(int userId, int projectId, int namespaceId) throws GitLabApiException;
-
-	Set<String> compare(int projectId, String from, String to) throws GitLabApiException;
-
-	void archiveProject(int projectId) throws GitLabApiException;
-
-	void changePassword(int userId, String password) throws GitLabApiException;
-
-	void deleteUser(int userId) throws GitLabApiException;
-
-	void deleteProject(int projectId) throws GitLabApiException;
-
-	/**
-	 * get file content
-	 * @param projectId
-	 * @param branch
-	 * @param path
-	 * @return
-	 */
-	String getRepositoryFile(int projectId, String branch, String path) throws GitLabApiException, UnsupportedEncodingException;
-
-	/**
-	 * create a commit
-	 * @param projectId
-	 * @param branch
-	 * @param commitMessage
-	 * @param email
-	 * @param username
-	 * @param actions
-	 */
-	void createCommit(int projectId, String branch, String commitMessage, String email, String username, List<CommitAction> actions) throws GitLabApiException;
-
-	/**
-	 * 获取root用户的id
-	 * @return
-	 **/
-	Integer getRootUserId();
-
-    /**
-     * 为文档作业fork项目,主要涉及webhook不同
-     * @param userId
-     * @param projectId
-     * @param namespaceId
-     * @return
-     * @throws GitLabApiException
-     */
-	Integer forkProjectForDocumentWork(int userId, int projectId, int namespaceId) throws GitLabApiException;
-
-    /**
-     * 为代码作业fork项目同时设置WebHook
-     * @param userId
-     * @param projectId
-     * @param namespaceId
-     * @return
-     * @throws GitLabApiException
-     */
-	Integer forkProjectForCodeWork(int userId, int projectId, int namespaceId) throws GitLabApiException;
-
-    /**
-     * 为深度学习作业fork项目并设置WebHook
-     *
-     * @param baseRepoId  需要fork的源项目Id
-     * @param namespaceId namespace的Id
-     * @return fork出的repository的Id
-     */
-    Integer forkProjectForDLWork(int baseRepoId, int namespaceId) throws GitLabApiException;
-
-    /**
-     * 获取某次提交后的文件内容
-     * @param projectId the id of the project in gitlab
-     * @param commit hash of the commit
-     * @param path path of the file
-     * @return
-     * @throws GitLabApiException
-     * @throws IOException
-     */
-    String getRawRepositoryFile(int projectId, String commit, String path) throws GitLabApiException, IOException;
-
-    CommitDetails getCommitMessage(int projectId, String commitHash) throws GitLabApiException;
-
-	/**
-	 * 找到该次commit所对应的branch 因为分支签出的关系,某个commit有可能属于多个分支
-	 * @param projectId
-	 * @param commitHash
-	 * @return
-	 * @throws GitLabApiException
-	 */
-	List<CommitDetails> getAllCommits(int projectId, String commitHash) throws GitLabApiException;
-
-
-
-}

+ 0 - 381
api/src/main/java/seecoder/devcloud/api/gitlab/impl/GitlabApiImpl.java

@@ -1,381 +0,0 @@
-package seecoder.devcloud.api.gitlab.impl;
-
-
-import seecoder.devcloud.api.ApplicationProperties;
-import seecoder.devcloud.api.gitlab.GitlabApi;
-import seecoder.devcloud.api.gitlab.model.CommitDetails;
-import seecoder.devcloud.api.gitlab.model.GitlabGroup;
-import seecoder.devcloud.api.gitlab.model.GitlabUser;
-import org.gitlab4j.api.*;
-import org.gitlab4j.api.models.*;
-import org.gitlab4j.api.models.ImpersonationToken.Scope;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import seecoder.devcloud.common.util.ToolKit;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.UnsupportedEncodingException;
-import java.nio.charset.StandardCharsets;
-import java.time.Instant;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.util.*;
-import java.util.stream.Collectors;
-
-@Component
-public class GitlabApiImpl implements GitlabApi {
-    private final ApplicationProperties.Gitlab gitlab;
-
-    private final GitLabApi server;
-
-    @Autowired
-    public GitlabApiImpl(ApplicationProperties properties) {
-        gitlab = properties.getGitlab();
-        this.server = new GitLabApi(gitlab.getHost(), gitlab.getToken());
-    }
-
-    @Override
-    public synchronized GitlabUser createUser(String username, String email,
-                                              String password) throws GitLabApiException {
-        User user = new User();
-        user.setUsername(username);
-        user.setEmail(email);
-        user.setName(username);
-        user.setSkipConfirmation(true);
-        user = server.getUserApi().createUser(user, password, 1000);
-        GitlabUser gitlabUser = new GitlabUser();
-        gitlabUser.setId(user.getId());
-        gitlabUser.setNamespace(fetchNamespace(username));
-        gitlabUser.setToken(createToken(user.getId()));
-        return gitlabUser;
-    }
-
-    //10 => Guest access
-    //20 => Reporter access
-    //30 => Developer access
-    //40 => Maintainer access
-    //50 => Owner access # Only valid for groups
-    @Override
-    public synchronized GitlabGroup createGroup(String groupName) throws GitLabApiException {
-
-        final Group group = server.getGroupApi().addGroup(groupName, groupName);//todo:Group默认private
-        GitlabGroup gitlabGroup = new GitlabGroup();
-        gitlabGroup.setId(group.getId());
-        final Integer ns1 = fetchNamespace("group", groupName);
-        gitlabGroup.setNamespace(ns1);//todo:Namespace
-
-//		server.getGroupApi().addMember(group.getId(), userId, 50);
-
-        return gitlabGroup;
-    }
-
-    @Override
-    public void addMemberToGroup(Integer groupId, Integer userId) throws GitLabApiException {
-        server.getGroupApi().addMember(groupId, userId, AccessLevel.MASTER);
-    }
-
-    @Override
-    public void quitGroup(Integer groupId, Integer userId) throws GitLabApiException {
-        server.getGroupApi().removeMember(groupId,userId);
-    }
-
-
-    @Override
-    public synchronized Integer addProjectToGroup(Integer groupId, String projectName) throws GitLabApiException {
-        final Project project = server.getProjectApi().createProject(groupId, projectName);
-        return project != null ? project.getId() : null;
-    }
-
-    private Integer fetchNamespace(String username) throws GitLabApiException {
-        Namespace namespace;
-        namespace = server.getNamespaceApi().findNamespaces(username)
-                .stream()
-                .filter(ns -> "user".equals(ns.getKind()))
-                .reduce((ns1, ns2) -> ns1.getId() > ns2.getId() ? ns1 : ns2)
-                .orElse(null);
-        return namespace != null ? namespace.getId() : null;
-    }
-
-    private Integer fetchNamespace(String type, String name) throws GitLabApiException {
-        Namespace namespace;
-        namespace = server.getNamespaceApi().findNamespaces(name)
-                .stream()
-                .filter(ns -> type.equals(ns.getKind()))
-                .reduce((ns1, ns2) -> ns1.getId() > ns2.getId() ? ns1 : ns2)
-                .orElse(null);
-        return namespace != null ? namespace.getId() : null;
-    }
-
-    private String createToken(int userId) throws GitLabApiException {
-        Scope[] scopes = new Scope[]{Scope.API};
-        ImpersonationToken token;
-        token = server.getUserApi().createImpersonationToken(userId, "AES-" + ToolKit.randomUUID(), null, scopes);
-        return token.getToken();
-    }
-
-    @Override
-    public synchronized Integer createProject(String name) throws GitLabApiException {
-        Project project = new Project();
-        project.setName(name);
-        project.setVisibility(Visibility.INTERNAL);
-        project = server.getProjectApi().createProject(project);
-        return project != null ? project.getId() : null;
-    }
-
-    @Override
-    public synchronized Integer createPrivateProject(String name) throws GitLabApiException {
-        Project project = new Project();
-        project.setName(name);
-        project.setVisibility(Visibility.PRIVATE);
-        project = server.getProjectApi().createProject(project);
-        return project != null ? project.getId() : null;
-    }
-
-    @Override
-    public synchronized Integer createProjectForGroup(String name, int groupId) throws GitLabApiException {
-        Project project = server.getProjectApi().createProject(groupId, name);
-        return project != null ? project.getId() : null;
-    }
-
-    @Override
-    public synchronized Integer forkProject(int userId, int projectId, int namespaceId) throws GitLabApiException {
-        Project project;
-        try {
-            server.setSudoAsId(userId);
-            project = server.getProjectApi().forkProject(projectId, namespaceId);
-            project.setVisibility(Visibility.PRIVATE);
-            project = server.getProjectApi().updateProject(project);
-        } finally {
-            server.unsudo();
-        }
-        if (project != null) {
-            createWebHook(project.getId());
-        }
-        return project != null ? project.getId() : null;
-    }
-
-    @Override
-    public synchronized Set<String> compare(int projectId, String from, String to) throws GitLabApiException {
-        CompareResults compareResults = server.getRepositoryApi().compare(projectId, from, to);
-        return compareResults.getDiffs().stream()
-                .map(Diff::getNewPath)
-                .map(p -> {
-                    int end = p.indexOf('/');
-                    if (end == -1) {
-                        end = p.length();
-                    }
-                    return p.substring(0, end);
-                })
-                .collect(Collectors.toSet());
-    }
-
-    private void createWebHook(int id) throws GitLabApiException {
-        String url = gitlab.getWebHookProxy() + "/internal/notify/webhook/" + id;
-        server.getProjectApi().addHook(id, url, true, false, false);
-    }
-
-    @Override
-    public synchronized void archiveProject(int projectId) throws GitLabApiException {
-        server.getProjectApi().archiveProject(projectId);
-    }
-
-    @Override
-    public synchronized void changePassword(int userId, String password) throws GitLabApiException {
-        User user = server.getUserApi().getUser(userId);
-        //server.getUserApi().modifyUser(user, password, user.getProjectsLimit());
-        server.getUserApi().updateUser(user, password);
-    }
-
-    @Override
-    public synchronized void deleteUser(int userId) throws GitLabApiException {
-        server.getUserApi().deleteUser(userId, true);
-    }
-
-    @Override
-    public void deleteProject(int projectId) throws GitLabApiException {
-        server.getProjectApi().deleteProject(projectId);
-    }
-
-    /**
-     * 获得项目下的文件
-     *
-     * @param path 文件的相对路径
-     * @return 文件内容
-     */
-    @Override
-    public String getRepositoryFile(int projectId, String branch,
-                                    String path) throws GitLabApiException, UnsupportedEncodingException {
-        RepositoryFileApi repositoryFileApi = server.getRepositoryFileApi();
-        RepositoryFile repositoryFile = repositoryFileApi.getFile(path, projectId, branch);
-        if (repositoryFile != null) {
-            return new String(Base64.getDecoder().decode(repositoryFile.getContent()), StandardCharsets.UTF_8);
-        }
-        return null;
-    }
-
-    @Override
-    public String getRawRepositoryFile(int projectId, String commit,
-                                       String path) throws GitLabApiException, IOException {
-        RepositoryFileApi repositoryFileApi = server.getRepositoryFileApi();
-        InputStream repositoryFile = repositoryFileApi.getRawFile(projectId, commit, path);
-        InputStreamReader reader = new InputStreamReader(repositoryFile);
-        StringBuilder stringBuilder = new StringBuilder();
-        char[] content = new char[1024];
-        int readCount = 0;
-        while ((readCount = reader.read(content)) > 0) {
-            stringBuilder.append(Arrays.copyOfRange(content, 0, readCount));
-        }
-        return stringBuilder.toString();
-    }
-
-    @Override
-    public void createCommit(int projectId, String branch, String commitMessage, String email, String username,
-                             List<CommitAction> actions) throws GitLabApiException {
-        CommitsApi commitsApi = server.getCommitsApi();
-        commitsApi.createCommit(projectId, branch, commitMessage, null, email, username, actions);
-    }
-
-    @Override
-    public Integer getRootUserId() {
-        return gitlab.getUserId();
-    }
-
-    @Override
-    public synchronized Integer forkProjectForDocumentWork(int userId, int projectId,
-                                                           int namespaceId) throws GitLabApiException {
-        Project project;
-        try {
-            server.setSudoAsId(userId);
-            project = server.getProjectApi().forkProject(projectId, namespaceId);
-            project.setVisibility(Visibility.PRIVATE);
-            project = server.getProjectApi().updateProject(project);
-        } finally {
-            server.unsudo();
-        }
-        if (project != null) {
-            String url = gitlab.getWebHookProxy() + "/internal/notify/webhook/document/" + project.getId();
-            server.getProjectApi().addHook(project, url, true, false, false);
-        }
-        return project != null ? project.getId() : null;
-    }
-
-    @Override
-    public Integer forkProjectForCodeWork(int userId, int projectId, int namespaceId) throws GitLabApiException {
-        Project project;
-        try {
-            server.setSudoAsId(userId);
-            project = server.getProjectApi().forkProject(projectId, namespaceId);
-            project.setVisibility(Visibility.PRIVATE);
-            project = server.getProjectApi().updateProject(project);
-        } finally {
-            server.unsudo();
-        }
-        if (project != null) {
-            // TODO
-            String url_build = gitlab.getWebHookProxy() + "/internal/notify/webhook/code/build/" + project.getId();
-            server.getProjectApi().addHook(project, url_build, true, false, false);
-            // TODO
-            String url_test = gitlab.getWebHookProxy() + "/internal/notify/webhook/code/unit/" + project.getId();
-            server.getProjectApi().addHook(project, url_test, true, false, false);
-        }
-        return project != null ? project.getId() : null;
-    }
-
-    @Override
-    public Integer forkProjectForDLWork(int baseRepoId, int namespaceId) throws GitLabApiException {
-        Project project;
-        ProjectApi projectApi = server.getProjectApi();
-        try {
-            server.setSudoAsId(getRootUserId());
-            project = projectApi.forkProject(baseRepoId, namespaceId);
-            project.setVisibility(Visibility.PRIVATE);
-            project = projectApi.updateProject(project);
-        } finally {
-            server.unsudo();
-        }
-
-        if (project != null) {
-            Integer newProjectId = project.getId();
-            final String webHookUrl = gitlab.getWebHookProxy() + "/internal/notify/webhook/dlwork/" + newProjectId;
-            projectApi.addHook(project, webHookUrl, true, false, false);
-            return newProjectId;
-        }
-        return null;
-    }
-
-
-    @Override
-    public CommitDetails getCommitMessage(int projectId, String commitHash) throws GitLabApiException {
-        CommitsApi commitsApi = server.getCommitsApi();
-        CommitDetails commitDetails = new CommitDetails();
-
-        commitDetails.setProjectId(projectId);
-        commitDetails.setCommitHash(commitHash);
-
-        Commit currentCommit = commitsApi.getCommit(projectId, commitHash);
-
-        RepositoryApi repositoryApi = server.getRepositoryApi();
-        List<Branch> branches = repositoryApi.getBranches(projectId);
-
-        branches.forEach(branch -> {
-            try {
-                List<Commit> commitList = commitsApi.getCommits(projectId, branch.getName(), null);
-                Commit theCommit = commitList.stream().filter(commit -> commit.getId().equals(currentCommit.getId()))
-                        .findFirst().orElse(null);
-
-                if(theCommit!=null){
-                    commitDetails.setBranch(branch.getName());
-                    commitDetails.setCommitMessage(theCommit.getMessage());
-                    commitDetails.setUrl(theCommit.getUrl());
-                    Instant instant = theCommit.getCommittedDate().toInstant();
-                    ZoneId zoneId = ZoneId.systemDefault();
-                    LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
-                    commitDetails.setTime(localDateTime);
-                    commitDetails.setAuthor(theCommit.getAuthorName());
-                }
-            } catch (GitLabApiException e) {
-                e.printStackTrace();
-            }
-        });
-
-        return commitDetails;
-    }
-    @Override
-    public List<CommitDetails> getAllCommits(int projectId, String commitHash) throws GitLabApiException {
-        CommitsApi commitsApi = server.getCommitsApi();
-        List<CommitDetails> list = new ArrayList<>();
-
-        Commit currentCommit = commitsApi.getCommit(projectId, commitHash);
-
-        RepositoryApi repositoryApi = server.getRepositoryApi();
-        List<Branch> branches = repositoryApi.getBranches(projectId);
-
-        branches.forEach(branch -> {
-            try {
-                List<Commit> commitList = commitsApi.getCommits(projectId, branch.getName(), null);
-                Commit theCommit = commitList.stream().filter(commit -> commit.getId().equals(currentCommit.getId()))
-                        .findFirst().orElse(null);
-
-                if(theCommit != null){
-                    CommitDetails commitDetails = new CommitDetails();
-                    commitDetails.setProjectId(projectId);
-                    commitDetails.setCommitHash(commitHash);
-                    commitDetails.setBranch(branch.getName());
-                    commitDetails.setCommitMessage(theCommit.getMessage());
-
-                    Instant instant = theCommit.getCommittedDate().toInstant();
-                    ZoneId zoneId = ZoneId.systemDefault();
-                    LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
-                    commitDetails.setTime(localDateTime);
-                    commitDetails.setAuthor(theCommit.getAuthorName());
-                    list.add(commitDetails);
-                }
-            } catch (GitLabApiException e) {
-                e.printStackTrace();
-            }
-        });
-        return list;
-    }
-}

+ 0 - 18
api/src/main/java/seecoder/devcloud/api/gitlab/model/CommitDetails.java

@@ -1,18 +0,0 @@
-package seecoder.devcloud.api.gitlab.model;
-
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Data
-public class CommitDetails {
-    private int projectId;
-    private String commitHash;
-    private LocalDateTime time;
-    private String commitMessage;
-    private String branch;
-    private String author;
-    private String url;
-    private boolean isBranchValid;
-    private boolean isMessageValid;
-}

+ 0 - 19
api/src/main/java/seecoder/devcloud/api/gitlab/model/GitlabGroup.java

@@ -1,19 +0,0 @@
-package seecoder.devcloud.api.gitlab.model;
-import lombok.Data;
-
-/**
- * @ClassName GitlabGroup
- * @PackageName com.moekr.moocoder.logic.api.vo
- * @Author sheen
- * @Date 2018/12/24
- * @Version 1.0
- * @Description //TODO
- **/
-
-
-@Data
-
-public class GitlabGroup {
-    private Integer id;
-    private Integer namespace;
-}

+ 0 - 10
api/src/main/java/seecoder/devcloud/api/gitlab/model/GitlabUser.java

@@ -1,10 +0,0 @@
-package seecoder.devcloud.api.gitlab.model;
-
-import lombok.Data;
-
-@Data
-public class GitlabUser {
-	private Integer id;
-	private Integer namespace;
-	private String token;
-}

+ 92 - 0
api/src/main/java/seecoder/devcloud/api/k8s/K8sApiConfiguration.java

@@ -0,0 +1,92 @@
+package seecoder.devcloud.api.k8s;
+
+import io.kubernetes.client.Exec;
+import io.kubernetes.client.openapi.ApiClient;
+import io.kubernetes.client.openapi.apis.AppsV1Api;
+import io.kubernetes.client.openapi.apis.CoreV1Api;
+import io.kubernetes.client.openapi.apis.ExtensionsV1beta1Api;
+import io.kubernetes.client.util.Config;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import seecoder.devcloud.api.ApplicationProperties;
+
+
+@Configuration
+public class K8sApiConfiguration {
+
+    private final ApiClient apiClient;
+
+    private final CoreV1Api coreV1Api;
+
+    private final AppsV1Api appsV1Api;
+
+    private final ExtensionsV1beta1Api extensionsV1beta1Api;
+
+    private final Exec exec;
+
+    /**
+     * http读取的超时时间设置为7分钟
+     */
+    private final ApiClient watchApiClient;
+
+    private final CoreV1Api watchCoreV1Api;
+
+    private final AppsV1Api watchAppsV1Api;
+
+    public K8sApiConfiguration(ApplicationProperties applicationProperties) {
+        ApplicationProperties.K8s k8s = applicationProperties.getK8s();
+        this.apiClient = Config.fromToken(k8s.getApiServer(), k8s.getToken(), k8s.getValidateSSL());
+        this.apiClient.setDebugging(k8s.getDebugging());
+        io.kubernetes.client.openapi.Configuration.setDefaultApiClient(this.apiClient);
+        this.coreV1Api = new CoreV1Api();
+        this.appsV1Api = new AppsV1Api();
+        this.extensionsV1beta1Api = new ExtensionsV1beta1Api();
+        this.exec = new Exec();
+
+
+        this.watchApiClient = Config.fromToken(k8s.getApiServer(), k8s.getToken(), k8s.getValidateSSL());
+        this.watchCoreV1Api = new CoreV1Api(watchApiClient);
+        this.watchAppsV1Api = new AppsV1Api(watchApiClient);
+    }
+
+    @Bean
+    public ApiClient apiClient() {
+        return apiClient;
+    }
+
+    @Bean
+    public CoreV1Api coreV1Api() {
+        return coreV1Api;
+    }
+
+    @Bean
+    public AppsV1Api appsV1Api() {
+        return appsV1Api;
+    }
+
+    @Bean
+    public ExtensionsV1beta1Api extensionsV1beta1Api() {
+        return extensionsV1beta1Api;
+    }
+
+    @Bean
+    public Exec exec() {
+        return exec;
+    }
+
+
+    @Bean
+    public ApiClient watchApiClient() {
+        return watchApiClient;
+    }
+
+    @Bean
+    public CoreV1Api watchCoreV1Api() {
+        return watchCoreV1Api;
+    }
+
+    @Bean
+    public AppsV1Api watchAppsV1Api() {
+        return watchAppsV1Api;
+    }
+}

+ 5 - 4
api/src/main/java/seecoder/devcloud/api/k8s/impl/ExecApiImpl.java

@@ -1,19 +1,20 @@
 package seecoder.devcloud.api.k8s.impl;
 
-import cn.seecoder.paas.service.facade.k8s.ExecApi;
-import cn.seecoder.paas.service.facade.k8s.exception.K8sApiException;
-import cn.seecoder.paas.util.LoggerUtil;
+
 import io.kubernetes.client.Exec;
 import io.kubernetes.client.openapi.ApiException;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import seecoder.devcloud.api.k8s.ExecApi;
+import seecoder.devcloud.api.k8s.exception.K8sApiException;
+import seecoder.devcloud.common.util.LoggerUtil;
 
 import java.io.IOException;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
-import static cn.seecoder.paas.service.facade.k8s.exception.K8sApiException.NOT_FOUND;
+import static seecoder.devcloud.api.k8s.exception.K8sApiException.NOT_FOUND;
 
 
 @Service

+ 10 - 10
api/src/main/java/seecoder/devcloud/api/k8s/impl/IngressApiImpl.java

@@ -1,11 +1,5 @@
 package seecoder.devcloud.api.k8s.impl;
 
-import cn.seecoder.paas.service.facade.k8s.IngressApi;
-import cn.seecoder.paas.service.facade.k8s.exception.K8sApiException;
-import cn.seecoder.paas.service.facade.k8s.model.Ingress;
-import cn.seecoder.paas.service.facade.k8s.model.K8sObjectRequest;
-import cn.seecoder.paas.service.facade.k8s.model.LabelSelector;
-import cn.seecoder.paas.util.LoggerUtil;
 import com.google.gson.JsonSyntaxException;
 import io.kubernetes.client.openapi.ApiException;
 import io.kubernetes.client.openapi.apis.ExtensionsV1beta1Api;
@@ -16,14 +10,20 @@ import io.kubernetes.client.openapi.models.V1DeleteOptionsBuilder;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import seecoder.devcloud.api.k8s.IngressApi;
+import seecoder.devcloud.api.k8s.exception.K8sApiException;
+import seecoder.devcloud.api.k8s.model.Ingress;
+import seecoder.devcloud.api.k8s.model.K8sObjectRequest;
+import seecoder.devcloud.api.k8s.model.LabelSelector;
+import seecoder.devcloud.common.util.LoggerUtil;
 
 import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import static cn.seecoder.paas.service.facade.k8s.K8sConstants.FOREGROUND_PROPAGATION_POLICY;
-import static cn.seecoder.paas.service.facade.k8s.K8sConstants.PRETTY_FORMAT;
-import static cn.seecoder.paas.service.facade.k8s.exception.K8sApiException.*;
+import static seecoder.devcloud.api.k8s.K8sConstants.FOREGROUND_PROPAGATION_POLICY;
+import static seecoder.devcloud.api.k8s.K8sConstants.PRETTY_FORMAT;
+import static seecoder.devcloud.api.k8s.exception.K8sApiException.*;
 
 /**
  * author: rale
@@ -70,7 +70,7 @@ public class IngressApiImpl implements IngressApi {
             }
         } catch (Exception e) {
             LoggerUtil.error(logger, e, "ingress 创建异常,ingress={}", ingress);
-            throw K8sApiException.K8s_SYSTEM_ERROR_EXCEPTION;
+            throw K8s_SYSTEM_ERROR_EXCEPTION;
         }
     }
 

+ 6 - 4
api/src/main/java/seecoder/devcloud/api/k8s/impl/LogApiImpl.java

@@ -1,17 +1,19 @@
 package seecoder.devcloud.api.k8s.impl;
 
-import cn.seecoder.paas.service.facade.k8s.LogApi;
-import cn.seecoder.paas.service.facade.k8s.exception.K8sApiException;
-import cn.seecoder.paas.util.LoggerUtil;
+
 import io.kubernetes.client.openapi.ApiException;
 import io.kubernetes.client.openapi.apis.CoreV1Api;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import seecoder.devcloud.api.k8s.LogApi;
+import seecoder.devcloud.api.k8s.exception.K8sApiException;
+import seecoder.devcloud.common.util.LoggerUtil;
 
 import java.time.LocalDateTime;
 
-import static cn.seecoder.paas.service.facade.k8s.K8sConstants.PRETTY_FORMAT;
+import static seecoder.devcloud.api.k8s.K8sConstants.PRETTY_FORMAT;
+
 
 /**
  * author: rale

+ 11 - 10
api/src/main/java/seecoder/devcloud/api/k8s/impl/NamespaceApiImpl.java

@@ -1,11 +1,5 @@
 package seecoder.devcloud.api.k8s.impl;
 
-import cn.seecoder.paas.service.facade.k8s.NamespaceApi;
-import cn.seecoder.paas.service.facade.k8s.exception.K8sApiException;
-import cn.seecoder.paas.service.facade.k8s.model.K8sObjectRequest;
-import cn.seecoder.paas.service.facade.k8s.model.LabelSelector;
-import cn.seecoder.paas.service.facade.k8s.model.Namespace;
-import cn.seecoder.paas.util.LoggerUtil;
 import com.google.gson.JsonSyntaxException;
 import io.kubernetes.client.openapi.ApiException;
 import io.kubernetes.client.openapi.apis.CoreV1Api;
@@ -16,14 +10,21 @@ import io.kubernetes.client.openapi.models.V1NamespaceList;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import seecoder.devcloud.api.k8s.NamespaceApi;
+import seecoder.devcloud.api.k8s.exception.K8sApiException;
+import seecoder.devcloud.api.k8s.model.K8sObjectRequest;
+import seecoder.devcloud.api.k8s.model.LabelSelector;
+import seecoder.devcloud.api.k8s.model.Namespace;
+import seecoder.devcloud.common.util.LoggerUtil;
 
 import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import static cn.seecoder.paas.service.facade.k8s.K8sConstants.FOREGROUND_PROPAGATION_POLICY;
-import static cn.seecoder.paas.service.facade.k8s.K8sConstants.PRETTY_FORMAT;
-import static cn.seecoder.paas.service.facade.k8s.exception.K8sApiException.*;
+import static seecoder.devcloud.api.k8s.K8sConstants.FOREGROUND_PROPAGATION_POLICY;
+import static seecoder.devcloud.api.k8s.K8sConstants.PRETTY_FORMAT;
+import static seecoder.devcloud.api.k8s.exception.K8sApiException.*;
+
 
 @Service
 public class NamespaceApiImpl implements NamespaceApi {
@@ -53,7 +54,7 @@ public class NamespaceApiImpl implements NamespaceApi {
         } catch (ApiException e) {
             LoggerUtil.error(logger, e, "Namespace创建失败,namespace={}, v1Namespace={}, response={}", namespace, v1Namespace, e.getResponseBody());
             if (e.getCode() == ALREADY_EXIST) {
-                throw new K8sApiException(K8sApiException.ALREADY_EXIST);
+                throw new K8sApiException(ALREADY_EXIST);
             } else {
                 throw K8s_SYSTEM_ERROR_EXCEPTION;
             }

+ 12 - 11
api/src/main/java/seecoder/devcloud/api/k8s/impl/PersistentVolumeClaimImpl.java

@@ -1,12 +1,5 @@
 package seecoder.devcloud.api.k8s.impl;
 
-import cn.seecoder.paas.service.facade.k8s.DeploymentApi;
-import cn.seecoder.paas.service.facade.k8s.PersistentVolumeClaimApi;
-import cn.seecoder.paas.service.facade.k8s.exception.K8sApiException;
-import cn.seecoder.paas.service.facade.k8s.model.K8sObjectRequest;
-import cn.seecoder.paas.service.facade.k8s.model.LabelSelector;
-import cn.seecoder.paas.service.facade.k8s.model.PersistentVolumeClaim;
-import cn.seecoder.paas.util.LoggerUtil;
 import com.google.gson.JsonSyntaxException;
 import io.kubernetes.client.custom.V1Patch;
 import io.kubernetes.client.openapi.ApiException;
@@ -18,15 +11,23 @@ import io.kubernetes.client.openapi.models.V1PersistentVolumeClaimList;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import seecoder.devcloud.api.k8s.DeploymentApi;
+import seecoder.devcloud.api.k8s.PersistentVolumeClaimApi;
+import seecoder.devcloud.api.k8s.exception.K8sApiException;
+import seecoder.devcloud.api.k8s.model.K8sObjectRequest;
+import seecoder.devcloud.api.k8s.model.LabelSelector;
+import seecoder.devcloud.api.k8s.model.PersistentVolumeClaim;
+import seecoder.devcloud.common.util.LoggerUtil;
 
 import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import static cn.seecoder.paas.service.facade.k8s.K8sConstants.FOREGROUND_PROPAGATION_POLICY;
-import static cn.seecoder.paas.service.facade.k8s.K8sConstants.PRETTY_FORMAT;
-import static cn.seecoder.paas.service.facade.k8s.exception.K8sApiException.ALREADY_EXIST;
-import static cn.seecoder.paas.service.facade.k8s.exception.K8sApiException.NOT_FOUND;
+import static seecoder.devcloud.api.k8s.K8sConstants.FOREGROUND_PROPAGATION_POLICY;
+import static seecoder.devcloud.api.k8s.K8sConstants.PRETTY_FORMAT;
+import static seecoder.devcloud.api.k8s.exception.K8sApiException.ALREADY_EXIST;
+import static seecoder.devcloud.api.k8s.exception.K8sApiException.NOT_FOUND;
+
 
 @Service
 public class PersistentVolumeClaimImpl implements PersistentVolumeClaimApi {

+ 10 - 9
api/src/main/java/seecoder/devcloud/api/k8s/impl/PodApiImpl.java

@@ -1,11 +1,5 @@
 package seecoder.devcloud.api.k8s.impl;
 
-import cn.seecoder.paas.service.facade.k8s.PodApi;
-import cn.seecoder.paas.service.facade.k8s.model.K8sObjectRequest;
-import cn.seecoder.paas.service.facade.k8s.model.LabelSelector;
-import cn.seecoder.paas.service.facade.k8s.model.Namespace;
-import cn.seecoder.paas.service.facade.k8s.model.Pod;
-import cn.seecoder.paas.util.LoggerUtil;
 import com.google.gson.JsonSyntaxException;
 import io.kubernetes.client.openapi.ApiException;
 import io.kubernetes.client.openapi.apis.CoreV1Api;
@@ -16,14 +10,21 @@ import io.kubernetes.client.openapi.models.V1PodList;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import seecoder.devcloud.api.k8s.PodApi;
+import seecoder.devcloud.api.k8s.model.K8sObjectRequest;
+import seecoder.devcloud.api.k8s.model.LabelSelector;
+import seecoder.devcloud.api.k8s.model.Namespace;
+import seecoder.devcloud.api.k8s.model.Pod;
+import seecoder.devcloud.common.util.LoggerUtil;
 
 import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import static cn.seecoder.paas.service.facade.k8s.K8sConstants.FOREGROUND_PROPAGATION_POLICY;
-import static cn.seecoder.paas.service.facade.k8s.K8sConstants.PRETTY_FORMAT;
-import static cn.seecoder.paas.service.facade.k8s.exception.K8sApiException.*;
+import static seecoder.devcloud.api.k8s.K8sConstants.FOREGROUND_PROPAGATION_POLICY;
+import static seecoder.devcloud.api.k8s.K8sConstants.PRETTY_FORMAT;
+import static seecoder.devcloud.api.k8s.exception.K8sApiException.K8s_NOT_SUPPORT_METHOD;
+import static seecoder.devcloud.api.k8s.exception.K8sApiException.NOT_FOUND;
 
 /**
  * author: rale

+ 13 - 7
api/src/main/java/seecoder/devcloud/api/k8s/impl/SecretApiImpl.java

@@ -1,11 +1,6 @@
 package seecoder.devcloud.api.k8s.impl;
 
 
-import cn.seecoder.paas.service.facade.k8s.SecretApi;
-import cn.seecoder.paas.service.facade.k8s.exception.K8sApiException;
-import cn.seecoder.paas.service.facade.k8s.util.SecretTypeEnum;
-import cn.seecoder.paas.service.facade.k8s.vo.SecretVO;
-import cn.seecoder.paas.util.LoggerUtil;
 import io.kubernetes.client.openapi.ApiException;
 import io.kubernetes.client.openapi.apis.CoreV1Api;
 import io.kubernetes.client.openapi.models.*;
@@ -13,6 +8,11 @@ import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import seecoder.devcloud.api.k8s.SecretApi;
+import seecoder.devcloud.api.k8s.exception.K8sApiException;
+import seecoder.devcloud.api.k8s.util.SecretTypeEnum;
+import seecoder.devcloud.api.k8s.vo.SecretVO;
+import seecoder.devcloud.common.util.LoggerUtil;
 
 import java.util.Base64;
 import java.util.HashMap;
@@ -20,7 +20,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
-import static cn.seecoder.paas.service.facade.k8s.K8sConstants.PRETTY_FORMAT;
+import static seecoder.devcloud.api.k8s.K8sConstants.PRETTY_FORMAT;
 
 
 @Service
@@ -28,8 +28,14 @@ public class SecretApiImpl implements SecretApi {
 
     private static final Logger logger = LoggerUtil.getLogger(SecretApi.class);
 
+
+    private final CoreV1Api coreV1Api;
+
     @Autowired
-    private CoreV1Api coreV1Api;
+    public SecretApiImpl(CoreV1Api coreV1Api) {
+        this.coreV1Api = coreV1Api;
+    }
+
 
     @Override
     public SecretVO createGenericSecret(String namespace, String name, Map<String, byte[]> data) throws K8sApiException {

+ 14 - 10
api/src/main/java/seecoder/devcloud/api/k8s/impl/ServiceApiImpl.java

@@ -1,11 +1,5 @@
 package seecoder.devcloud.api.k8s.impl;
 
-import cn.seecoder.paas.service.facade.k8s.ServiceApi;
-import cn.seecoder.paas.service.facade.k8s.exception.K8sApiException;
-import cn.seecoder.paas.service.facade.k8s.model.K8sObjectRequest;
-import cn.seecoder.paas.service.facade.k8s.model.LabelSelector;
-import cn.seecoder.paas.service.facade.k8s.model.Service;
-import cn.seecoder.paas.util.LoggerUtil;
 import io.kubernetes.client.openapi.ApiException;
 import io.kubernetes.client.openapi.apis.CoreV1Api;
 import io.kubernetes.client.openapi.models.V1DeleteOptions;
@@ -14,21 +8,31 @@ import io.kubernetes.client.openapi.models.V1Service;
 import io.kubernetes.client.openapi.models.V1ServiceList;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
+import seecoder.devcloud.api.k8s.ServiceApi;
+import seecoder.devcloud.api.k8s.exception.K8sApiException;
+import seecoder.devcloud.api.k8s.model.K8sObjectRequest;
+import seecoder.devcloud.api.k8s.model.LabelSelector;
+import seecoder.devcloud.api.k8s.model.Service;
+import seecoder.devcloud.common.util.LoggerUtil;
 
 import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import static cn.seecoder.paas.service.facade.k8s.K8sConstants.FOREGROUND_PROPAGATION_POLICY;
-import static cn.seecoder.paas.service.facade.k8s.K8sConstants.PRETTY_FORMAT;
-import static cn.seecoder.paas.service.facade.k8s.exception.K8sApiException.*;
+import static seecoder.devcloud.api.k8s.K8sConstants.FOREGROUND_PROPAGATION_POLICY;
+import static seecoder.devcloud.api.k8s.K8sConstants.PRETTY_FORMAT;
+import static seecoder.devcloud.api.k8s.exception.K8sApiException.*;
 
 @org.springframework.stereotype.Service
 public class ServiceApiImpl implements ServiceApi {
     private static final Logger logger = LoggerUtil.getLogger(ServiceApi.class);
 
+    private final CoreV1Api coreV1Api;
+
     @Autowired
-    private CoreV1Api coreV1Api;
+    public ServiceApiImpl(CoreV1Api coreV1Api) {
+        this.coreV1Api = coreV1Api;
+    }
 
     /**
      * 创建Service

+ 7 - 2
web/pom.xml

@@ -44,10 +44,9 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-thymeleaf</artifactId>
         </dependency>
-
         <dependency>
             <groupId>seecoder.devcloud</groupId>
-            <artifactId>api</artifactId>
+            <artifactId>core</artifactId>
             <version>0.0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
@@ -102,6 +101,12 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>com.nju.edu</groupId>
+            <artifactId>seecoder-gitlab-client</artifactId>
+            <version>0.1.0</version>
+        </dependency>
     </dependencies>
 
     <dependencyManagement>

+ 0 - 126
web/src/main/resources/application-dev.yml

@@ -1,126 +0,0 @@
-# 这是老项目软工二后端的配置,仅作参考,不是此项目的配置
-spring:
-
-#  datasource:
-#    # url: jdbc:mysql://192.168.68.76:13306/seecoder_ii?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false
-#    url: jdbc:mysql://localhost:3306/seecoder?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false
-##    url: jdbc:mysql://218.94.159.108:13306/seec_ii?useUnicode=true&characterEncoding=UTF-8&useSSL=false
-#    username: root
-#    password: 123456
-  jpa:
-    hibernate:
-      ddl-auto: update
-      naming:
-        implicit-strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
-        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
-    database-platform: org.hibernate.dialect.MySQL57InnoDBDialect
-  security:
-    user:
-      name: root
-      password: NJU67software
-  mail:
-    host: smtp.163.com
-    username: seecoder@163.com
-    password: seec67NJU
-    properties:
-      mail:
-        smtp:
-          auth: true
-          socketFactory:
-            class: javax.net.ssl.SSLSocketFactory
-            port: 465
-          starttls:
-            enable: true
-            required: true
-  resources:
-    chain:
-      strategy:
-        content:
-          enabled: true
-          paths:
-            - /moocoder-frontend/**
-            - /js/**
-            - /css/**
-  servlet:
-    multipart:
-      max-file-size: 16MB
-      max-request-size: 16MB
-  redis:
-    host: http://192.168.68.76
-    port: 6379
-    password: NJU67redis
-    timeout: 1000
-    database: 0
-    lettuce:
-      pool:
-        min-idle: 5
-        max-active: 8
-        max-idle: 10
-        max-wait: 1ms
-
-      shutdown-timeout: 100ms
-
-
-server:
-  port: 8080
-  tomcat:
-    remote-ip-header: X-Forwarded-For
-    protocol-header: X-Forwarded-Proto
-  servlet:
-    session:
-      persistent: true
-      store-dir: ${java.io.tmpdir}/moocoder-session
-      timeout: 1d
-  use-forward-headers: true
-management:
-  endpoints:
-    web:
-      base-path: /api/actuator
-  endpoint:
-    shutdown:
-      enabled: true
-
-moocoder:
-  secret: 1qaz2wsx
-  auth:
-    signingKey: SEEC-1919810-OIDC-114514
-    iss: p.seecoder.cn
-    aud: seec-seec
-    portal: http://p.seecoder.cn/api/interaction
-    redirectUri: http://seec.seecoder.cn/api/auth/receive
-  gitlab:
-    host: http://gitlab.seec.seecoder.cn
-    git-proxy: http://gitlab.seec.seecoder.cn
-    webHookProxy: http://localhost:3000
-    username: root
-    token: x7Hwx-zq8LFkHznGku9a
-  jenkins:
-    host: http://192.168.68.79:8082
-    username: root
-    token: 11d7b9e4c1acac481904c25813e2ec1f0a
-    baseImage: 172.19.51.9:18082/build-base
-  docker:
-    registry: 192.168.68.79:18082
-  mail:
-    from: seecoder@163.com
-  storage:
-    type: local
-    properties:
-      location: ./problem
-  k8s:
-    api-server: https://192.168.68.76:6443
-    token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi10b2tlbi1zdzlwOCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJhZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImY3MzQ2NzVlLWZmYmItMTFlOS1iYTdjLTIyNmUyZmY2ZTdlYyIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTphZG1pbiJ9.GvBP7iNM_WNJN7dPm8ZPszDJeykifhHwBYcF58c4W73iAet1ZcZPrmiurqn4mSHcavUHNR8FqPaafnS3OD4eq5dR-i7frdIBt7yiME7AIGA4pDKWNJ3NykhyfG75omCvtQ2Gp-UvFIdf_4peAilxbwDR2NtWpky4sJQOTukZIYzN9fCeYV8My85XDBl7ze20QBsEKfPxTGZkqmytX-4VmjKkQH9ob7YB90NR2ug5VK8CA16_2ZPjf8Fx4QsdTbkyZKdFo7zIrIID0fa2lpOc2TpCKWeYCl335-ULllpxds6kiVwkRXYP-5zkIOfpI_0SshK7kbBjd238OLM3KFDf6A
-    ingress-host: seecii.cn
-    public-namespace: dev
-    public-mysql-url: jdbc:mysql://seecii-mysql.dev.svc.cluster.local:3306
-    public-mysql-pod: seecii-mysql-579dc7c857-8m2fd
-    public-mysql-username: root
-    public-mysql-password: NJU67software
-    debugging: true
-  registry:
-    host: 192.168.68.79:18082
-    username: admin
-    password: admin123
-    nexus-server: 192.168.68.79:18081
-    repo-name: sec-repo
-    clean-up-task: 83bb8249-71e8-4367-83b3-50c6f7518860

+ 0 - 46
web/src/main/resources/application-prod.yml

@@ -1,46 +0,0 @@
-# 这是老项目软工二后端的配置,仅作参考,不是此项目的配置
-spring:
-  jpa:
-    hibernate:
-      ddl-auto: update
-      naming:
-        implicit-strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
-        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
-  mail:
-    properties:
-      mail:
-        smtp:
-          auth: true
-          starttls:
-            enable: true
-            required: true
-  resources:
-    chain:
-      strategy:
-        content:
-          enabled: true
-          paths:
-            - /moocoder-frontend/**
-            - /js/**
-            - /css/**
-  servlet:
-    multipart:
-      max-file-size: 16MB
-      max-request-size: 16MB
-server:
-  tomcat:
-    remote-ip-header: X-Forwarded-For
-    protocol-header: X-Forwarded-Proto
-  servlet:
-    session:
-      persistent: true
-      store-dir: ${java.io.tmpdir}/moocoder-session
-      timeout: 1d
-  use-forward-headers: true
-management:
-  endpoints:
-    web:
-      base-path: /api/actuator
-  endpoint:
-    shutdown:
-      enabled: true

+ 1 - 1
web/src/main/resources/application.yml

@@ -1,3 +1,3 @@
 spring:
   profiles:
-    active: xzh
+    active: wph