Browse Source

添加并实现删除应用本地仓库接口

reghao 3 years ago
parent
commit
caf3c13a95

+ 14 - 7
manager/src/main/java/cn/reghao/devops/manager/app/controller/config/AppConfigController.java

@@ -31,10 +31,10 @@ public class AppConfigController {
         this.hostQuery = hostQuery;
     }
 
-    /* 应用编排 */
-    @ApiOperation(value = "添加/修改应用编排")
+    /* 应用配置 */
+    @ApiOperation(value = "添加/修改应用配置")
     @PostMapping(produces = MediaType.APPLICATION_JSON_VALUE)
-    public String addAppOrchestration(@Validated AppConfig app) {
+    public String addAppConfig(@Validated AppConfig app) {
         Integer id = app.getId();
         Result result;
         if (id == null) {
@@ -46,9 +46,9 @@ public class AppConfigController {
     }
 
     // TODO 使用 @PathVariable 注解时会自动填充实体
-    @ApiOperation(value = "复制应用编排")
+    @ApiOperation(value = "复制应用配置")
     @PostMapping(value = "/copy/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String copyAppOrchestration(@PathVariable("id") AppConfig app, @Validated NewApp newApp) {
+    public String copyAppConfig(@PathVariable("id") AppConfig app, @Validated NewApp newApp) {
         Result result;
         try {
             result = appConfigService.copy(app, newApp);
@@ -59,10 +59,17 @@ public class AppConfigController {
         return WebBody.result(result);
     }
 
-    @ApiOperation(value = "删除应用编排")
+    @ApiOperation(value = "删除应用配置")
     @DeleteMapping(value = "/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String deleteAppOrchestration(@PathVariable("id") AppConfig app) {
+    public String deleteAppConfig(@PathVariable("id") AppConfig app) {
         Result result = appConfigService.delete(app);
         return WebBody.result(result);
     }
+
+    @ApiOperation(value = "清空应用本地仓库")
+    @DeleteMapping(value = "/repo/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String deleteAppLocalRepo(@PathVariable("id") AppConfig app) {
+        Result result = appConfigService.resetLocalRepo(app);
+        return WebBody.result(result);
+    }
 }

+ 1 - 0
manager/src/main/java/cn/reghao/devops/manager/app/service/config/AppConfigService.java

@@ -13,4 +13,5 @@ public interface AppConfigService {
     Result copy(AppConfig from, NewApp to);
     Result modify(AppConfig appConfig);
     Result delete(AppConfig appConfig);
+    Result resetLocalRepo(AppConfig appConfig);
 }

+ 17 - 0
manager/src/main/java/cn/reghao/devops/manager/app/service/config/impl/AppConfigServiceImpl.java

@@ -1,9 +1,11 @@
 package cn.reghao.devops.manager.app.service.config.impl;
 
+import cn.reghao.devops.common.util.FileOps;
 import cn.reghao.devops.manager.app.db.crud.config.AppConfigCrud;
 import cn.reghao.devops.manager.app.db.query.config.AppConfigQuery;
 import cn.reghao.devops.manager.app.model.po.config.AppConfig;
 import cn.reghao.devops.manager.app.model.dto.NewApp;
+import cn.reghao.devops.manager.app.model.po.config.build.LocalBuildDir;
 import cn.reghao.devops.manager.app.service.bd.AppBuildingService;
 import cn.reghao.devops.manager.app.service.config.AppConfigService;
 import cn.reghao.devops.manager.monitor.service.AppMonitorService;
@@ -12,6 +14,9 @@ import cn.reghao.jutil.jdk.result.ResultStatus;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.io.File;
+import java.io.IOException;
+
 /**
  * @author reghao
  * @date 2021-09-16 18:28:51
@@ -115,4 +120,16 @@ public class AppConfigServiceImpl implements AppConfigService {
         appConfigCrud.delete(app);*/
         return Result.result(ResultStatus.SUCCESS, "暂未实现");
     }
+
+    @Override
+    public Result resetLocalRepo(AppConfig appConfig) {
+        // TODO 保证 app 没有处在构建状态
+        String localRepo = LocalBuildDir.localRepo + File.separator + appConfig.getAppId();
+        try {
+            FileOps.eraseDir(new File(localRepo));
+            return Result.result(ResultStatus.SUCCESS);
+        } catch (IOException e) {
+            return Result.result(ResultStatus.FAIL, e.getMessage());
+        }
+    }
 }

+ 0 - 2
manager/src/main/java/cn/reghao/devops/manager/build/handler/CompileHandler.java

@@ -41,8 +41,6 @@ public class CompileHandler extends Handler<BuildChainParam, BuildChainResult> {
                     break;
                 case docker:
                 case no_need_compile:
-                    codeCompiler = new NullCompiler();
-                    break;
                 default:
                     log.info("暂未实现,使用 NullCompiler");
                     codeCompiler = new NullCompiler();

+ 1 - 1
manager/src/main/java/cn/reghao/devops/manager/build/handler/UpdateHandler.java

@@ -56,7 +56,7 @@ public class UpdateHandler extends Handler<BuildChainParam, BuildChainResult> {
         String remote;
         String branch;
         // TODO 区分 GIT 和 SVN pull 代码时的不同
-        String local = LocalBuildDir.localRepo + File.separator + appConfig.getAppId();;
+        String local = LocalBuildDir.localRepo + File.separator + appConfig.getAppId();
         remote = appConfig.getAppRepo();
         branch = appConfig.getRepoBranch();
         CommitInfo last = codeUpdater.latestCommitInfo(local, branch);

+ 5 - 0
manager/src/main/resources/application-test.yml

@@ -1,4 +1,9 @@
 spring:
+  redis:
+    host: 192.168.0.125
+    port: 6379
+    password: Test@123456
+    database: 0
   datasource:
     url: jdbc:mysql://192.168.0.50:3306/reghao_devops_tdb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
     username: test

+ 2 - 3
manager/src/main/resources/templates/app/bd/index.html

@@ -75,10 +75,9 @@
                     <td>
                         <a class="ajax-post" th:href="@{'/api/app/bd/update/'+${item.appId}}">更新</a>
                         <a class="ajax-post" th:href="@{'/api/app/bd/build/'+${item.appId}}">构建</a>
+                        <a class="open-popup" data-title="应用部署列表" th:attr="data-url=@{'/app/bd/deploy/'+${item.appId}}"
+                           data-size="1000,500" href="#">部署</a>
                         <a class="ajax-redirect" th:href="@{'/api/app/bd/dlpak/'+${item.buildLogId}}">下载</a>
-                        <!--<a th:href="@{'/api/app/bd/dl1/'+${item.buildLogId}}">下载</a>-->
-                        <a class="open-popup" data-title="应用部署状态" th:attr="data-url=@{'/app/bd/deploy/'+${item.appId}}"
-                           data-size="1000,500" href="#">部署状态</a>
                     </td>
                 </tr>
                 </tbody>

+ 3 - 1
manager/src/main/resources/templates/app/config/app/index.html

@@ -89,8 +89,10 @@
                            data-size="1200,500" href="#">详细</a>
                         <a class="open-popup" data-title="编辑" th:attr="data-url=@{'/app/config/app/edit/'+${item.id}}"
                            data-size="1200,500" href="#">编辑</a>
-                        <a class="ajax-delete" th:attr="data-msg='确定要删除 '+ ${item.appId} + '?'"
+                        <a class="ajax-delete" th:attr="data-msg='确定要删除 '+ ${item.appId}"
                            th:href="@{'/api/app/config/app/' + ${item.id}}">删除</a>
+                        <a class="ajax-delete" th:attr="data-msg='确定要清空 ' + ${item.appId} + ' 的本地仓库'"
+                           th:href="@{'/api/app/config/app/repo/' + ${item.id}}">清空本地仓库</a>
                     </td>
                 </tr>
                 </tbody>