From b12f37331d7590a567a4f21df68edcbdae3e6392 Mon Sep 17 00:00:00 2001 From: dengqichen Date: Fri, 16 Aug 2024 13:30:58 +0800 Subject: [PATCH] =?UTF-8?q?nacos=E5=8A=A0=E5=85=A5=E5=88=B0=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=BD=93=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + .mvn/maven.config | 1 + bin/maven/settings.xml | 98 +++++++ .../business/deploy-ease-core.yml | 5 - .../business/deploy-ease-synchronizer.yml | 5 - bin/nacos-start.cmd | 1 - bin/{ => nacos}/nacos-logo.ico | Bin bin/{ => nacos}/nacos-logo.png | Bin bin/{ => nacos}/nacos-server-2.3.0/LICENSE | 0 bin/{ => nacos}/nacos-server-2.3.0/NOTICE | 0 .../nacos-server-2.3.0/bin/shutdown.cmd | 0 .../nacos-server-2.3.0/bin/shutdown.sh | 0 .../nacos-server-2.3.0/bin/start.cmd | 0 .../nacos-server-2.3.0/bin/startup.cmd | 0 .../nacos-server-2.3.0/bin/startup.sh | 0 .../conf/1.4.0-ipv6_support-update.sql | 0 .../nacos-server-2.3.0/conf/announcement.conf | 0 .../conf/application.properties | 0 .../conf/application.properties.example | 0 .../conf/cluster.conf.example | 0 .../conf/console-guide.conf | 0 .../nacos-server-2.3.0/conf/derby-schema.sql | 0 .../nacos-server-2.3.0/conf/mysql-schema.sql | 0 .../nacos-server-2.3.0/conf/nacos-logback.xml | 0 .../meta-data/raft_meta | Bin .../snapshot/snapshot_9/__raft_snapshot_meta | Bin .../meta-data/raft_meta | Bin .../snapshot/snapshot_7/__raft_snapshot_meta | Bin .../meta-data/raft_meta | Bin .../snapshot/snapshot_7/__raft_snapshot_meta | Bin .../business/deploy-ease-core.yml | 8 + .../business/deploy-ease-tenant-adapter.yml | 5 + .../deploy-ease-dev/common/common.yml | 5 + .../iscmtech-dev/common/db.yml | 0 .../iscmtech-dev/scp/scp-service-manager.yml | 0 bin/nacos/nacos-start.cmd | 1 + deploy-ease-api/pom.xml | 5 +- ...aryController.java => IDictionaryApi.java} | 10 +- ...enkinsController.java => IJenkinsApi.java} | 6 +- .../IK8sController.java => IK8sApi.java} | 4 +- .../INacosController.java => INacosApi.java} | 6 +- ...rojectController.java => IProjectApi.java} | 4 +- .../qc/soft/deploy/ease/api/ITenantApi.java | 16 ++ .../ITestController.java => ITestApi.java} | 4 +- .../IUserController.java => IUserApi.java} | 4 +- .../deploy/ease/api/base/BaseResponse.java | 5 + .../ease/api/response/JenkinsResponse.java | 23 ++ .../TenantAdapterContextResponse.java | 15 + .../response/TenantEnvJenkinsResponse.java | 17 ++ .../ease/api/response/TenantEnvResponse.java | 20 ++ deploy-ease-basic/pom.xml | 51 ++++ .../basic/config/GlobalExceptionHandler.java | 37 +++ .../basic}/config/GlobalResponseHandler.java | 22 +- .../basic/config/GlobalTenantInterceptor.java | 42 +++ .../basic/config/GlobalWebConfigurer.java | 41 ++- .../basic}/context/TenantContext.java | 2 +- .../framework/basic/entity/BaseEntity.java | 28 ++ .../basic/entity/BasicResponseState.java | 16 ++ .../framework/basic/enums/IBasicState.java | 16 ++ .../basic}/enums/JenkinsJobStatus.java | 2 +- .../basic/exception/BasicException.java | 32 +++ .../basic}/utils/BasicAuthUtils.java | 2 +- .../framework/basic}/utils/DateUtils.java | 2 +- .../framework/basic}/utils/FileUtils.java | 2 +- .../framework/basic}/utils/HttpUtils.java | 4 +- .../soft/framework/basic}/utils/MapUtils.java | 6 +- .../framework/basic/utils/ProcessUtils.java | 36 +++ .../soft/framework/basic}/utils/StrUtils.java | 2 +- .../utils/TemplateParamsBuildUtils.java | 2 +- .../soft/framework/basic/web/ApiResult.java | 40 +++ .../target/maven-archiver/pom.properties | 3 + .../compile/default-compile/createdFiles.lst | 21 ++ .../compile/default-compile/inputFiles.lst | 19 ++ .../default-testCompile/createdFiles.lst | 0 .../default-testCompile/inputFiles.lst | 0 deploy-ease-core/pom.xml | 44 +-- .../deploy/ease/DeployEaseApplication.java | 2 +- .../soft/deploy/ease/config/ApiResponse.java | 54 ---- .../ease/config/BusinessWebConfigurer.java | 24 ++ .../deploy/ease/config/GlobalCorsConfig.java | 23 -- .../ease/config/GlobalExceptionHandler.java | 25 -- .../ShutdownContextClosedEventListener.java | 22 ++ .../ease/config/TenantAdapterRunner.java | 167 ++++++++--- .../qc/soft/deploy/ease/consts/Consts.java | 4 +- .../context/TenantAdapterProcessContext.java | 17 ++ .../api/DictionaryApiApiController.java | 27 ++ .../NacosApiApiController.java} | 6 +- .../controller/mgmt/DictionaryController.java | 32 +++ .../controller/mgmt/TenantController.java | 22 ++ .../ease/convert/dto/DictionaryConvert.java | 9 +- .../convert/response/DictionaryConvert.java | 4 +- .../ease/convert/response/TenantConvert.java | 2 - .../response/TenantDictionaryConvert.java | 4 +- .../deploy/ease/dto/TenantAdapterJarDTO.java | 14 + .../entity/{Dictionary.java => SysDict.java} | 8 +- .../deploy/ease/entity/SysJenkinsConfig.java | 29 ++ .../ease/entity/{User.java => SysUser.java} | 9 +- ...{TenantDictionary.java => TenantDict.java} | 2 +- .../qc/soft/deploy/ease/entity/TenantEnv.java | 32 +++ .../deploy/ease/entity/TenantEnvJenkins.java | 29 ++ .../deploy/ease/enums/BusinessErrorCode.java | 21 -- .../soft/deploy/ease/enums/BusinessState.java | 23 ++ .../soft/deploy/ease/enums/ResponseCode.java | 21 -- .../ease/exception/BusinessException.java | 28 +- .../fegin/response/JenkinsJobResponse.java | 3 +- .../BusinessTenantInterceptor.java | 41 +++ .../ease/interceptor/TenantInterceptor.java | 48 ---- .../repository/IDictionaryRepository.java | 7 +- .../ISysJenkinsConfigRepository.java | 12 + .../ITenantDictionaryRepository.java | 7 +- .../ITenantEnvJenkinsRepository.java | 13 + .../ease/repository/ITenantEnvRepository.java | 13 + .../ease/repository/ITenantRepository.java | 3 - .../ease/repository/IUserRepository.java | 6 +- .../deploy/ease/service/INacosService.java | 5 + .../deploy/ease/service/ITenantService.java | 4 +- .../service/impl/DictionaryServiceImpl.java | 42 +-- .../ease/service/impl/JenkinsServiceImpl.java | 162 +++++------ .../ease/service/impl/NacosServiceImpl.java | 22 ++ .../ease/service/impl/ProjectServiceImpl.java | 2 +- .../ease/service/impl/TenantServiceImpl.java | 47 +++- .../ease/service/impl/UserServiceImpl.java | 4 +- .../deploy/ease/state/IBusinessState.java | 20 ++ .../JenkinsJobStatemachineConfig.java | 110 ++++---- .../JenkinsJobStatusListenerImpl.java | 68 ++--- .../deploy/ease/utils/K8sClientUtils.java | 263 ------------------ .../main/resources/META-INF/spring.factories | 3 + .../resources/sql/project_environment.sql | 20 -- .../sql/{dictionary.sql => sys_dict.sql} | 6 +- .../src/main/resources/sql/sys_group.sql | 12 + .../main/resources/sql/sys_jenkins_config.sql | 22 ++ .../sql/{project.sql => sys_project.sql} | 11 +- .../resources/sql/{user.sql => sys_user.sql} | 6 +- .../{user_online.sql => sys_user_online.sql} | 4 +- .../{user_tenant.sql => sys_user_tenant.sql} | 6 +- .../src/main/resources/sql/tenant.sql | 1 + ...{tenant_dictionary.sql => tenant_dict.sql} | 6 +- .../src/main/resources/sql/tenant_env.sql | 20 ++ .../resources/sql/tenant_env_jenkinks.sql | 15 + deploy-ease-tenant-adapter/pom.xml | 17 +- .../DeployEaseTenantAdapterApplication.java | 10 +- .../api/internal/IDictionaryServiceApi.java | 14 + .../api/thirdparty/JenkinsClientApi.java | 37 +++ .../response/JenkinsApiInfoDto.java | 17 ++ .../response/JenkinsCrumbIssuerResponse.java | 12 + ...sLastJobDetailChangeSetDetailResponse.java | 29 ++ ...JenkinsLastJobDetailChangeSetResponse.java | 12 + .../JenkinsLastJobDetailResponse.java | 31 +++ .../api/thirdparty/response/JobInfoDto.java | 13 + .../adapter/config/FeignClientConfig.java | 17 ++ .../ease/adapter/config/TenantProcessor.java | 47 ++++ .../deploy/ease/adapter/consts/Consts.java | 7 + .../ease/adapter/consts/JenkinsConstants.java | 28 ++ .../controller/JenkinsSSEController.java | 33 +++ .../enums/AdapterBusinessErrorCodeI.java | 6 + .../ease/adapter/enums/BusinessState.java | 10 + .../ease/adapter/service/IJenkinsService.java | 9 + .../service/impl/JenkinsServiceImpl.java | 22 ++ .../main/resources/META-INF/spring.factories | 2 + .../src/main/resources/bootstrap.yml | 4 +- .../target/classes/META-INF/spring.factories | 2 + .../target/classes/bootstrap.yml | 4 +- ...loy-ease-tenant-adapter-1.0.0.jar.original | Bin 3936 -> 25231 bytes .../compile/default-compile/createdFiles.lst | 20 +- .../compile/default-compile/inputFiles.lst | 19 +- pom.xml | 88 +++++- 166 files changed, 2031 insertions(+), 915 deletions(-) create mode 100644 bin/maven/settings.xml delete mode 100644 bin/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/business/deploy-ease-core.yml delete mode 100644 bin/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/business/deploy-ease-synchronizer.yml delete mode 100644 bin/nacos-start.cmd rename bin/{ => nacos}/nacos-logo.ico (100%) rename bin/{ => nacos}/nacos-logo.png (100%) rename bin/{ => nacos}/nacos-server-2.3.0/LICENSE (100%) rename bin/{ => nacos}/nacos-server-2.3.0/NOTICE (100%) rename bin/{ => nacos}/nacos-server-2.3.0/bin/shutdown.cmd (100%) rename bin/{ => nacos}/nacos-server-2.3.0/bin/shutdown.sh (100%) rename bin/{ => nacos}/nacos-server-2.3.0/bin/start.cmd (100%) rename bin/{ => nacos}/nacos-server-2.3.0/bin/startup.cmd (100%) rename bin/{ => nacos}/nacos-server-2.3.0/bin/startup.sh (100%) rename bin/{ => nacos}/nacos-server-2.3.0/conf/1.4.0-ipv6_support-update.sql (100%) rename bin/{ => nacos}/nacos-server-2.3.0/conf/announcement.conf (100%) rename bin/{ => nacos}/nacos-server-2.3.0/conf/application.properties (100%) rename bin/{ => nacos}/nacos-server-2.3.0/conf/application.properties.example (100%) rename bin/{ => nacos}/nacos-server-2.3.0/conf/cluster.conf.example (100%) rename bin/{ => nacos}/nacos-server-2.3.0/conf/console-guide.conf (100%) rename bin/{ => nacos}/nacos-server-2.3.0/conf/derby-schema.sql (100%) rename bin/{ => nacos}/nacos-server-2.3.0/conf/mysql-schema.sql (100%) rename bin/{ => nacos}/nacos-server-2.3.0/conf/nacos-logback.xml (100%) rename bin/{ => nacos}/nacos-server-2.3.0/data/protocol/raft/naming_instance_metadata/meta-data/raft_meta (100%) rename bin/{ => nacos}/nacos-server-2.3.0/data/protocol/raft/naming_instance_metadata/snapshot/snapshot_9/__raft_snapshot_meta (100%) rename bin/{ => nacos}/nacos-server-2.3.0/data/protocol/raft/naming_persistent_service_v2/meta-data/raft_meta (100%) rename bin/{ => nacos}/nacos-server-2.3.0/data/protocol/raft/naming_persistent_service_v2/snapshot/snapshot_7/__raft_snapshot_meta (100%) rename bin/{ => nacos}/nacos-server-2.3.0/data/protocol/raft/naming_service_metadata/meta-data/raft_meta (100%) rename bin/{ => nacos}/nacos-server-2.3.0/data/protocol/raft/naming_service_metadata/snapshot/snapshot_7/__raft_snapshot_meta (100%) create mode 100644 bin/nacos/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/business/deploy-ease-core.yml create mode 100644 bin/nacos/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/business/deploy-ease-tenant-adapter.yml rename bin/{ => nacos}/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/common/common.yml (89%) rename bin/{ => nacos}/nacos-server-2.3.0/data/tenant-config-data/iscmtech-dev/common/db.yml (100%) rename bin/{ => nacos}/nacos-server-2.3.0/data/tenant-config-data/iscmtech-dev/scp/scp-service-manager.yml (100%) create mode 100644 bin/nacos/nacos-start.cmd rename deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/{controller/IDictionaryController.java => IDictionaryApi.java} (71%) rename deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/{controller/IJenkinsController.java => IJenkinsApi.java} (54%) rename deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/{controller/IK8sController.java => IK8sApi.java} (91%) rename deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/{controller/INacosController.java => INacosApi.java} (68%) rename deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/{controller/IProjectController.java => IProjectApi.java} (82%) create mode 100644 deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/ITenantApi.java rename deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/{controller/ITestController.java => ITestApi.java} (77%) rename deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/{controller/IUserController.java => IUserApi.java} (79%) create mode 100644 deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/response/JenkinsResponse.java create mode 100644 deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/response/TenantAdapterContextResponse.java create mode 100644 deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/response/TenantEnvJenkinsResponse.java create mode 100644 deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/response/TenantEnvResponse.java create mode 100644 deploy-ease-basic/pom.xml create mode 100644 deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/config/GlobalExceptionHandler.java rename {deploy-ease-core/src/main/java/com/qc/soft/deploy/ease => deploy-ease-basic/src/main/java/com/qc/soft/framework/basic}/config/GlobalResponseHandler.java (56%) create mode 100644 deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/config/GlobalTenantInterceptor.java rename deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/WebMvcConfig.java => deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/config/GlobalWebConfigurer.java (52%) rename {deploy-ease-core/src/main/java/com/qc/soft/deploy/ease => deploy-ease-basic/src/main/java/com/qc/soft/framework/basic}/context/TenantContext.java (90%) create mode 100644 deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/entity/BaseEntity.java create mode 100644 deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/entity/BasicResponseState.java create mode 100644 deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/enums/IBasicState.java rename {deploy-ease-core/src/main/java/com/qc/soft/deploy/ease => deploy-ease-basic/src/main/java/com/qc/soft/framework/basic}/enums/JenkinsJobStatus.java (88%) create mode 100644 deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/exception/BasicException.java rename {deploy-ease-core/src/main/java/com/qc/soft/deploy/ease => deploy-ease-basic/src/main/java/com/qc/soft/framework/basic}/utils/BasicAuthUtils.java (87%) rename {deploy-ease-core/src/main/java/com/qc/soft/deploy/ease => deploy-ease-basic/src/main/java/com/qc/soft/framework/basic}/utils/DateUtils.java (98%) rename {deploy-ease-core/src/main/java/com/qc/soft/deploy/ease => deploy-ease-basic/src/main/java/com/qc/soft/framework/basic}/utils/FileUtils.java (97%) rename {deploy-ease-core/src/main/java/com/qc/soft/deploy/ease => deploy-ease-basic/src/main/java/com/qc/soft/framework/basic}/utils/HttpUtils.java (98%) rename {deploy-ease-core/src/main/java/com/qc/soft/deploy/ease => deploy-ease-basic/src/main/java/com/qc/soft/framework/basic}/utils/MapUtils.java (94%) create mode 100644 deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/ProcessUtils.java rename {deploy-ease-core/src/main/java/com/qc/soft/deploy/ease => deploy-ease-basic/src/main/java/com/qc/soft/framework/basic}/utils/StrUtils.java (81%) rename {deploy-ease-core/src/main/java/com/qc/soft/deploy/ease => deploy-ease-basic/src/main/java/com/qc/soft/framework/basic}/utils/TemplateParamsBuildUtils.java (87%) create mode 100644 deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/web/ApiResult.java create mode 100644 deploy-ease-basic/target/maven-archiver/pom.properties create mode 100644 deploy-ease-basic/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 deploy-ease-basic/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 deploy-ease-basic/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 deploy-ease-basic/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst delete mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/ApiResponse.java create mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/BusinessWebConfigurer.java delete mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/GlobalCorsConfig.java delete mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/GlobalExceptionHandler.java create mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/ShutdownContextClosedEventListener.java create mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/context/TenantAdapterProcessContext.java create mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/controller/api/DictionaryApiApiController.java rename deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/controller/{NacosController.java => api/NacosApiApiController.java} (65%) create mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/controller/mgmt/DictionaryController.java create mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/controller/mgmt/TenantController.java create mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/dto/TenantAdapterJarDTO.java rename deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/{Dictionary.java => SysDict.java} (72%) create mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/SysJenkinsConfig.java rename deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/{User.java => SysUser.java} (60%) rename deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/{TenantDictionary.java => TenantDict.java} (91%) create mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/TenantEnv.java create mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/TenantEnvJenkins.java delete mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/enums/BusinessErrorCode.java create mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/enums/BusinessState.java delete mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/enums/ResponseCode.java create mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/interceptor/BusinessTenantInterceptor.java delete mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/interceptor/TenantInterceptor.java create mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/ISysJenkinsConfigRepository.java create mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/ITenantEnvJenkinsRepository.java create mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/ITenantEnvRepository.java create mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/state/IBusinessState.java delete mode 100644 deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/K8sClientUtils.java create mode 100644 deploy-ease-core/src/main/resources/META-INF/spring.factories delete mode 100644 deploy-ease-core/src/main/resources/sql/project_environment.sql rename deploy-ease-core/src/main/resources/sql/{dictionary.sql => sys_dict.sql} (70%) create mode 100644 deploy-ease-core/src/main/resources/sql/sys_group.sql create mode 100644 deploy-ease-core/src/main/resources/sql/sys_jenkins_config.sql rename deploy-ease-core/src/main/resources/sql/{project.sql => sys_project.sql} (50%) rename deploy-ease-core/src/main/resources/sql/{user.sql => sys_user.sql} (69%) rename deploy-ease-core/src/main/resources/sql/{user_online.sql => sys_user_online.sql} (84%) rename deploy-ease-core/src/main/resources/sql/{user_tenant.sql => sys_user_tenant.sql} (67%) rename deploy-ease-core/src/main/resources/sql/{tenant_dictionary.sql => tenant_dict.sql} (73%) create mode 100644 deploy-ease-core/src/main/resources/sql/tenant_env.sql create mode 100644 deploy-ease-core/src/main/resources/sql/tenant_env_jenkinks.sql rename deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/{synchronizer => adapter}/DeployEaseTenantAdapterApplication.java (64%) create mode 100644 deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/internal/IDictionaryServiceApi.java create mode 100644 deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/JenkinsClientApi.java create mode 100644 deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JenkinsApiInfoDto.java create mode 100644 deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JenkinsCrumbIssuerResponse.java create mode 100644 deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JenkinsLastJobDetailChangeSetDetailResponse.java create mode 100644 deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JenkinsLastJobDetailChangeSetResponse.java create mode 100644 deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JenkinsLastJobDetailResponse.java create mode 100644 deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JobInfoDto.java create mode 100644 deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/config/FeignClientConfig.java create mode 100644 deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/config/TenantProcessor.java create mode 100644 deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/consts/Consts.java create mode 100644 deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/consts/JenkinsConstants.java create mode 100644 deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/controller/JenkinsSSEController.java create mode 100644 deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/enums/AdapterBusinessErrorCodeI.java create mode 100644 deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/enums/BusinessState.java create mode 100644 deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/service/IJenkinsService.java create mode 100644 deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/service/impl/JenkinsServiceImpl.java create mode 100644 deploy-ease-tenant-adapter/src/main/resources/META-INF/spring.factories create mode 100644 deploy-ease-tenant-adapter/target/classes/META-INF/spring.factories diff --git a/.gitignore b/.gitignore index 4f9e02c..a5ce865 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,5 @@ hs_err_pid* .flattened-pom.xml /bin/nacos-server-2.3.0/logs/ /bin/nacos-server-2.3.0/data/protocol/raft/*/log/ +/bin/nacos/nacos-server-2.3.0/logs/ +/bin/nacos/nacos-server-2.3.0/data/protocol/raft/*/log/ diff --git a/.mvn/maven.config b/.mvn/maven.config index 9b1795b..1a1c7ef 100644 --- a/.mvn/maven.config +++ b/.mvn/maven.config @@ -1 +1,2 @@ +-Dversion=1.0-SNAPSHOT -Dadapter-revision=1.0.0 \ No newline at end of file diff --git a/bin/maven/settings.xml b/bin/maven/settings.xml new file mode 100644 index 0000000..be4117f --- /dev/null +++ b/bin/maven/settings.xml @@ -0,0 +1,98 @@ + + + D:\work\maven-space\ + + org.eclipse.jkube + org.springframework.boot + + + + + + snapshots + devops + LianYu_123# + + + public + devops + LianYu_123# + + + releases + devops + LianYu_123# + + + + + snapshots + snapshots + http://119.3.241.212:8088/repository/maven-snapshots/ + com.lianyu:*-SNAPSHOT + + + releases + releases + http://119.3.241.212:8088/repository/maven-releases/ + com.lianyu:*-RELEASE + + + public + public + http://119.3.241.212:8088/repository/maven-public/ + *,!com.qc.soft.*:*,!com.lianyu:*-SNAPSHOT,!com.lianyu:*-RELEASE + + + + + + nexus-env-profile + + + public + http://119.3.241.212:8088/repository/maven-public/ + + true + always + + + true + always + + + + snapshots + http://119.3.241.212:8088/repository/maven-snapshots/ + + true + always + + + + releases + http://119.3.241.212:8088/repository/maven-releases/ + + true + always + + + + + + + snapshots + snapshots + http://119.3.241.212:8088/repository/maven-snapshots/ + snapshots + snapshots + http://119.3.241.212:8088/repository/maven-releases/ + + + + + nexus-env-profile + + diff --git a/bin/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/business/deploy-ease-core.yml b/bin/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/business/deploy-ease-core.yml deleted file mode 100644 index 7655a55..0000000 --- a/bin/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/business/deploy-ease-core.yml +++ /dev/null @@ -1,5 +0,0 @@ -server: - port: 9090 -spring: - application: - name: deploy-ease-core \ No newline at end of file diff --git a/bin/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/business/deploy-ease-synchronizer.yml b/bin/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/business/deploy-ease-synchronizer.yml deleted file mode 100644 index 8ec0e4c..0000000 --- a/bin/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/business/deploy-ease-synchronizer.yml +++ /dev/null @@ -1,5 +0,0 @@ -server: - port: 0 -spring: - application: - name: deploy-ease-synchronizer-${TENANT_CODE} \ No newline at end of file diff --git a/bin/nacos-start.cmd b/bin/nacos-start.cmd deleted file mode 100644 index c1965ae..0000000 --- a/bin/nacos-start.cmd +++ /dev/null @@ -1 +0,0 @@ -D:\work\github-workspace\deploy-ease-backend\bin\nacos-server-2.3.0\bin\startup.cmd -m standalone \ No newline at end of file diff --git a/bin/nacos-logo.ico b/bin/nacos/nacos-logo.ico similarity index 100% rename from bin/nacos-logo.ico rename to bin/nacos/nacos-logo.ico diff --git a/bin/nacos-logo.png b/bin/nacos/nacos-logo.png similarity index 100% rename from bin/nacos-logo.png rename to bin/nacos/nacos-logo.png diff --git a/bin/nacos-server-2.3.0/LICENSE b/bin/nacos/nacos-server-2.3.0/LICENSE similarity index 100% rename from bin/nacos-server-2.3.0/LICENSE rename to bin/nacos/nacos-server-2.3.0/LICENSE diff --git a/bin/nacos-server-2.3.0/NOTICE b/bin/nacos/nacos-server-2.3.0/NOTICE similarity index 100% rename from bin/nacos-server-2.3.0/NOTICE rename to bin/nacos/nacos-server-2.3.0/NOTICE diff --git a/bin/nacos-server-2.3.0/bin/shutdown.cmd b/bin/nacos/nacos-server-2.3.0/bin/shutdown.cmd similarity index 100% rename from bin/nacos-server-2.3.0/bin/shutdown.cmd rename to bin/nacos/nacos-server-2.3.0/bin/shutdown.cmd diff --git a/bin/nacos-server-2.3.0/bin/shutdown.sh b/bin/nacos/nacos-server-2.3.0/bin/shutdown.sh similarity index 100% rename from bin/nacos-server-2.3.0/bin/shutdown.sh rename to bin/nacos/nacos-server-2.3.0/bin/shutdown.sh diff --git a/bin/nacos-server-2.3.0/bin/start.cmd b/bin/nacos/nacos-server-2.3.0/bin/start.cmd similarity index 100% rename from bin/nacos-server-2.3.0/bin/start.cmd rename to bin/nacos/nacos-server-2.3.0/bin/start.cmd diff --git a/bin/nacos-server-2.3.0/bin/startup.cmd b/bin/nacos/nacos-server-2.3.0/bin/startup.cmd similarity index 100% rename from bin/nacos-server-2.3.0/bin/startup.cmd rename to bin/nacos/nacos-server-2.3.0/bin/startup.cmd diff --git a/bin/nacos-server-2.3.0/bin/startup.sh b/bin/nacos/nacos-server-2.3.0/bin/startup.sh similarity index 100% rename from bin/nacos-server-2.3.0/bin/startup.sh rename to bin/nacos/nacos-server-2.3.0/bin/startup.sh diff --git a/bin/nacos-server-2.3.0/conf/1.4.0-ipv6_support-update.sql b/bin/nacos/nacos-server-2.3.0/conf/1.4.0-ipv6_support-update.sql similarity index 100% rename from bin/nacos-server-2.3.0/conf/1.4.0-ipv6_support-update.sql rename to bin/nacos/nacos-server-2.3.0/conf/1.4.0-ipv6_support-update.sql diff --git a/bin/nacos-server-2.3.0/conf/announcement.conf b/bin/nacos/nacos-server-2.3.0/conf/announcement.conf similarity index 100% rename from bin/nacos-server-2.3.0/conf/announcement.conf rename to bin/nacos/nacos-server-2.3.0/conf/announcement.conf diff --git a/bin/nacos-server-2.3.0/conf/application.properties b/bin/nacos/nacos-server-2.3.0/conf/application.properties similarity index 100% rename from bin/nacos-server-2.3.0/conf/application.properties rename to bin/nacos/nacos-server-2.3.0/conf/application.properties diff --git a/bin/nacos-server-2.3.0/conf/application.properties.example b/bin/nacos/nacos-server-2.3.0/conf/application.properties.example similarity index 100% rename from bin/nacos-server-2.3.0/conf/application.properties.example rename to bin/nacos/nacos-server-2.3.0/conf/application.properties.example diff --git a/bin/nacos-server-2.3.0/conf/cluster.conf.example b/bin/nacos/nacos-server-2.3.0/conf/cluster.conf.example similarity index 100% rename from bin/nacos-server-2.3.0/conf/cluster.conf.example rename to bin/nacos/nacos-server-2.3.0/conf/cluster.conf.example diff --git a/bin/nacos-server-2.3.0/conf/console-guide.conf b/bin/nacos/nacos-server-2.3.0/conf/console-guide.conf similarity index 100% rename from bin/nacos-server-2.3.0/conf/console-guide.conf rename to bin/nacos/nacos-server-2.3.0/conf/console-guide.conf diff --git a/bin/nacos-server-2.3.0/conf/derby-schema.sql b/bin/nacos/nacos-server-2.3.0/conf/derby-schema.sql similarity index 100% rename from bin/nacos-server-2.3.0/conf/derby-schema.sql rename to bin/nacos/nacos-server-2.3.0/conf/derby-schema.sql diff --git a/bin/nacos-server-2.3.0/conf/mysql-schema.sql b/bin/nacos/nacos-server-2.3.0/conf/mysql-schema.sql similarity index 100% rename from bin/nacos-server-2.3.0/conf/mysql-schema.sql rename to bin/nacos/nacos-server-2.3.0/conf/mysql-schema.sql diff --git a/bin/nacos-server-2.3.0/conf/nacos-logback.xml b/bin/nacos/nacos-server-2.3.0/conf/nacos-logback.xml similarity index 100% rename from bin/nacos-server-2.3.0/conf/nacos-logback.xml rename to bin/nacos/nacos-server-2.3.0/conf/nacos-logback.xml diff --git a/bin/nacos-server-2.3.0/data/protocol/raft/naming_instance_metadata/meta-data/raft_meta b/bin/nacos/nacos-server-2.3.0/data/protocol/raft/naming_instance_metadata/meta-data/raft_meta similarity index 100% rename from bin/nacos-server-2.3.0/data/protocol/raft/naming_instance_metadata/meta-data/raft_meta rename to bin/nacos/nacos-server-2.3.0/data/protocol/raft/naming_instance_metadata/meta-data/raft_meta diff --git a/bin/nacos-server-2.3.0/data/protocol/raft/naming_instance_metadata/snapshot/snapshot_9/__raft_snapshot_meta b/bin/nacos/nacos-server-2.3.0/data/protocol/raft/naming_instance_metadata/snapshot/snapshot_9/__raft_snapshot_meta similarity index 100% rename from bin/nacos-server-2.3.0/data/protocol/raft/naming_instance_metadata/snapshot/snapshot_9/__raft_snapshot_meta rename to bin/nacos/nacos-server-2.3.0/data/protocol/raft/naming_instance_metadata/snapshot/snapshot_9/__raft_snapshot_meta diff --git a/bin/nacos-server-2.3.0/data/protocol/raft/naming_persistent_service_v2/meta-data/raft_meta b/bin/nacos/nacos-server-2.3.0/data/protocol/raft/naming_persistent_service_v2/meta-data/raft_meta similarity index 100% rename from bin/nacos-server-2.3.0/data/protocol/raft/naming_persistent_service_v2/meta-data/raft_meta rename to bin/nacos/nacos-server-2.3.0/data/protocol/raft/naming_persistent_service_v2/meta-data/raft_meta diff --git a/bin/nacos-server-2.3.0/data/protocol/raft/naming_persistent_service_v2/snapshot/snapshot_7/__raft_snapshot_meta b/bin/nacos/nacos-server-2.3.0/data/protocol/raft/naming_persistent_service_v2/snapshot/snapshot_7/__raft_snapshot_meta similarity index 100% rename from bin/nacos-server-2.3.0/data/protocol/raft/naming_persistent_service_v2/snapshot/snapshot_7/__raft_snapshot_meta rename to bin/nacos/nacos-server-2.3.0/data/protocol/raft/naming_persistent_service_v2/snapshot/snapshot_7/__raft_snapshot_meta diff --git a/bin/nacos-server-2.3.0/data/protocol/raft/naming_service_metadata/meta-data/raft_meta b/bin/nacos/nacos-server-2.3.0/data/protocol/raft/naming_service_metadata/meta-data/raft_meta similarity index 100% rename from bin/nacos-server-2.3.0/data/protocol/raft/naming_service_metadata/meta-data/raft_meta rename to bin/nacos/nacos-server-2.3.0/data/protocol/raft/naming_service_metadata/meta-data/raft_meta diff --git a/bin/nacos-server-2.3.0/data/protocol/raft/naming_service_metadata/snapshot/snapshot_7/__raft_snapshot_meta b/bin/nacos/nacos-server-2.3.0/data/protocol/raft/naming_service_metadata/snapshot/snapshot_7/__raft_snapshot_meta similarity index 100% rename from bin/nacos-server-2.3.0/data/protocol/raft/naming_service_metadata/snapshot/snapshot_7/__raft_snapshot_meta rename to bin/nacos/nacos-server-2.3.0/data/protocol/raft/naming_service_metadata/snapshot/snapshot_7/__raft_snapshot_meta diff --git a/bin/nacos/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/business/deploy-ease-core.yml b/bin/nacos/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/business/deploy-ease-core.yml new file mode 100644 index 0000000..d1ee2e5 --- /dev/null +++ b/bin/nacos/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/business/deploy-ease-core.yml @@ -0,0 +1,8 @@ +server: + port: 9090 +spring: + application: + name: deploy-ease-core +deploy-ease: + adapter: + path: D:\work\github-workspace\deploy-ease-backend\deploy-ease-tenant-adapter\target\deploy-ease-tenant-adapter-1.0.0.jar \ No newline at end of file diff --git a/bin/nacos/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/business/deploy-ease-tenant-adapter.yml b/bin/nacos/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/business/deploy-ease-tenant-adapter.yml new file mode 100644 index 0000000..ab04f7c --- /dev/null +++ b/bin/nacos/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/business/deploy-ease-tenant-adapter.yml @@ -0,0 +1,5 @@ +server: + port: 0 +spring: + application: + name: deploy-ease-tenant-adapter-${TENANT_CODE} \ No newline at end of file diff --git a/bin/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/common/common.yml b/bin/nacos/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/common/common.yml similarity index 89% rename from bin/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/common/common.yml rename to bin/nacos/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/common/common.yml index 362d4b9..3b16bd9 100644 --- a/bin/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/common/common.yml +++ b/bin/nacos/nacos-server-2.3.0/data/tenant-config-data/deploy-ease-dev/common/common.yml @@ -1,4 +1,9 @@ spring: + http: + encoding: + charset: UTF-8 + enabled: true + force: true jpa: show-sql: true properties: diff --git a/bin/nacos-server-2.3.0/data/tenant-config-data/iscmtech-dev/common/db.yml b/bin/nacos/nacos-server-2.3.0/data/tenant-config-data/iscmtech-dev/common/db.yml similarity index 100% rename from bin/nacos-server-2.3.0/data/tenant-config-data/iscmtech-dev/common/db.yml rename to bin/nacos/nacos-server-2.3.0/data/tenant-config-data/iscmtech-dev/common/db.yml diff --git a/bin/nacos-server-2.3.0/data/tenant-config-data/iscmtech-dev/scp/scp-service-manager.yml b/bin/nacos/nacos-server-2.3.0/data/tenant-config-data/iscmtech-dev/scp/scp-service-manager.yml similarity index 100% rename from bin/nacos-server-2.3.0/data/tenant-config-data/iscmtech-dev/scp/scp-service-manager.yml rename to bin/nacos/nacos-server-2.3.0/data/tenant-config-data/iscmtech-dev/scp/scp-service-manager.yml diff --git a/bin/nacos/nacos-start.cmd b/bin/nacos/nacos-start.cmd new file mode 100644 index 0000000..de37e9f --- /dev/null +++ b/bin/nacos/nacos-start.cmd @@ -0,0 +1 @@ +D:\work\github-workspace\deploy-ease-backend\bin\nacos\nacos-server-2.3.0\bin\startup.cmd -m standalone \ No newline at end of file diff --git a/deploy-ease-api/pom.xml b/deploy-ease-api/pom.xml index 057e9cc..ae0b58c 100644 --- a/deploy-ease-api/pom.xml +++ b/deploy-ease-api/pom.xml @@ -4,6 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 deploy-ease-api + jar @@ -20,8 +21,8 @@ com.qc.soft - deploy-ease - 1.0-SNAPSHOT + deploy-ease-parent + ${version} \ No newline at end of file diff --git a/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/controller/IDictionaryController.java b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/IDictionaryApi.java similarity index 71% rename from deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/controller/IDictionaryController.java rename to deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/IDictionaryApi.java index 506509f..b3b2e7b 100644 --- a/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/controller/IDictionaryController.java +++ b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/IDictionaryApi.java @@ -1,4 +1,4 @@ -package com.qc.soft.deploy.ease.api.controller; +package com.qc.soft.deploy.ease.api; import com.qc.soft.deploy.ease.api.response.DictionaryResponse; import com.qc.soft.deploy.ease.api.response.TenantDictionaryResponse; @@ -9,13 +9,13 @@ import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController -@RequestMapping("/deploy-ease/dict") -public interface IDictionaryController { +@RequestMapping("/api/v1") +public interface IDictionaryApi { - @GetMapping("/system") + @GetMapping("/dict/system") List systemDicts(); - @GetMapping("/tenant") + @GetMapping("/dict/tenant") List tenantDicts(); } diff --git a/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/controller/IJenkinsController.java b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/IJenkinsApi.java similarity index 54% rename from deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/controller/IJenkinsController.java rename to deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/IJenkinsApi.java index a78dcff..8281d65 100644 --- a/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/controller/IJenkinsController.java +++ b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/IJenkinsApi.java @@ -1,11 +1,11 @@ -package com.qc.soft.deploy.ease.api.controller; +package com.qc.soft.deploy.ease.api; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController -@RequestMapping("/deploy-ease/jenkins") -public interface IJenkinsController { +@RequestMapping("/api/v1") +public interface IJenkinsApi { } diff --git a/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/controller/IK8sController.java b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/IK8sApi.java similarity index 91% rename from deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/controller/IK8sController.java rename to deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/IK8sApi.java index a52eb80..9aaf0eb 100644 --- a/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/controller/IK8sController.java +++ b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/IK8sApi.java @@ -1,4 +1,4 @@ -package com.qc.soft.deploy.ease.api.controller; +package com.qc.soft.deploy.ease.api; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -6,7 +6,7 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/deploy-ease/k8s") -public interface IK8sController { +public interface IK8sApi { // @GetMapping("namespaces") diff --git a/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/controller/INacosController.java b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/INacosApi.java similarity index 68% rename from deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/controller/INacosController.java rename to deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/INacosApi.java index 208a307..00fdf9b 100644 --- a/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/controller/INacosController.java +++ b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/INacosApi.java @@ -1,4 +1,4 @@ -package com.qc.soft.deploy.ease.api.controller; +package com.qc.soft.deploy.ease.api; import org.springframework.web.bind.annotation.GetMapping; @@ -6,8 +6,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController -@RequestMapping("/deploy-ease/nacos") -public interface INacosController { +@RequestMapping("/api/nacos") +public interface INacosApi { @GetMapping("/instances") void instances(); diff --git a/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/controller/IProjectController.java b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/IProjectApi.java similarity index 82% rename from deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/controller/IProjectController.java rename to deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/IProjectApi.java index 9e2ccf1..6a62d43 100644 --- a/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/controller/IProjectController.java +++ b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/IProjectApi.java @@ -1,4 +1,4 @@ -package com.qc.soft.deploy.ease.api.controller; +package com.qc.soft.deploy.ease.api; import com.qc.soft.deploy.ease.api.response.ProjectResponse; import org.springframework.web.bind.annotation.GetMapping; @@ -9,7 +9,7 @@ import java.util.List; @RestController @RequestMapping("/deploy-ease/project") -public interface IProjectController { +public interface IProjectApi { @GetMapping("/list") diff --git a/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/ITenantApi.java b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/ITenantApi.java new file mode 100644 index 0000000..ed0625f --- /dev/null +++ b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/ITenantApi.java @@ -0,0 +1,16 @@ +package com.qc.soft.deploy.ease.api; + + +import com.qc.soft.deploy.ease.api.response.TenantAdapterContextResponse; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/v1") +public interface ITenantApi { + + @GetMapping("/tenant/getAdapterContext") + TenantAdapterContextResponse tenantAdapterContext(); + +} diff --git a/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/controller/ITestController.java b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/ITestApi.java similarity index 77% rename from deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/controller/ITestController.java rename to deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/ITestApi.java index c7db786..54a3aa1 100644 --- a/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/controller/ITestController.java +++ b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/ITestApi.java @@ -1,4 +1,4 @@ -package com.qc.soft.deploy.ease.api.controller; +package com.qc.soft.deploy.ease.api; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -6,7 +6,7 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/deploy-ease/test") -public interface ITestController { +public interface ITestApi { @GetMapping("test") void test(); diff --git a/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/controller/IUserController.java b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/IUserApi.java similarity index 79% rename from deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/controller/IUserController.java rename to deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/IUserApi.java index 1272c70..1610fa6 100644 --- a/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/controller/IUserController.java +++ b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/IUserApi.java @@ -1,4 +1,4 @@ -package com.qc.soft.deploy.ease.api.controller; +package com.qc.soft.deploy.ease.api; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -6,7 +6,7 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/deploy-ease/user") -public interface IUserController { +public interface IUserApi { @GetMapping("/login") diff --git a/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/base/BaseResponse.java b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/base/BaseResponse.java index 2eb772a..def7cc7 100644 --- a/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/base/BaseResponse.java +++ b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/base/BaseResponse.java @@ -1,11 +1,16 @@ package com.qc.soft.deploy.ease.api.base; +import lombok.Data; + import java.io.Serializable; import java.time.LocalDateTime; +@Data public abstract class BaseResponse implements Serializable { + private Long id; + private LocalDateTime createTime; private LocalDateTime updateTime; diff --git a/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/response/JenkinsResponse.java b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/response/JenkinsResponse.java new file mode 100644 index 0000000..49c1f06 --- /dev/null +++ b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/response/JenkinsResponse.java @@ -0,0 +1,23 @@ +package com.qc.soft.deploy.ease.api.response; + +import com.qc.soft.deploy.ease.api.base.BaseResponse; +import lombok.Data; + +@Data +public class JenkinsResponse extends BaseResponse { + + private String code; + + private String name; + + private String username; + + private String password; + + private String url; + + private String envCode; + + private String tenantCode; + +} diff --git a/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/response/TenantAdapterContextResponse.java b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/response/TenantAdapterContextResponse.java new file mode 100644 index 0000000..c617718 --- /dev/null +++ b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/response/TenantAdapterContextResponse.java @@ -0,0 +1,15 @@ +package com.qc.soft.deploy.ease.api.response; + +import com.qc.soft.deploy.ease.api.base.BaseResponse; +import lombok.Data; + +import java.util.List; + +@Data +public class TenantAdapterContextResponse extends BaseResponse { + + private TenantResponse tenant; + + private List envList; + +} diff --git a/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/response/TenantEnvJenkinsResponse.java b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/response/TenantEnvJenkinsResponse.java new file mode 100644 index 0000000..a2c5cff --- /dev/null +++ b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/response/TenantEnvJenkinsResponse.java @@ -0,0 +1,17 @@ +package com.qc.soft.deploy.ease.api.response; + +import com.qc.soft.deploy.ease.api.base.BaseResponse; +import lombok.Data; + +@Data +public class TenantEnvJenkinsResponse extends BaseResponse { + + private String viewName; + + private String username; + + private String password; + + private String url; + +} diff --git a/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/response/TenantEnvResponse.java b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/response/TenantEnvResponse.java new file mode 100644 index 0000000..6ec56a1 --- /dev/null +++ b/deploy-ease-api/src/main/java/com/qc/soft/deploy/ease/api/response/TenantEnvResponse.java @@ -0,0 +1,20 @@ +package com.qc.soft.deploy.ease.api.response; + + +import com.qc.soft.deploy.ease.api.base.BaseResponse; +import lombok.Data; + +@Data +public class TenantEnvResponse extends BaseResponse { + + private String code; + + private String name; + + private int type; + + private boolean isVpn; + + private TenantEnvJenkinsResponse jenkins; + +} diff --git a/deploy-ease-basic/pom.xml b/deploy-ease-basic/pom.xml new file mode 100644 index 0000000..fd05fb2 --- /dev/null +++ b/deploy-ease-basic/pom.xml @@ -0,0 +1,51 @@ + + + 4.0.0 + deploy-ease-basic + jar + + + + org.springframework.boot + spring-boot-starter-web + + + org.projectlombok + lombok + provided + + + com.alibaba + transmittable-thread-local + + + jakarta.persistence + jakarta.persistence-api + + + cn.hutool + hutool-all + + + org.apache.httpcomponents.client5 + httpclient5 + + + com.alibaba.fastjson2 + fastjson2 + + + org.apache.commons + commons-lang3 + + + + + com.qc.soft + deploy-ease-parent + ${version} + + + \ No newline at end of file diff --git a/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/config/GlobalExceptionHandler.java b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/config/GlobalExceptionHandler.java new file mode 100644 index 0000000..fd56701 --- /dev/null +++ b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/config/GlobalExceptionHandler.java @@ -0,0 +1,37 @@ +package com.qc.soft.framework.basic.config; + +import com.qc.soft.framework.basic.entity.BasicResponseState; +import com.qc.soft.framework.basic.exception.BasicException; +import com.qc.soft.framework.basic.web.ApiResult; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +@RestControllerAdvice +@Slf4j +public class GlobalExceptionHandler { + + public GlobalExceptionHandler() { + log.info("Framework global exception handler registered successfully!!!"); + } + + @Resource + private HttpServletRequest httpServletRequest; + + @ExceptionHandler(BasicException.class) + public Object parameterBodyMissingExceptionHandler(BasicException exception) { + log.error("An exception occurred while requesting an interface:{}", httpServletRequest.getRequestURI(), exception); + if (!httpServletRequest.getRequestURI().startsWith("/api/v1")) { + return exception; + } + if (StringUtils.isNotEmpty(exception.getMessage())) { + BasicResponseState error = exception.getError(); + error.setMessage(exception.getMessage()); + } + return ApiResult.builder().code(exception.getError().getCode()).message(exception.getError().getMessage()).build(); + } +} \ No newline at end of file diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/GlobalResponseHandler.java b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/config/GlobalResponseHandler.java similarity index 56% rename from deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/GlobalResponseHandler.java rename to deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/config/GlobalResponseHandler.java index b6a084c..9b8623b 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/GlobalResponseHandler.java +++ b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/config/GlobalResponseHandler.java @@ -1,6 +1,8 @@ -package com.qc.soft.deploy.ease.config; +package com.qc.soft.framework.basic.config; -import com.qc.soft.deploy.ease.enums.ResponseCode; +import com.qc.soft.framework.basic.enums.IBasicState; +import com.qc.soft.framework.basic.web.ApiResult; +import lombok.extern.slf4j.Slf4j; import org.springframework.core.MethodParameter; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -9,8 +11,13 @@ import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; @ControllerAdvice +@Slf4j public class GlobalResponseHandler implements ResponseBodyAdvice { + public GlobalResponseHandler() { + log.info("Framework global response handler registered successfully!!!"); + } + @Override public boolean supports(MethodParameter returnType, Class converterType) { return true; @@ -18,18 +25,15 @@ public class GlobalResponseHandler implements ResponseBodyAdvice { @Override public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, org.springframework.http.server.ServerHttpRequest request, ServerHttpResponse response) { - if (body instanceof ResponseEntity) { + if (!request.getURI().getPath().startsWith("/api/v1")) { return body; } - if (body instanceof String) { + if (body instanceof ResponseEntity || body instanceof ApiResult) { return body; } if (body == null) { - return ApiResponse.builder().code(ResponseCode.SUCCESS.getCode()).message(ResponseCode.SUCCESS.getMessage()).build(); + return ApiResult.builder().code(IBasicState.SUCCESS.getCode()).message(IBasicState.SUCCESS.getMessage()).build(); } - if (body instanceof ApiResponse) { - return body; - } - return ApiResponse.builder().data(body).code(ResponseCode.SUCCESS.getCode()).message(ResponseCode.SUCCESS.getMessage()).build(); + return ApiResult.builder().data(body).code(IBasicState.SUCCESS.getCode()).message(IBasicState.SUCCESS.getMessage()).build(); } } diff --git a/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/config/GlobalTenantInterceptor.java b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/config/GlobalTenantInterceptor.java new file mode 100644 index 0000000..d112957 --- /dev/null +++ b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/config/GlobalTenantInterceptor.java @@ -0,0 +1,42 @@ +package com.qc.soft.framework.basic.config; + +import com.qc.soft.framework.basic.context.TenantContext; +import com.qc.soft.framework.basic.enums.IBasicState; +import com.qc.soft.framework.basic.exception.BasicException; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Import; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; +import org.springframework.web.servlet.HandlerInterceptor; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + + +@Slf4j +@Component +@Import({GlobalResponseHandler.class, GlobalExceptionHandler.class}) +public class GlobalTenantInterceptor implements HandlerInterceptor { + + + public GlobalTenantInterceptor() { + log.info("Framework global tenant interceptor registered successfully!!!"); + } + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { + String tenantCode = request.getHeader("x-tenant-code"); + if (null == tenantCode || StringUtils.isEmpty(tenantCode)) { + throw new BasicException(IBasicState.TENANT_DOES_NOT_EXIST, "请求头未携带:x-tenant-code"); + } + TenantContext.setCurrentTenant(tenantCode); + return true; + } + + + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { + TenantContext.clear(); + } +} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/WebMvcConfig.java b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/config/GlobalWebConfigurer.java similarity index 52% rename from deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/WebMvcConfig.java rename to deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/config/GlobalWebConfigurer.java index 8191219..0dad3ca 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/WebMvcConfig.java +++ b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/config/GlobalWebConfigurer.java @@ -1,15 +1,18 @@ -package com.qc.soft.deploy.ease.config; +package com.qc.soft.framework.basic.config; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; -import com.qc.soft.deploy.ease.interceptor.TenantInterceptor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import javax.annotation.Resource; import java.nio.charset.StandardCharsets; @@ -17,14 +20,16 @@ import java.text.SimpleDateFormat; import java.util.List; @Configuration -public class WebMvcConfig extends WebMvcConfigurerAdapter { - +@Slf4j +@Import(GlobalTenantInterceptor.class) +public class GlobalWebConfigurer implements WebMvcConfigurer { @Resource - private TenantInterceptor tenantInterceptor; - @Override - public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(tenantInterceptor).addPathPatterns("/**"); + private GlobalTenantInterceptor globalTenantInterceptor; + + + public GlobalWebConfigurer() { + log.info("Framework global web configurer registered successfully!!!"); } @Override @@ -35,6 +40,20 @@ public class WebMvcConfig extends WebMvcConfigurerAdapter { mapper.registerModule(new JavaTimeModule()); mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); converters.add(new MappingJackson2HttpMessageConverter(mapper)); - super.configureMessageConverters(converters); } -} + + @Override + public void addInterceptors(InterceptorRegistry registry) { + //TODO 搜索引用的项目继承这个拦截器没有,如果继承了就自动加载,比如 自己写一个注解,将拦截的路径都自动加载 + registry.addInterceptor(globalTenantInterceptor).addPathPatterns("/**").order(-9999); + } + + @Override + public void addCorsMappings(CorsRegistry registry) { + registry.addMapping("/**") // 允许跨域的路径 + .allowedOrigins("*") // 允许跨域请求的域名 + .allowedHeaders("*") // 允许的请求头 + .allowedMethods("GET", "POST", "PUT", "DELETE") // 允许的请求方法 + .allowCredentials(true); // 是否允许证书(cookies) + } +} \ No newline at end of file diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/context/TenantContext.java b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/context/TenantContext.java similarity index 90% rename from deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/context/TenantContext.java rename to deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/context/TenantContext.java index 8745edd..326e687 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/context/TenantContext.java +++ b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/context/TenantContext.java @@ -1,4 +1,4 @@ -package com.qc.soft.deploy.ease.context; +package com.qc.soft.framework.basic.context; import com.alibaba.ttl.TransmittableThreadLocal; diff --git a/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/entity/BaseEntity.java b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/entity/BaseEntity.java new file mode 100644 index 0000000..f1f967d --- /dev/null +++ b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/entity/BaseEntity.java @@ -0,0 +1,28 @@ +package com.qc.soft.framework.basic.entity; + +import javax.persistence.Column; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.MappedSuperclass; +import java.io.Serializable; +import java.time.LocalDateTime; + + +@MappedSuperclass +public abstract class BaseEntity implements Serializable { + + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false, updatable = false) + private LocalDateTime createTime; + + @Column(nullable = false) + private LocalDateTime updateTime; + + private Boolean isDeleted; + +} diff --git a/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/entity/BasicResponseState.java b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/entity/BasicResponseState.java new file mode 100644 index 0000000..a20cd42 --- /dev/null +++ b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/entity/BasicResponseState.java @@ -0,0 +1,16 @@ +package com.qc.soft.framework.basic.entity; + +import lombok.Builder; +import lombok.Data; +import lombok.ToString; + +@Data +@Builder +@ToString +public class BasicResponseState { + + private String code; + + private String message; + +} diff --git a/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/enums/IBasicState.java b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/enums/IBasicState.java new file mode 100644 index 0000000..4e44141 --- /dev/null +++ b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/enums/IBasicState.java @@ -0,0 +1,16 @@ +package com.qc.soft.framework.basic.enums; + +import com.qc.soft.framework.basic.entity.BasicResponseState; + +public interface IBasicState { + + + BasicResponseState SUCCESS = BasicResponseState.builder().code("SUCCESS").message("操作成功").build(); + + BasicResponseState FAILURE = BasicResponseState.builder().code("FAILURE").message("操作失败").build(); + + BasicResponseState TENANT_DOES_NOT_EXIST = BasicResponseState.builder().code("TENANT_DOES_NOT_EXIST").message("租户不存在").build(); + + BasicResponseState TENANT_NOT_ENABLED = BasicResponseState.builder().code("TENANT_NOT_ENABLED").message("%s租户未启用").build(); + +} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/enums/JenkinsJobStatus.java b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/enums/JenkinsJobStatus.java similarity index 88% rename from deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/enums/JenkinsJobStatus.java rename to deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/enums/JenkinsJobStatus.java index 28fa291..c7b7e75 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/enums/JenkinsJobStatus.java +++ b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/enums/JenkinsJobStatus.java @@ -1,4 +1,4 @@ -package com.qc.soft.deploy.ease.enums; +package com.qc.soft.framework.basic.enums; import lombok.Getter; diff --git a/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/exception/BasicException.java b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/exception/BasicException.java new file mode 100644 index 0000000..a3cbef2 --- /dev/null +++ b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/exception/BasicException.java @@ -0,0 +1,32 @@ +package com.qc.soft.framework.basic.exception; + + +import com.qc.soft.framework.basic.entity.BasicResponseState; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class BasicException extends RuntimeException { + + private BasicResponseState error; + + public BasicException(String message) { + super(message, null); + } + + public BasicException(BasicResponseState error) { + super(error.getMessage(), null); + this.error = error; + } + + public BasicException(BasicResponseState error, String message) { + super(message, null); + this.error = error; + } + + public BasicException(BasicResponseState error, Throwable e) { + super(error.getMessage(), e); + this.error = error; + } +} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/BasicAuthUtils.java b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/BasicAuthUtils.java similarity index 87% rename from deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/BasicAuthUtils.java rename to deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/BasicAuthUtils.java index 3313709..67ea7bb 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/BasicAuthUtils.java +++ b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/BasicAuthUtils.java @@ -1,4 +1,4 @@ -package com.qc.soft.deploy.ease.utils; +package com.qc.soft.framework.basic.utils; import java.util.Base64; diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/DateUtils.java b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/DateUtils.java similarity index 98% rename from deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/DateUtils.java rename to deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/DateUtils.java index f7e887c..b5abf9c 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/DateUtils.java +++ b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/DateUtils.java @@ -1,4 +1,4 @@ -package com.qc.soft.deploy.ease.utils; +package com.qc.soft.framework.basic.utils; import java.text.ParseException; import java.text.SimpleDateFormat; diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/FileUtils.java b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/FileUtils.java similarity index 97% rename from deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/FileUtils.java rename to deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/FileUtils.java index fb111a8..4cdb967 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/FileUtils.java +++ b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/FileUtils.java @@ -1,4 +1,4 @@ -package com.qc.soft.deploy.ease.utils; +package com.qc.soft.framework.basic.utils; import lombok.extern.slf4j.Slf4j; import org.springframework.core.io.Resource; diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/HttpUtils.java b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/HttpUtils.java similarity index 98% rename from deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/HttpUtils.java rename to deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/HttpUtils.java index d346c91..70e1c31 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/HttpUtils.java +++ b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/HttpUtils.java @@ -1,10 +1,9 @@ -package com.qc.soft.deploy.ease.utils; +package com.qc.soft.framework.basic.utils; import cn.hutool.core.map.MapUtil; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.apache.hc.client5.http.classic.methods.HttpDelete; import org.apache.hc.client5.http.classic.methods.HttpGet; import org.apache.hc.client5.http.classic.methods.HttpPost; @@ -15,7 +14,6 @@ import org.apache.hc.client5.http.impl.classic.HttpClients; import org.apache.hc.core5.http.Header; import org.apache.hc.core5.http.HttpEntity; import org.apache.hc.core5.http.io.entity.EntityUtils; -import org.apache.logging.log4j.util.Strings; import java.io.File; import java.io.FileOutputStream; diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/MapUtils.java b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/MapUtils.java similarity index 94% rename from deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/MapUtils.java rename to deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/MapUtils.java index 10017fe..b1b3576 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/MapUtils.java +++ b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/MapUtils.java @@ -1,8 +1,8 @@ -package com.qc.soft.deploy.ease.utils; +package com.qc.soft.framework.basic.utils; -import java.util.Map; -import java.util.HashMap; import java.lang.reflect.Field; +import java.util.HashMap; +import java.util.Map; public class MapUtils { public static Map toMap(Object object) { diff --git a/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/ProcessUtils.java b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/ProcessUtils.java new file mode 100644 index 0000000..c556944 --- /dev/null +++ b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/ProcessUtils.java @@ -0,0 +1,36 @@ +package com.qc.soft.framework.basic.utils; + +import lombok.extern.slf4j.Slf4j; +import lombok.val; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +@Slf4j +public class ProcessUtils { + + public static String execPowershellCommand(String command) { + String[] execCommand = { + "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe", + "-Command", + command + }; + try { + val processBuilder = new ProcessBuilder(execCommand); + val process = processBuilder.start(); + val reader = new BufferedReader(new InputStreamReader(process.getInputStream())); + String line; + StringBuilder output = new StringBuilder(); + while ((line = reader.readLine()) != null) { + output.append(line).append("\n"); + } + int exitCode = process.waitFor(); + log.info("Exec powershell done, exitCode:{}", exitCode); + return output.toString(); + } catch (IOException | InterruptedException e) { + log.error("Exec powershell command failed, command:{}", execCommand, e); + } + return null; + } +} \ No newline at end of file diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/StrUtils.java b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/StrUtils.java similarity index 81% rename from deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/StrUtils.java rename to deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/StrUtils.java index 0fc0ab9..76d9a3f 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/StrUtils.java +++ b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/StrUtils.java @@ -1,4 +1,4 @@ -package com.qc.soft.deploy.ease.utils; +package com.qc.soft.framework.basic.utils; public class StrUtils { diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/TemplateParamsBuildUtils.java b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/TemplateParamsBuildUtils.java similarity index 87% rename from deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/TemplateParamsBuildUtils.java rename to deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/TemplateParamsBuildUtils.java index 138e163..80acd3b 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/TemplateParamsBuildUtils.java +++ b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/utils/TemplateParamsBuildUtils.java @@ -1,4 +1,4 @@ -package com.qc.soft.deploy.ease.utils; +package com.qc.soft.framework.basic.utils; import java.util.HashMap; import java.util.Map; diff --git a/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/web/ApiResult.java b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/web/ApiResult.java new file mode 100644 index 0000000..9c1221a --- /dev/null +++ b/deploy-ease-basic/src/main/java/com/qc/soft/framework/basic/web/ApiResult.java @@ -0,0 +1,40 @@ +package com.qc.soft.framework.basic.web; + +import com.qc.soft.framework.basic.entity.BasicResponseState; +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import java.io.Serializable; + +@Setter +@Getter +@Builder +@ToString +public class ApiResult implements Serializable { + + private String code; + + private String message; + + private T data; + + public ApiResult(String code, String message, T data) { + this.code = code; + this.message = message; + this.data = data; + } + + public ApiResult(BasicResponseState state) { + this.code = state.getCode(); + this.message = state.getMessage(); + } + + public ApiResult(BasicResponseState state, T data) { + this.code = state.getCode(); + this.message = state.getMessage(); + this.data = data; + } + +} diff --git a/deploy-ease-basic/target/maven-archiver/pom.properties b/deploy-ease-basic/target/maven-archiver/pom.properties new file mode 100644 index 0000000..313c642 --- /dev/null +++ b/deploy-ease-basic/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=deploy-ease-basic +groupId=com.qc.soft +version=1.0-SNAPSHOT diff --git a/deploy-ease-basic/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/deploy-ease-basic/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..61942d4 --- /dev/null +++ b/deploy-ease-basic/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,21 @@ +com\qc\soft\framework\basic\config\GlobalTenantInterceptor.class +com\qc\soft\framework\basic\web\ApiResult.class +com\qc\soft\framework\basic\entity\BasicResponseState$BasicResponseStateBuilder.class +com\qc\soft\framework\basic\utils\DateUtils.class +com\qc\soft\framework\basic\entity\BasicResponseState.class +com\qc\soft\framework\basic\utils\StrUtils.class +com\qc\soft\framework\basic\enums\JenkinsJobStatus.class +com\qc\soft\framework\basic\utils\TemplateParamsBuildUtils.class +com\qc\soft\framework\basic\utils\MapUtils.class +com\qc\soft\framework\basic\context\TenantContext.class +com\qc\soft\framework\basic\config\GlobalWebConfigurer.class +com\qc\soft\framework\basic\utils\HttpUtils.class +com\qc\soft\framework\basic\config\GlobalResponseHandler.class +com\qc\soft\framework\basic\exception\BasicException.class +com\qc\soft\framework\basic\utils\FileUtils.class +com\qc\soft\framework\basic\utils\ProcessUtils.class +com\qc\soft\framework\basic\config\GlobalExceptionHandler.class +com\qc\soft\framework\basic\enums\IBasicState.class +com\qc\soft\framework\basic\entity\BaseEntity.class +com\qc\soft\framework\basic\utils\BasicAuthUtils.class +com\qc\soft\framework\basic\web\ApiResult$ApiResultBuilder.class diff --git a/deploy-ease-basic/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/deploy-ease-basic/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..6d55abb --- /dev/null +++ b/deploy-ease-basic/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,19 @@ +D:\work\github-workspace\deploy-ease-backend\deploy-ease-basic\src\main\java\com\qc\soft\framework\basic\context\TenantContext.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-basic\src\main\java\com\qc\soft\framework\basic\config\GlobalTenantInterceptor.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-basic\src\main\java\com\qc\soft\framework\basic\config\GlobalWebConfigurer.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-basic\src\main\java\com\qc\soft\framework\basic\config\GlobalExceptionHandler.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-basic\src\main\java\com\qc\soft\framework\basic\utils\HttpUtils.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-basic\src\main\java\com\qc\soft\framework\basic\web\ApiResult.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-basic\src\main\java\com\qc\soft\framework\basic\utils\DateUtils.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-basic\src\main\java\com\qc\soft\framework\basic\utils\BasicAuthUtils.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-basic\src\main\java\com\qc\soft\framework\basic\enums\IBasicState.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-basic\src\main\java\com\qc\soft\framework\basic\entity\BasicResponseState.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-basic\src\main\java\com\qc\soft\framework\basic\utils\FileUtils.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-basic\src\main\java\com\qc\soft\framework\basic\utils\TemplateParamsBuildUtils.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-basic\src\main\java\com\qc\soft\framework\basic\config\GlobalResponseHandler.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-basic\src\main\java\com\qc\soft\framework\basic\enums\JenkinsJobStatus.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-basic\src\main\java\com\qc\soft\framework\basic\utils\ProcessUtils.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-basic\src\main\java\com\qc\soft\framework\basic\entity\BaseEntity.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-basic\src\main\java\com\qc\soft\framework\basic\utils\StrUtils.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-basic\src\main\java\com\qc\soft\framework\basic\exception\BasicException.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-basic\src\main\java\com\qc\soft\framework\basic\utils\MapUtils.java diff --git a/deploy-ease-basic/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/deploy-ease-basic/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/deploy-ease-basic/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/deploy-ease-basic/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/deploy-ease-core/pom.xml b/deploy-ease-core/pom.xml index 1497647..845bd39 100644 --- a/deploy-ease-core/pom.xml +++ b/deploy-ease-core/pom.xml @@ -78,11 +78,6 @@ httpclient5 ${http5.version} - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - cn.hutool hutool-all @@ -123,10 +118,15 @@ mapstruct-jdk8 ${mapstruct.version} + + com.qc.soft + deploy-ease-basic + ${version} + com.qc.soft deploy-ease-api - 1.0-SNAPSHOT + ${version} com.alibaba.cloud @@ -140,36 +140,16 @@ com.alibaba.nacos nacos-client + + org.apache.commons + commons-lang3 + 3.12.0 + - - org.codehaus.mojo - flatten-maven-plugin - ${flatten-maven-plugin.version} - - true - resolveCiFriendliesOnly - - - - flatten - process-resources - - flatten - - - - flatten-clean - clean - - clean - - - - org.codehaus.mojo exec-maven-plugin @@ -255,7 +235,7 @@ com.qc.soft deploy-ease-parent - 1.0-SNAPSHOT + ${version} \ No newline at end of file diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/DeployEaseApplication.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/DeployEaseApplication.java index 4bda5e6..0cc18e9 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/DeployEaseApplication.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/DeployEaseApplication.java @@ -11,7 +11,7 @@ import java.net.URLClassLoader; @SpringBootConfiguration @EnableAutoConfiguration -@ComponentScan("com.qc.soft.deploy.ease.*") +@ComponentScan("com.qc.soft.deploy.ease") @EnableAsync public class DeployEaseApplication { diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/ApiResponse.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/ApiResponse.java deleted file mode 100644 index 2935943..0000000 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/ApiResponse.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.qc.soft.deploy.ease.config; - -import com.qc.soft.deploy.ease.enums.BusinessErrorCode; -import lombok.Builder; -import lombok.ToString; - -import java.io.Serializable; -import java.util.StringJoiner; - -@Builder -@ToString -public class ApiResponse implements Serializable { - - private BusinessErrorCode code; - - private String message; - - private T data; - - public ApiResponse(BusinessErrorCode code, String message) { - this.code = code; - this.message = message; - } - - public ApiResponse(BusinessErrorCode code, String message, T data) { - this(code, message); - this.data = data; - } - - public BusinessErrorCode getCode() { - return code; - } - - public void setCode(BusinessErrorCode code) { - this.code = code; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public T getData() { - return data; - } - - public void setData(T data) { - this.data = data; - } - -} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/BusinessWebConfigurer.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/BusinessWebConfigurer.java new file mode 100644 index 0000000..b3820b5 --- /dev/null +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/BusinessWebConfigurer.java @@ -0,0 +1,24 @@ +package com.qc.soft.deploy.ease.config; + +import com.qc.soft.deploy.ease.interceptor.BusinessTenantInterceptor; +import com.qc.soft.framework.basic.config.GlobalWebConfigurer; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import javax.annotation.Resource; +@Configuration +@Slf4j +@AutoConfigureAfter(GlobalWebConfigurer.class) +public class BusinessWebConfigurer implements WebMvcConfigurer { + + @Resource + private BusinessTenantInterceptor businessTenantInterceptor; + + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(businessTenantInterceptor).addPathPatterns("/**"); + } + +} \ No newline at end of file diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/GlobalCorsConfig.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/GlobalCorsConfig.java deleted file mode 100644 index d4aaf95..0000000 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/GlobalCorsConfig.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.qc.soft.deploy.ease.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.CorsRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -@Configuration -public class GlobalCorsConfig { - @Bean - public WebMvcConfigurer corsConfigurer() { - return new WebMvcConfigurer() { - @Override - public void addCorsMappings(CorsRegistry registry) { - registry.addMapping("/**") // 允许跨域的路径 - .allowedOrigins("*") // 允许跨域请求的域名 - .allowedMethods("GET", "POST", "PUT", "DELETE") // 允许的请求方法 - .allowedHeaders("*") // 允许的请求头 - .allowCredentials(true); // 是否允许证书(cookies) - } - }; - } -} \ No newline at end of file diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/GlobalExceptionHandler.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/GlobalExceptionHandler.java deleted file mode 100644 index 294f1fa..0000000 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/GlobalExceptionHandler.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.qc.soft.deploy.ease.config; - -import com.qc.soft.deploy.ease.enums.ResponseCode; -import com.qc.soft.deploy.ease.exception.BusinessException; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.RestControllerAdvice; - -import javax.servlet.http.HttpServletRequest; - -@RestControllerAdvice -@Slf4j -public class GlobalExceptionHandler { - - @Autowired - private HttpServletRequest httpServletRequest; - - @ExceptionHandler(BusinessException.class) - public ApiResponse parameterBodyMissingExceptionHandler(BusinessException exception) { - String requestURI = httpServletRequest.getRequestURI(); - log.error("An exception occurred while requesting an interface:{}", requestURI, exception); - return ApiResponse.builder().code(exception.getCode()).message(exception.getMessage()).build(); - } -} \ No newline at end of file diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/ShutdownContextClosedEventListener.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/ShutdownContextClosedEventListener.java new file mode 100644 index 0000000..b108100 --- /dev/null +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/ShutdownContextClosedEventListener.java @@ -0,0 +1,22 @@ +package com.qc.soft.deploy.ease.config; + +import com.qc.soft.deploy.ease.context.TenantAdapterProcessContext; +import com.qc.soft.deploy.ease.dto.TenantAdapterJarDTO; +import com.qc.soft.framework.basic.utils.ProcessUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.ApplicationListener; +import org.springframework.context.event.ContextClosedEvent; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +public class ShutdownContextClosedEventListener implements ApplicationListener { + @Override + public void onApplicationEvent(ContextClosedEvent event) { + System.out.println("The service is terminating and starts destroying the adapter project!!!"); + for (TenantAdapterJarDTO tenantAdapterJar : TenantAdapterProcessContext.getTenantJarProcess()) { + String output = ProcessUtils.execPowershellCommand(String.format("Stop-Process -Id %s", tenantAdapterJar.getPid())); + log.info("Tenant {} adapter project it has been destroyed,output:{}", tenantAdapterJar.getTenantCode(), output); + } + } +} \ No newline at end of file diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/TenantAdapterRunner.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/TenantAdapterRunner.java index 1bd03cf..a25b05b 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/TenantAdapterRunner.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/TenantAdapterRunner.java @@ -1,77 +1,170 @@ package com.qc.soft.deploy.ease.config; import com.alibaba.cloud.nacos.NacosDiscoveryProperties; -import com.qc.soft.deploy.ease.consts.Consts; +import com.qc.soft.deploy.ease.api.response.TenantResponse; +import com.qc.soft.deploy.ease.context.TenantAdapterProcessContext; +import com.qc.soft.deploy.ease.dto.TenantAdapterJarDTO; +import com.qc.soft.deploy.ease.enums.BusinessState; +import com.qc.soft.deploy.ease.exception.BusinessException; +import com.qc.soft.deploy.ease.service.INacosService; import com.qc.soft.deploy.ease.service.ITenantService; import lombok.extern.slf4j.Slf4j; -import org.apache.logging.log4j.util.Strings; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.tuple.Pair; +import org.jetbrains.annotations.NotNull; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.io.BufferedReader; import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; import java.util.Properties; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +import static com.qc.soft.framework.basic.utils.ProcessUtils.execPowershellCommand; @Component @Slf4j public class TenantAdapterRunner implements CommandLineRunner { + private static final int QUERY_INTERVAL_MS = 10000; + + private static final int MAX_ATTEMPTS = 10; + @Resource private ITenantService tenantService; + @Resource + private INacosService nacosService; + @Resource private NacosDiscoveryProperties nacosDiscoveryProperties; + @Value("${deploy-ease.adapter.path}") + private String adapterJarFile; + @Override + public void run(String... args) { - String env; - String classLoaderName = getClass().getClassLoader().getClass().getName(); - if (classLoaderName.contains("LaunchedURLClassLoader")) { - System.out.println("Application started via java -jar or from a fat JAR."); - env = "prod"; - } else { - env = "dev"; - } -// -DNACOS_CONFIG_SERVER=192.168.0.166:8848 -// -DTENANT_CODE=longi -// -DDEPLOY_ENV=deploy-ease-dev -// -DNACOS_USER=nacos -// -DNACOS_PWD=qichen5210523 + List tenants = tenantService.tenants(); + log.info("Start the tenant adapter project!!!"); + ExecutorService pool = Executors.newFixedThreadPool(tenants.size()); + ExecutorService checkRegistered = Executors.newSingleThreadExecutor(); +// for (TenantResponse tenant : tenants) { +// runTenantAdapterJar(tenant.getTenantCode()); +// } + CompletableFuture.allOf(tenants.stream().map(tenant -> CompletableFuture.runAsync(() -> execStartTenantAdapterJar(tenant.getTenantCode()), pool)).toArray(CompletableFuture[]::new)); + pool.shutdown(); + checkRegistered.submit(() -> { + boolean nacosResult = false; + int attempts = 0; + while (!nacosResult && attempts < MAX_ATTEMPTS) { + List> registered = nacosService.instances(tenants.stream().map(TenantResponse::getTenantCode).collect(Collectors.toList())); + nacosResult = registered.stream().allMatch(Pair::getRight); + if (!nacosResult) { + attempts++; + log.error("Check tenant adapter registered nacos not complete successfully {} attempts", attempts); + try { + Thread.sleep(QUERY_INTERVAL_MS); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + log.error("Check registered task thread was interrupted: ", e); + break; + } + } + } + + if (nacosResult) { + TenantAdapterProcessContext.setTenantJarProcess(getWindowTenantAdapterProcess()); + log.info("All tenant adapter registered nacos registration complete!!!"); + } else { + log.error("Check tenant adapter registered nacos did not complete successfully within the maximum attempts!!!"); + } + checkRegistered.shutdown(); + try { + if (!checkRegistered.awaitTermination(60, TimeUnit.SECONDS)) { + checkRegistered.shutdownNow(); + } + } catch (InterruptedException e) { + checkRegistered.shutdownNow(); + Thread.currentThread().interrupt(); + } + }); + } + + @NotNull + private String[] buildTenantAdapterNacosArgs(String tenantCode) { Properties nacosProperties = nacosDiscoveryProperties.getNacosProperties(); - System.out.println(nacosProperties); - String tenantAdapterJarPath = Consts.TENANT_ADAPTER_SERVICE_JAR_PATH.get(env); + return new String[] {String.format("--NACOS_CONFIG_SERVER=%s", nacosProperties.get("serverAddr")), String.format("--TENANT_CODE=%s", tenantCode), String.format("--DEPLOY_ENV=%s", nacosProperties.get("namespace")), String.format("--NACOS_USER=%s", nacosProperties.get("username")), String.format("--NACOS_PWD=%s", nacosProperties.get("password"))}; + } - String nacosOptions = String.format("-DNACOS_CONFIG_SERVER=%s -DDEPLOY_ENV=%s -DTENANT_CODE=longi -DNACOS_USER=%s -DNACOS_PWD=%s", - nacosProperties.get("serverAddr"), - nacosProperties.get("namespace"), - nacosProperties.get("username"), - nacosProperties.get("password") - ); - - - String[] command = {"java", "-jar", nacosOptions, tenantAdapterJarPath}; + private void execStartTenantAdapterJar(String tenantCode) { + String[] runArgs = buildTenantAdapterNacosArgs(tenantCode); try { + log.info("Start the {} adapter project", tenantCode); + String[] command = {"java", "-jar", adapterJarFile}; ProcessBuilder processBuilder = new ProcessBuilder(command); - processBuilder.inheritIO(); - processBuilder.redirectErrorStream(true); + processBuilder.command().addAll(java.util.Arrays.asList(runArgs)); Process process = processBuilder.start(); - Executors.newSingleThreadExecutor().submit(() -> { + new Thread(() -> { try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) { String line; while ((line = reader.readLine()) != null) { - System.out.println(line); + log.warn(line); } } catch (Exception e) { - e.printStackTrace(); + log.error("Read boot jar log error", e); } - }); - // 等待进程结束 - int exitCode = process.waitFor(); - System.out.println("Process exited with code: " + exitCode); + }).start(); + log.info("Startup {} adapter project complete!!!", tenantCode); } catch (Exception e) { - log.error("Failed to start the adapter jar", e); + log.error("Failed to start the adapter project jar, args:{}", runArgs, e); } } -} + + + public List getWindowTenantAdapterProcess() { + String command = "Get-WmiObject Win32_Process | Where-Object { $_.Name -like 'java.exe' -and $_.CommandLine -like '*deploy-ease-tenant-adapter-1.0.0.jar*' } | Select-Object ProcessId, CommandLine | Format-List -Property ProcessId, CommandLine"; + String output = execPowershellCommand(command); + if (StringUtils.isEmpty(output)) { + return new ArrayList<>(); + } + List result = new ArrayList<>(); + List processIds = new ArrayList<>(); + List tenantCodes = new ArrayList<>(); + Pattern processIdPattern = Pattern.compile("ProcessId\\s+:\\s+(\\d+)"); + Matcher processIdMatcher = processIdPattern.matcher(output); + + while (processIdMatcher.find()) { + String processId = processIdMatcher.group(1); + processIds.add(processId); + } + + Pattern tenantCodePattern = Pattern.compile("--TENANT_CODE=([^\\s]+)"); + Matcher tenantCodeMatcher = tenantCodePattern.matcher(output); + + while (tenantCodeMatcher.find()) { + String tenantCode = tenantCodeMatcher.group(1); + tenantCodes.add(tenantCode); + } + int size = Math.min(processIds.size(), tenantCodes.size()); + if (processIds.size() != tenantCodes.size()) { + throw new BusinessException(BusinessState.TENANT_CODE_AND_NUMBER_PROCESSES_INCONSISTENT); + } + for (int i = 0; i < size; i++) { + result.add(TenantAdapterJarDTO.builder().pid(processIds.get(i)).tenantCode(tenantCodes.get(i)).build()); + } + log.info("Query window tenant start process is finished!!!"); + return result; + } + +} \ No newline at end of file diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/consts/Consts.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/consts/Consts.java index 2f71ef7..0c68f5f 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/consts/Consts.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/consts/Consts.java @@ -4,11 +4,11 @@ import java.util.HashMap; import java.util.Map; public class Consts { - public static final String TENANT_ADAPTER_SERVICE_NAME = "deploy-ease-adapter-%s"; + public static final String TENANT_ADAPTER_SERVICE_NAME = "deploy-ease-tenant-adapter-%s"; public static final Map TENANT_ADAPTER_SERVICE_JAR_PATH = new HashMap<>(); static { - TENANT_ADAPTER_SERVICE_JAR_PATH.put("dev", "D://workgithub-workspace//deploy-ease-backend//deploy-ease-tenant-adapter//target//deploy-ease-tenant-adapter-1.0.0.jar"); + TENANT_ADAPTER_SERVICE_JAR_PATH.put("dev", "D:\\work\\github-workspace\\deploy-ease-backend\\deploy-ease-tenant-adapter\\target\\deploy-ease-tenant-adapter-1.0.0.jar"); } } diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/context/TenantAdapterProcessContext.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/context/TenantAdapterProcessContext.java new file mode 100644 index 0000000..4647709 --- /dev/null +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/context/TenantAdapterProcessContext.java @@ -0,0 +1,17 @@ +package com.qc.soft.deploy.ease.context; + +import com.qc.soft.deploy.ease.dto.TenantAdapterJarDTO; +import lombok.Getter; + +import java.util.ArrayList; +import java.util.List; + +public class TenantAdapterProcessContext { + @Getter + private static final List tenantJarProcess = new ArrayList<>(); + + public static void setTenantJarProcess(List tenantsProcess) { + tenantJarProcess.addAll(tenantsProcess); + } + +} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/controller/api/DictionaryApiApiController.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/controller/api/DictionaryApiApiController.java new file mode 100644 index 0000000..852927b --- /dev/null +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/controller/api/DictionaryApiApiController.java @@ -0,0 +1,27 @@ +package com.qc.soft.deploy.ease.controller.api; + +import com.qc.soft.deploy.ease.api.IDictionaryApi; +import com.qc.soft.deploy.ease.api.response.DictionaryResponse; +import com.qc.soft.deploy.ease.api.response.TenantDictionaryResponse; +import com.qc.soft.deploy.ease.service.IDictionaryService; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +@RestController +public class DictionaryApiApiController implements IDictionaryApi { + + @Resource + private IDictionaryService dictionaryService; + + @Override + public List systemDicts() { + return dictionaryService.findSystemDicts(); + } + + @Override + public List tenantDicts() { + return dictionaryService.findDictsByTenantCode(); + } +} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/controller/NacosController.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/controller/api/NacosApiApiController.java similarity index 65% rename from deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/controller/NacosController.java rename to deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/controller/api/NacosApiApiController.java index 0323682..8807f61 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/controller/NacosController.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/controller/api/NacosApiApiController.java @@ -1,13 +1,13 @@ -package com.qc.soft.deploy.ease.controller; +package com.qc.soft.deploy.ease.controller.api; -import com.qc.soft.deploy.ease.api.controller.INacosController; +import com.qc.soft.deploy.ease.api.INacosApi; import com.qc.soft.deploy.ease.service.INacosService; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @RestController -public class NacosController implements INacosController { +public class NacosApiApiController implements INacosApi { @Resource diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/controller/mgmt/DictionaryController.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/controller/mgmt/DictionaryController.java new file mode 100644 index 0000000..ad8a168 --- /dev/null +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/controller/mgmt/DictionaryController.java @@ -0,0 +1,32 @@ +package com.qc.soft.deploy.ease.controller.mgmt; + +import com.qc.soft.deploy.ease.api.IDictionaryApi; +import com.qc.soft.deploy.ease.api.response.DictionaryResponse; +import com.qc.soft.deploy.ease.api.response.TenantDictionaryResponse; +import com.qc.soft.deploy.ease.context.TenantAdapterProcessContext; +import com.qc.soft.deploy.ease.dto.TenantAdapterJarDTO; +import com.qc.soft.deploy.ease.service.IDictionaryService; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +@RestController +@RequestMapping("/mgmt") +public class DictionaryController implements IDictionaryApi { + + @Resource + private IDictionaryService dictionaryService; + + @Override + public List systemDicts() { + List tenantJarProcess = TenantAdapterProcessContext.getTenantJarProcess(); + return dictionaryService.findSystemDicts(); + } + + @Override + public List tenantDicts() { + return dictionaryService.findDictsByTenantCode(); + } +} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/controller/mgmt/TenantController.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/controller/mgmt/TenantController.java new file mode 100644 index 0000000..85c9655 --- /dev/null +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/controller/mgmt/TenantController.java @@ -0,0 +1,22 @@ +package com.qc.soft.deploy.ease.controller.mgmt; + +import com.qc.soft.deploy.ease.api.ITenantApi; +import com.qc.soft.deploy.ease.api.response.TenantAdapterContextResponse; +import com.qc.soft.deploy.ease.service.ITenantService; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("/mgmt") +public class TenantController implements ITenantApi { + + @Resource + private ITenantService tenantService; + + @Override + public TenantAdapterContextResponse tenantAdapterContext() { + return tenantService.getTenantAdapterContext(); + } +} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/convert/dto/DictionaryConvert.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/convert/dto/DictionaryConvert.java index 8901e2c..f39ffb4 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/convert/dto/DictionaryConvert.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/convert/dto/DictionaryConvert.java @@ -1,8 +1,7 @@ package com.qc.soft.deploy.ease.convert.dto; -import com.qc.soft.deploy.ease.convert.K8sNamespaceConvert; -import com.qc.soft.deploy.ease.entity.Dictionary; -import com.qc.soft.deploy.ease.entity.TenantDictionary; +import com.qc.soft.deploy.ease.entity.SysDict; +import com.qc.soft.deploy.ease.entity.TenantDict; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings; @@ -15,9 +14,9 @@ public interface DictionaryConvert { @Mappings( - @Mapping(target = "tenantCode", expression = "java(com.qc.soft.deploy.ease.context.TenantContext.getCurrentTenant())") + @Mapping(target = "tenantCode", expression = "java(com.qc.soft.framework.basic.context.TenantContext.getCurrentTenant())") ) - TenantDictionary systemDictionaryToTenantDictionary(Dictionary dictionary); + TenantDict systemDictionaryToTenantDictionary(SysDict sysDict); } diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/convert/response/DictionaryConvert.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/convert/response/DictionaryConvert.java index 02b23c7..6022db3 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/convert/response/DictionaryConvert.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/convert/response/DictionaryConvert.java @@ -1,7 +1,7 @@ package com.qc.soft.deploy.ease.convert.response; import com.qc.soft.deploy.ease.api.response.DictionaryResponse; -import com.qc.soft.deploy.ease.entity.Dictionary; +import com.qc.soft.deploy.ease.entity.SysDict; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; @@ -13,6 +13,6 @@ public interface DictionaryConvert { DictionaryConvert INSTANCE = Mappers.getMapper(DictionaryConvert.class); - List entityToResponse(List dictionaries); + List entityToResponse(List dictionaries); } diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/convert/response/TenantConvert.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/convert/response/TenantConvert.java index e12dc47..4434f51 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/convert/response/TenantConvert.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/convert/response/TenantConvert.java @@ -1,9 +1,7 @@ package com.qc.soft.deploy.ease.convert.response; -import com.qc.soft.deploy.ease.api.response.TenantDictionaryResponse; import com.qc.soft.deploy.ease.api.response.TenantResponse; import com.qc.soft.deploy.ease.entity.Tenant; -import com.qc.soft.deploy.ease.entity.TenantDictionary; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/convert/response/TenantDictionaryConvert.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/convert/response/TenantDictionaryConvert.java index 0eadc3e..dbbb377 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/convert/response/TenantDictionaryConvert.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/convert/response/TenantDictionaryConvert.java @@ -1,7 +1,7 @@ package com.qc.soft.deploy.ease.convert.response; import com.qc.soft.deploy.ease.api.response.TenantDictionaryResponse; -import com.qc.soft.deploy.ease.entity.TenantDictionary; +import com.qc.soft.deploy.ease.entity.TenantDict; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; @@ -13,6 +13,6 @@ public interface TenantDictionaryConvert { TenantDictionaryConvert INSTANCE = Mappers.getMapper(TenantDictionaryConvert.class); - List entityToResponse(List dictionaries); + List entityToResponse(List dictionaries); } diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/dto/TenantAdapterJarDTO.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/dto/TenantAdapterJarDTO.java new file mode 100644 index 0000000..4367e1e --- /dev/null +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/dto/TenantAdapterJarDTO.java @@ -0,0 +1,14 @@ +package com.qc.soft.deploy.ease.dto; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class TenantAdapterJarDTO { + + private String pid; + + private String tenantCode; + +} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/Dictionary.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/SysDict.java similarity index 72% rename from deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/Dictionary.java rename to deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/SysDict.java index 86295d6..00e3bf8 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/Dictionary.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/SysDict.java @@ -6,17 +6,13 @@ import lombok.EqualsAndHashCode; import javax.persistence.Column; import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; import javax.persistence.Table; -import java.util.Date; @EqualsAndHashCode(callSuper = true) -@Table(name = "dictionary") +@Table(name = "sys_dict") @Entity @Data -public class Dictionary extends BaseEntity { +public class SysDict extends BaseEntity { @Column(name = "dictionary_code") private String code; diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/SysJenkinsConfig.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/SysJenkinsConfig.java new file mode 100644 index 0000000..3cb0505 --- /dev/null +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/SysJenkinsConfig.java @@ -0,0 +1,29 @@ +package com.qc.soft.deploy.ease.entity; + +import com.qc.soft.framework.basic.entity.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +@EqualsAndHashCode(callSuper = true) +@Table(name = "sys_jenkins_config") +@Entity +@Data +public class SysJenkinsConfig extends BaseEntity { + + @Column(name = "jenkins_code") + private String jenkinsCode; + + @Column(name = "jenkins_name") + private String jenkinsName; + + private String username; + + private String password; + + private String url; + +} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/User.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/SysUser.java similarity index 60% rename from deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/User.java rename to deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/SysUser.java index 7ba6646..9da0206 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/User.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/SysUser.java @@ -6,18 +6,13 @@ import lombok.EqualsAndHashCode; import javax.persistence.Column; import javax.persistence.Entity; -import javax.persistence.EntityListeners; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; import javax.persistence.Table; -import java.util.Date; @EqualsAndHashCode(callSuper = true) -@Table(name = "user") +@Table(name = "sys_user") @Entity @Data -public class User extends BaseEntity { +public class SysUser extends BaseEntity { @Column(name = "user_name") private String username; diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/TenantDictionary.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/TenantDict.java similarity index 91% rename from deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/TenantDictionary.java rename to deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/TenantDict.java index ddf8e55..d08014d 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/TenantDictionary.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/TenantDict.java @@ -12,7 +12,7 @@ import javax.persistence.Table; @Table(name = "tenant_dictionary") @Entity @Data -public class TenantDictionary extends BaseEntity { +public class TenantDict extends BaseEntity { @Column(name = "dictionary_code") private String code; diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/TenantEnv.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/TenantEnv.java new file mode 100644 index 0000000..4d18988 --- /dev/null +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/TenantEnv.java @@ -0,0 +1,32 @@ +package com.qc.soft.deploy.ease.entity; + + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +@EqualsAndHashCode(callSuper = true) +@Table(name = "tenant_env") +@Entity +@Data +public class TenantEnv extends BaseEntity { + + @Column(name = "code") + private String envCode; + + @Column(name = "name") + private String envName; + + @Column(name = "type") + private int evnType; + + @Column(name = "tenant_code") + private String tenantCode; + + @Column(name = "is_vpn") + private boolean isVpn; + +} \ No newline at end of file diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/TenantEnvJenkins.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/TenantEnvJenkins.java new file mode 100644 index 0000000..a5dc901 --- /dev/null +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/entity/TenantEnvJenkins.java @@ -0,0 +1,29 @@ +package com.qc.soft.deploy.ease.entity; + +import com.qc.soft.framework.basic.entity.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +@EqualsAndHashCode(callSuper = true) +@Table(name = "tenant_env_jenkins") +@Entity +@Data +public class TenantEnvJenkins extends BaseEntity { + + @Column(name = "view_name") + private String viewName; + + @Column(name = "jenkins_code") + private String jenkinsCode; + + @Column(name = "env_code") + private String envCode; + + @Column(name = "tenant_code") + private String tenantCode; + +} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/enums/BusinessErrorCode.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/enums/BusinessErrorCode.java deleted file mode 100644 index 29ee00e..0000000 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/enums/BusinessErrorCode.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.qc.soft.deploy.ease.enums; - -public enum BusinessErrorCode { - - SUCCESS("操作成功"), - FAILURE("操作失败"), - TENANT_DOES_NOT_EXIST("租户不存在"), - - TENANT_NOT_ENABLED("%s租户未启用"); - - - private String message; - - BusinessErrorCode(String message) { - this.message = message; - } - - public String getMessage() { - return message; - } -} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/enums/BusinessState.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/enums/BusinessState.java new file mode 100644 index 0000000..509d905 --- /dev/null +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/enums/BusinessState.java @@ -0,0 +1,23 @@ +package com.qc.soft.deploy.ease.enums; + +import com.qc.soft.framework.basic.entity.BasicResponseState; +import com.qc.soft.framework.basic.enums.IBasicState; + +public interface BusinessState extends IBasicState { + + BasicResponseState TENANT_CODE_AND_NUMBER_PROCESSES_INCONSISTENT = BasicResponseState.builder().code("TENANT_CODE_AND_NUMBER_PROCESSES_INCONSISTENT").message("租户Code数量和进程数量不一致").build(); + + +// +// SUCCESS("操作成功"), +// FAILURE("操作失败"), +// TENANT_DOES_NOT_EXIST("租户不存在"), +// TENANT_NOT_ENABLED("%s租户未启用"); +// +// private final String message; +// +// BusinessErrorCode(String message) { +// this.message = message; +// } + +} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/enums/ResponseCode.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/enums/ResponseCode.java deleted file mode 100644 index c8e7e44..0000000 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/enums/ResponseCode.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.qc.soft.deploy.ease.enums; - -import lombok.Getter; - -@Getter -public enum ResponseCode { - - SUCCESS(BusinessErrorCode.SUCCESS, BusinessErrorCode.SUCCESS.getMessage()), - FAILURE(BusinessErrorCode.FAILURE, BusinessErrorCode.FAILURE.getMessage()), - TENANT_DOES_NOT_EXIST(BusinessErrorCode.TENANT_DOES_NOT_EXIST, BusinessErrorCode.TENANT_DOES_NOT_EXIST.getMessage()); - - private final BusinessErrorCode code; - - private final String message; - - ResponseCode(BusinessErrorCode code, String message) { - this.code = code; - this.message = message; - } - -} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/exception/BusinessException.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/exception/BusinessException.java index 5808ef2..37916b5 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/exception/BusinessException.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/exception/BusinessException.java @@ -1,27 +1,29 @@ package com.qc.soft.deploy.ease.exception; -import com.qc.soft.deploy.ease.enums.BusinessErrorCode; +import com.qc.soft.framework.basic.entity.BasicResponseState; +import com.qc.soft.framework.basic.exception.BasicException; import lombok.Builder; import lombok.Getter; import lombok.Setter; +@Getter @Setter -@Builder -public class BusinessException extends RuntimeException { +public class BusinessException extends BasicException { - @Getter - protected BusinessErrorCode code; - protected String message; - - public BusinessException(BusinessErrorCode code, String message, Throwable e) { - super(message, e); - this.code = code; - this.message = message; + public BusinessException(String message) { + super(message); } - public BusinessException(BusinessErrorCode code, String message) { - this(code, message, null); + public BusinessException(BasicResponseState error) { + super(error); } + public BusinessException(BasicResponseState error, String message) { + super(error, message); + } + + public BusinessException(BasicResponseState error, Throwable e) { + super(error, e); + } } diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/fegin/response/JenkinsJobResponse.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/fegin/response/JenkinsJobResponse.java index 5710397..0dd20e6 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/fegin/response/JenkinsJobResponse.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/fegin/response/JenkinsJobResponse.java @@ -1,6 +1,5 @@ package com.qc.soft.deploy.ease.fegin.response; -import com.qc.soft.deploy.ease.enums.JenkinsJobStatus; import lombok.Data; import lombok.ToString; @@ -20,7 +19,7 @@ public class JenkinsJobResponse { private boolean building; - private JenkinsJobStatus result; +// private JenkinsJobStatus result; private Date timestamp; diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/interceptor/BusinessTenantInterceptor.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/interceptor/BusinessTenantInterceptor.java new file mode 100644 index 0000000..cfbfe1e --- /dev/null +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/interceptor/BusinessTenantInterceptor.java @@ -0,0 +1,41 @@ +package com.qc.soft.deploy.ease.interceptor; + +import com.qc.soft.deploy.ease.entity.Tenant; +import com.qc.soft.deploy.ease.exception.BusinessException; +import com.qc.soft.deploy.ease.repository.ITenantRepository; +import com.qc.soft.deploy.ease.state.IBusinessState; +import com.qc.soft.framework.basic.context.TenantContext; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Configuration; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.HandlerInterceptor; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@Slf4j +@Component +public class BusinessTenantInterceptor implements HandlerInterceptor { + + @Resource + private ITenantRepository tenantRepository; + + public BusinessTenantInterceptor() { + log.info("Business tenant interceptor registered successfully!!!"); + } + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { + String tenantCode = TenantContext.getCurrentTenant(); + Tenant tenant = tenantRepository.findByTenantCode(tenantCode); + if (tenant == null) { + throw new BusinessException(IBusinessState.TENANT_DOES_NOT_EXIST); + } + if (!tenant.isEnabled()) { + throw new BusinessException(IBusinessState.TENANT_NOT_ENABLED, String.format(IBusinessState.TENANT_NOT_ENABLED.getMessage(), tenantCode)); + } + return true; + } + +} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/interceptor/TenantInterceptor.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/interceptor/TenantInterceptor.java deleted file mode 100644 index 862b665..0000000 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/interceptor/TenantInterceptor.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.qc.soft.deploy.ease.interceptor; - -import com.qc.soft.deploy.ease.context.TenantContext; -import com.qc.soft.deploy.ease.entity.Tenant; -import com.qc.soft.deploy.ease.exception.BusinessException; -import com.qc.soft.deploy.ease.repository.ITenantRepository; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Component; -import org.springframework.web.servlet.HandlerInterceptor; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import static com.qc.soft.deploy.ease.enums.BusinessErrorCode.TENANT_DOES_NOT_EXIST; -import static com.qc.soft.deploy.ease.enums.BusinessErrorCode.TENANT_NOT_ENABLED; - -@Slf4j -@Component -public class TenantInterceptor implements HandlerInterceptor { - - @Resource - private ITenantRepository tenantRepository; - - @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { - String tenantCode = request.getHeader("x-tenant-code"); - if (null == tenantCode || StringUtils.isEmpty(tenantCode)) { - throw new BusinessException(TENANT_DOES_NOT_EXIST, "请求头未携带:x-tenant-code"); - } - Tenant tenant = tenantRepository.findByTenantCode(tenantCode); - if (tenant == null) { - throw new BusinessException(TENANT_DOES_NOT_EXIST, TENANT_DOES_NOT_EXIST.getMessage()); - } - if (!tenant.isEnabled()) { - throw new BusinessException(TENANT_NOT_ENABLED, String.format(TENANT_NOT_ENABLED.getMessage(), tenantCode)); - } - TenantContext.setCurrentTenant(tenantCode); - return true; - } - - - @Override - public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { - TenantContext.clear(); - } -} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/IDictionaryRepository.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/IDictionaryRepository.java index 873350b..572419f 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/IDictionaryRepository.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/IDictionaryRepository.java @@ -1,13 +1,12 @@ package com.qc.soft.deploy.ease.repository; -import com.qc.soft.deploy.ease.entity.Dictionary; -import com.qc.soft.deploy.ease.entity.User; +import com.qc.soft.deploy.ease.entity.SysDict; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; -public interface IDictionaryRepository extends JpaRepository { +public interface IDictionaryRepository extends JpaRepository { - List findAll(); + List findAll(); } diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/ISysJenkinsConfigRepository.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/ISysJenkinsConfigRepository.java new file mode 100644 index 0000000..85664eb --- /dev/null +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/ISysJenkinsConfigRepository.java @@ -0,0 +1,12 @@ +package com.qc.soft.deploy.ease.repository; + +import com.qc.soft.deploy.ease.entity.SysJenkinsConfig; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface ISysJenkinsConfigRepository extends JpaRepository { + + List findByJenkinsCodeIn(List codes); + +} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/ITenantDictionaryRepository.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/ITenantDictionaryRepository.java index c1a91ca..68a51d5 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/ITenantDictionaryRepository.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/ITenantDictionaryRepository.java @@ -1,13 +1,12 @@ package com.qc.soft.deploy.ease.repository; -import com.qc.soft.deploy.ease.entity.Dictionary; -import com.qc.soft.deploy.ease.entity.TenantDictionary; +import com.qc.soft.deploy.ease.entity.TenantDict; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; -public interface ITenantDictionaryRepository extends JpaRepository { +public interface ITenantDictionaryRepository extends JpaRepository { - List findAllByTenantCode(String tenantCode); + List findAllByTenantCode(String tenantCode); } diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/ITenantEnvJenkinsRepository.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/ITenantEnvJenkinsRepository.java new file mode 100644 index 0000000..e630bd8 --- /dev/null +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/ITenantEnvJenkinsRepository.java @@ -0,0 +1,13 @@ +package com.qc.soft.deploy.ease.repository; + + +import com.qc.soft.deploy.ease.entity.TenantEnvJenkins; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface ITenantEnvJenkinsRepository extends JpaRepository { + + List findByEnvCodeIn(List envCodes); + +} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/ITenantEnvRepository.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/ITenantEnvRepository.java new file mode 100644 index 0000000..c796193 --- /dev/null +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/ITenantEnvRepository.java @@ -0,0 +1,13 @@ +package com.qc.soft.deploy.ease.repository; + +import com.qc.soft.deploy.ease.entity.Tenant; +import com.qc.soft.deploy.ease.entity.TenantEnv; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface ITenantEnvRepository extends JpaRepository { + + List findByTenantCode(String tenantCode); + +} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/ITenantRepository.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/ITenantRepository.java index 82c8b74..e59411b 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/ITenantRepository.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/ITenantRepository.java @@ -1,11 +1,8 @@ package com.qc.soft.deploy.ease.repository; -import com.qc.soft.deploy.ease.entity.Dictionary; import com.qc.soft.deploy.ease.entity.Tenant; import org.springframework.data.jpa.repository.JpaRepository; -import java.util.List; - public interface ITenantRepository extends JpaRepository { Tenant findByTenantCode(String tenantCode); diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/IUserRepository.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/IUserRepository.java index d524797..f9b8065 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/IUserRepository.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/repository/IUserRepository.java @@ -1,8 +1,8 @@ package com.qc.soft.deploy.ease.repository; -import com.qc.soft.deploy.ease.entity.User; +import com.qc.soft.deploy.ease.entity.SysUser; import org.springframework.data.jpa.repository.JpaRepository; -public interface IUserRepository extends JpaRepository { - User findByUsernameAndPassword(String username, String password); +public interface IUserRepository extends JpaRepository { + SysUser findByUsernameAndPassword(String username, String password); } diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/INacosService.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/INacosService.java index 434dcc6..5973ab0 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/INacosService.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/INacosService.java @@ -1,6 +1,11 @@ package com.qc.soft.deploy.ease.service; +import org.apache.commons.lang3.tuple.Pair; + +import java.util.List; + public interface INacosService { void instances(); + List> instances(List tenantCodes); } diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/ITenantService.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/ITenantService.java index 09b0060..e5d282b 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/ITenantService.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/ITenantService.java @@ -1,6 +1,6 @@ package com.qc.soft.deploy.ease.service; -import com.qc.soft.deploy.ease.api.response.ProjectResponse; +import com.qc.soft.deploy.ease.api.response.TenantAdapterContextResponse; import com.qc.soft.deploy.ease.api.response.TenantResponse; import java.util.List; @@ -8,4 +8,6 @@ import java.util.List; public interface ITenantService { List tenants(); + + TenantAdapterContextResponse getTenantAdapterContext(); } \ No newline at end of file diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/DictionaryServiceImpl.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/DictionaryServiceImpl.java index 07c11f3..ae030af 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/DictionaryServiceImpl.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/DictionaryServiceImpl.java @@ -2,21 +2,17 @@ package com.qc.soft.deploy.ease.service.impl; import com.qc.soft.deploy.ease.api.response.DictionaryResponse; import com.qc.soft.deploy.ease.api.response.TenantDictionaryResponse; -import com.qc.soft.deploy.ease.context.TenantContext; import com.qc.soft.deploy.ease.convert.response.DictionaryConvert; -import com.qc.soft.deploy.ease.convert.response.TenantDictionaryConvert; -import com.qc.soft.deploy.ease.entity.Dictionary; -import com.qc.soft.deploy.ease.entity.TenantDictionary; +import com.qc.soft.deploy.ease.exception.BusinessException; import com.qc.soft.deploy.ease.repository.IDictionaryRepository; import com.qc.soft.deploy.ease.repository.ITenantDictionaryRepository; import com.qc.soft.deploy.ease.service.IDictionaryService; +import com.qc.soft.framework.basic.enums.IBasicState; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; + @Service public class DictionaryServiceImpl implements IDictionaryService { @@ -36,19 +32,23 @@ public class DictionaryServiceImpl implements IDictionaryService { @Override public List findDictsByTenantCode() { - String tenantCode = TenantContext.getCurrentTenant(); - List tenantSharingDict = dictionaryRepository.findAll().stream().filter(Dictionary::isTenantSharing).collect(Collectors.toList()); - List tenantDict = tenantDictionaryRepository.findAllByTenantCode(tenantCode); - List mergeTenantDict = new ArrayList<>(); - tenantSharingDict.forEach(v -> { - String systemDictCode = v.getCode(); - Map tenantDictMap = tenantDict.stream().collect(Collectors.toMap(TenantDictionary::getCode, tenantDictionary -> tenantDictionary)); - TenantDictionary tenantDictionary = tenantDictMap.get(systemDictCode); - if (tenantDictionary == null) { - tenantDictMap.put(systemDictCode, com.qc.soft.deploy.ease.convert.dto.DictionaryConvert.INSTANCE.systemDictionaryToTenantDictionary(v)); - } - mergeTenantDict.addAll(tenantDictMap.values()); - }); - return TenantDictionaryConvert.INSTANCE.entityToResponse(mergeTenantDict); + throw new BusinessException(IBasicState.TENANT_DOES_NOT_EXIST); + + + +// String tenantCode = TenantContext.getCurrentTenant(); +// List tenantSharingDict = dictionaryRepository.findAll().stream().filter(Dictionary::isTenantSharing).collect(Collectors.toList()); +// List tenantDict = tenantDictionaryRepository.findAllByTenantCode(tenantCode); +// List mergeTenantDict = new ArrayList<>(); +// tenantSharingDict.forEach(v -> { +// String systemDictCode = v.getCode(); +// Map tenantDictMap = tenantDict.stream().collect(Collectors.toMap(TenantDictionary::getCode, tenantDictionary -> tenantDictionary)); +// TenantDictionary tenantDictionary = tenantDictMap.get(systemDictCode); +// if (tenantDictionary == null) { +// tenantDictMap.put(systemDictCode, com.qc.soft.deploy.ease.convert.dto.DictionaryConvert.INSTANCE.systemDictionaryToTenantDictionary(v)); +// } +// mergeTenantDict.addAll(tenantDictMap.values()); +// }); +// return TenantDictionaryConvert.INSTANCE.entityToResponse(mergeTenantDict); } } diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/JenkinsServiceImpl.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/JenkinsServiceImpl.java index 669f074..88ae5b6 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/JenkinsServiceImpl.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/JenkinsServiceImpl.java @@ -1,81 +1,81 @@ -package com.qc.soft.deploy.ease.service.impl; - -import com.qc.soft.deploy.ease.fegin.response.JenkinsJobResponse; -import com.qc.soft.deploy.ease.event.JenkinsJobChangeEvent; -import com.qc.soft.deploy.ease.enums.JenkinsJobStatus; -import com.qc.soft.deploy.ease.service.IJenkinsService; -import org.springframework.messaging.Message; -import org.springframework.messaging.support.MessageBuilder; -import org.springframework.statemachine.StateMachine; -import org.springframework.statemachine.persist.StateMachinePersister; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.HashMap; -import java.util.Map; - -@Service -public class JenkinsServiceImpl implements IJenkinsService { - - - @Resource - private StateMachine jenkinsStateMachine; - - - @Resource - private StateMachinePersister persister; - - private int id = 1; - - private Map jenkinsJobs = new HashMap<>(); - - @Override - public JenkinsJobResponse create() { - JenkinsJobResponse jenkinsJob = new JenkinsJobResponse(); - jenkinsJob.setResult(JenkinsJobStatus.WAITING_BUILD);//设置订单的初始状态 - jenkinsJob.setId((long) id++);//设置订单的编号,累加 - jenkinsJobs.put(jenkinsJob.getId(), jenkinsJob);//根据编号对应地存储订单对象,便于存取 - System.out.println("订单创建成功" + jenkinsJob.toString()); - return jenkinsJob;//返回创建好的订单对象 - } - - //获取订单列表 - @Override - public Map getJenkinsJobs() { - return jenkinsJobs; - } - - - private synchronized boolean sendEvent(Message message, JenkinsJobResponse jenkinsJobResponse) { - boolean result = false; - try { - jenkinsStateMachine.start(); - //尝试恢复状态机状态 - persister.restore(jenkinsStateMachine, jenkinsJobResponse); - //添加延迟用于线程安全测试 - Thread.sleep(1000); - result = jenkinsStateMachine.sendEvent(message); - //持久化状态机状态 - persister.persist(jenkinsStateMachine, jenkinsJobResponse); - } catch (Exception e) { - e.printStackTrace(); - } finally { - jenkinsStateMachine.stop(); - } - return result; - } - - @Override - public JenkinsJobResponse pay(long id) { - - /*根据id获取订单集合的指定订单*/ - JenkinsJobResponse jenkinsJobResponse = jenkinsJobs.get(id); - Message message = MessageBuilder.withPayload(JenkinsJobChangeEvent.SUCCESS).setHeader("jenkinsJobResponse", jenkinsJobResponse).build(); - - if (!sendEvent(message, jenkinsJobResponse)) { - System.out.println("订单支付失败"); - } - - return jenkinsJobResponse; - } -} +//package com.qc.soft.deploy.ease.service.impl; +// +//import com.qc.soft.deploy.ease.fegin.response.JenkinsJobResponse; +//import com.qc.soft.deploy.ease.event.JenkinsJobChangeEvent; +//import com.qc.soft.deploy.ease.enums.JenkinsJobStatus; +//import com.qc.soft.deploy.ease.service.IJenkinsService; +//import org.springframework.messaging.Message; +//import org.springframework.messaging.support.MessageBuilder; +//import org.springframework.statemachine.StateMachine; +//import org.springframework.statemachine.persist.StateMachinePersister; +//import org.springframework.stereotype.Service; +// +//import javax.annotation.Resource; +//import java.util.HashMap; +//import java.util.Map; +// +//@Service +//public class JenkinsServiceImpl implements IJenkinsService { +// +// +// @Resource +// private StateMachine jenkinsStateMachine; +// +// +// @Resource +// private StateMachinePersister persister; +// +// private int id = 1; +// +// private Map jenkinsJobs = new HashMap<>(); +// +// @Override +// public JenkinsJobResponse create() { +// JenkinsJobResponse jenkinsJob = new JenkinsJobResponse(); +// jenkinsJob.setResult(JenkinsJobStatus.WAITING_BUILD);//设置订单的初始状态 +// jenkinsJob.setId((long) id++);//设置订单的编号,累加 +// jenkinsJobs.put(jenkinsJob.getId(), jenkinsJob);//根据编号对应地存储订单对象,便于存取 +// System.out.println("订单创建成功" + jenkinsJob.toString()); +// return jenkinsJob;//返回创建好的订单对象 +// } +// +// //获取订单列表 +// @Override +// public Map getJenkinsJobs() { +// return jenkinsJobs; +// } +// +// +// private synchronized boolean sendEvent(Message message, JenkinsJobResponse jenkinsJobResponse) { +// boolean result = false; +// try { +// jenkinsStateMachine.start(); +// //尝试恢复状态机状态 +// persister.restore(jenkinsStateMachine, jenkinsJobResponse); +// //添加延迟用于线程安全测试 +// Thread.sleep(1000); +// result = jenkinsStateMachine.sendEvent(message); +// //持久化状态机状态 +// persister.persist(jenkinsStateMachine, jenkinsJobResponse); +// } catch (Exception e) { +// e.printStackTrace(); +// } finally { +// jenkinsStateMachine.stop(); +// } +// return result; +// } +// +// @Override +// public JenkinsJobResponse pay(long id) { +// +// /*根据id获取订单集合的指定订单*/ +// JenkinsJobResponse jenkinsJobResponse = jenkinsJobs.get(id); +// Message message = MessageBuilder.withPayload(JenkinsJobChangeEvent.SUCCESS).setHeader("jenkinsJobResponse", jenkinsJobResponse).build(); +// +// if (!sendEvent(message, jenkinsJobResponse)) { +// System.out.println("订单支付失败"); +// } +// +// return jenkinsJobResponse; +// } +//} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/NacosServiceImpl.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/NacosServiceImpl.java index e744c40..e1fafb0 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/NacosServiceImpl.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/NacosServiceImpl.java @@ -9,9 +9,12 @@ import com.qc.soft.deploy.ease.api.response.TenantResponse; import com.qc.soft.deploy.ease.consts.Consts; import com.qc.soft.deploy.ease.service.INacosService; import com.qc.soft.deploy.ease.service.ITenantService; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.tuple.Pair; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; @Service @@ -38,4 +41,23 @@ public class NacosServiceImpl implements INacosService { } } + @Override + public List> instances(List tenantCodes) { + List> result = new ArrayList<>(); + try { + NamingService namingService = NamingFactory.createNamingService(nacosDiscoveryProperties.getNacosProperties()); + for (String tenantCode : tenantCodes) { + List instances = namingService.getAllInstances(String.format(Consts.TENANT_ADAPTER_SERVICE_NAME, tenantCode), nacosDiscoveryProperties.getGroup()); + if (CollectionUtils.isEmpty(instances)) { + result.add(Pair.of(tenantCode, false)); + } else { + result.add(Pair.of(tenantCode, true)); + } + } + return result; + } catch (NacosException e) { + throw new RuntimeException(e); + } + } + } diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/ProjectServiceImpl.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/ProjectServiceImpl.java index b26880c..2f37f26 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/ProjectServiceImpl.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/ProjectServiceImpl.java @@ -1,10 +1,10 @@ package com.qc.soft.deploy.ease.service.impl; import com.qc.soft.deploy.ease.api.response.ProjectResponse; -import com.qc.soft.deploy.ease.context.TenantContext; import com.qc.soft.deploy.ease.convert.response.ProjectConvert; import com.qc.soft.deploy.ease.repository.IProjectRepository; import com.qc.soft.deploy.ease.service.IProjectService; +import com.qc.soft.framework.basic.context.TenantContext; import org.springframework.stereotype.Service; import javax.annotation.Resource; diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/TenantServiceImpl.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/TenantServiceImpl.java index 3cdc5e2..c569a33 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/TenantServiceImpl.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/TenantServiceImpl.java @@ -1,22 +1,22 @@ package com.qc.soft.deploy.ease.service.impl; +import com.qc.soft.deploy.ease.api.response.TenantAdapterContextResponse; +import com.qc.soft.deploy.ease.api.response.TenantEnvResponse; import com.qc.soft.deploy.ease.api.response.TenantResponse; import com.qc.soft.deploy.ease.convert.response.TenantConvert; -import com.qc.soft.deploy.ease.holder.K8sApiHolder; -import com.qc.soft.deploy.ease.k8s.K8sDeploymentResponse; -import com.qc.soft.deploy.ease.k8s.K8sNamespaceResponse; -import com.qc.soft.deploy.ease.k8s.K8sPodResponse; +import com.qc.soft.deploy.ease.entity.SysJenkinsConfig; +import com.qc.soft.deploy.ease.entity.TenantEnv; +import com.qc.soft.deploy.ease.entity.TenantEnvJenkins; +import com.qc.soft.deploy.ease.repository.ISysJenkinsConfigRepository; +import com.qc.soft.deploy.ease.repository.ITenantEnvJenkinsRepository; +import com.qc.soft.deploy.ease.repository.ITenantEnvRepository; import com.qc.soft.deploy.ease.repository.ITenantRepository; -import com.qc.soft.deploy.ease.service.IK8sService; import com.qc.soft.deploy.ease.service.ITenantService; -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import com.qc.soft.framework.basic.context.TenantContext; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.io.IOException; -import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -25,8 +25,35 @@ public class TenantServiceImpl implements ITenantService { @Resource private ITenantRepository tenantRepository; + + @Resource + private ITenantEnvRepository tenantEnvRepository; + + @Resource + private ITenantEnvJenkinsRepository tenantEnvJenkinsRepository; + + @Resource + private ISysJenkinsConfigRepository sysJenkinsConfigRepository; + @Override public List tenants() { return TenantConvert.INSTANCE.listToResponse(tenantRepository.findAll()); } + + + @Override + public TenantAdapterContextResponse getTenantAdapterContext() { + String currentTenant = TenantContext.getCurrentTenant(); + TenantAdapterContextResponse contextResponse = new TenantAdapterContextResponse(); + List tenantEnvs = tenantEnvRepository.findByTenantCode(currentTenant); + List tenantEnvCodes = tenantEnvs.stream().map(TenantEnv::getEnvCode).collect(Collectors.toList()); + List tenantEnvJenkins = tenantEnvJenkinsRepository.findByEnvCodeIn(tenantEnvCodes); + List jenkinsCodes = tenantEnvJenkins.stream().map(TenantEnvJenkins::getJenkinsCode).distinct().collect(Collectors.toList()); + List jenkinsConfigs = sysJenkinsConfigRepository.findByJenkinsCodeIn(jenkinsCodes); + List envList = new ArrayList<>(tenantEnvs.size()); + tenantEnvs.forEach(tenantEnv -> { + String envCode = tenantEnv.getEnvCode(); + }); + return null; + } } \ No newline at end of file diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/UserServiceImpl.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/UserServiceImpl.java index ec6b46a..b2c00f6 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/UserServiceImpl.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/service/impl/UserServiceImpl.java @@ -1,6 +1,6 @@ package com.qc.soft.deploy.ease.service.impl; -import com.qc.soft.deploy.ease.entity.User; +import com.qc.soft.deploy.ease.entity.SysUser; import com.qc.soft.deploy.ease.repository.IUserRepository; import com.qc.soft.deploy.ease.service.IUserService; import org.springframework.stereotype.Service; @@ -15,7 +15,7 @@ public class UserServiceImpl implements IUserService { @Override public boolean login(String username, String password) { - User user = userRepository.findByUsernameAndPassword(username, password); + SysUser user = userRepository.findByUsernameAndPassword(username, password); return user != null; } } \ No newline at end of file diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/state/IBusinessState.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/state/IBusinessState.java new file mode 100644 index 0000000..f5b29a8 --- /dev/null +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/state/IBusinessState.java @@ -0,0 +1,20 @@ +package com.qc.soft.deploy.ease.state; + +import com.qc.soft.framework.basic.entity.BasicResponseState; +import com.qc.soft.framework.basic.enums.IBasicState; + +public interface IBusinessState extends IBasicState { + +// +// SUCCESS("操作成功"), +// FAILURE("操作失败"), +// TENANT_DOES_NOT_EXIST("租户不存在"), +// TENANT_NOT_ENABLED("%s租户未启用"); +// +// private final String message; +// +// BusinessErrorCode(String message) { +// this.message = message; +// } + +} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/statemachine/JenkinsJobStatemachineConfig.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/statemachine/JenkinsJobStatemachineConfig.java index 1dcceae..abd8582 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/statemachine/JenkinsJobStatemachineConfig.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/statemachine/JenkinsJobStatemachineConfig.java @@ -1,55 +1,55 @@ -package com.qc.soft.deploy.ease.statemachine; - -import com.qc.soft.deploy.ease.fegin.response.JenkinsJobResponse; -import com.qc.soft.deploy.ease.event.JenkinsJobChangeEvent; -import com.qc.soft.deploy.ease.enums.JenkinsJobStatus; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.statemachine.StateMachineContext; -import org.springframework.statemachine.StateMachinePersist; -import org.springframework.statemachine.config.EnableStateMachine; -import org.springframework.statemachine.config.StateMachineConfigurerAdapter; -import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; -import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; -import org.springframework.statemachine.persist.DefaultStateMachinePersister; -import org.springframework.statemachine.support.DefaultStateMachineContext; - -import java.util.EnumSet; - -@Configuration -@EnableStateMachine(name = "jenkinsStatemachine") -public class JenkinsJobStatemachineConfig extends StateMachineConfigurerAdapter { - - - @Override - public void configure(StateMachineStateConfigurer states) throws Exception { - states.withStates().initial(JenkinsJobStatus.WAITING_BUILD).states(EnumSet.allOf(JenkinsJobStatus.class)); - } - - - public void configure(StateMachineTransitionConfigurer transitions) throws Exception { - transitions - .withExternal().source(JenkinsJobStatus.WAITING_BUILD).target(JenkinsJobStatus.BUILDING).event(JenkinsJobChangeEvent.SUCCESS) - .and() - .withExternal().source(JenkinsJobStatus.WAITING_BUILD).target(JenkinsJobStatus.BUILDING).event(JenkinsJobChangeEvent.ABORTED) - .and() - .withExternal().source(JenkinsJobStatus.WAITING_BUILD).target(JenkinsJobStatus.BUILDING).event(JenkinsJobChangeEvent.FAILURE); - } - - @Bean - public DefaultStateMachinePersister persister() { - return new DefaultStateMachinePersister<>(new StateMachinePersist() { - @Override - public void write(StateMachineContext context, JenkinsJobResponse jenkinsJob) throws Exception { - jenkinsJob.setResult(JenkinsJobStatus.BUILD_END); - System.out.println("persister writer" + jenkinsJob.toString()); - } - - @Override - public StateMachineContext read(JenkinsJobResponse jenkinsJob) throws Exception { - System.out.println("persister read" + jenkinsJob.toString()); - return new DefaultStateMachineContext(jenkinsJob.getResult(), null, null, null); - } - }); - } -} +//package com.qc.soft.deploy.ease.statemachine; +// +//import com.qc.soft.deploy.ease.fegin.response.JenkinsJobResponse; +//import com.qc.soft.deploy.ease.event.JenkinsJobChangeEvent; +//import com.qc.soft.deploy.ease.enums.JenkinsJobStatus; +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.statemachine.StateMachineContext; +//import org.springframework.statemachine.StateMachinePersist; +//import org.springframework.statemachine.config.EnableStateMachine; +//import org.springframework.statemachine.config.StateMachineConfigurerAdapter; +//import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; +//import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; +//import org.springframework.statemachine.persist.DefaultStateMachinePersister; +//import org.springframework.statemachine.support.DefaultStateMachineContext; +// +//import java.util.EnumSet; +// +//@Configuration +//@EnableStateMachine(name = "jenkinsStatemachine") +//public class JenkinsJobStatemachineConfig extends StateMachineConfigurerAdapter { +// +// +// @Override +// public void configure(StateMachineStateConfigurer states) throws Exception { +// states.withStates().initial(JenkinsJobStatus.WAITING_BUILD).states(EnumSet.allOf(JenkinsJobStatus.class)); +// } +// +// +// public void configure(StateMachineTransitionConfigurer transitions) throws Exception { +// transitions +// .withExternal().source(JenkinsJobStatus.WAITING_BUILD).target(JenkinsJobStatus.BUILDING).event(JenkinsJobChangeEvent.SUCCESS) +// .and() +// .withExternal().source(JenkinsJobStatus.WAITING_BUILD).target(JenkinsJobStatus.BUILDING).event(JenkinsJobChangeEvent.ABORTED) +// .and() +// .withExternal().source(JenkinsJobStatus.WAITING_BUILD).target(JenkinsJobStatus.BUILDING).event(JenkinsJobChangeEvent.FAILURE); +// } +// +// @Bean +// public DefaultStateMachinePersister persister() { +// return new DefaultStateMachinePersister<>(new StateMachinePersist() { +// @Override +// public void write(StateMachineContext context, JenkinsJobResponse jenkinsJob) throws Exception { +// jenkinsJob.setResult(JenkinsJobStatus.BUILD_END); +// System.out.println("persister writer" + jenkinsJob.toString()); +// } +// +// @Override +// public StateMachineContext read(JenkinsJobResponse jenkinsJob) throws Exception { +// System.out.println("persister read" + jenkinsJob.toString()); +// return new DefaultStateMachineContext(jenkinsJob.getResult(), null, null, null); +// } +// }); +// } +//} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/statemachine/listener/JenkinsJobStatusListenerImpl.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/statemachine/listener/JenkinsJobStatusListenerImpl.java index aeb87af..d2371a5 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/statemachine/listener/JenkinsJobStatusListenerImpl.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/statemachine/listener/JenkinsJobStatusListenerImpl.java @@ -1,38 +1,38 @@ -package com.qc.soft.deploy.ease.statemachine.listener; - -import com.qc.soft.deploy.ease.fegin.response.JenkinsJobResponse; -import com.qc.soft.deploy.ease.event.JenkinsJobChangeEvent; -import org.springframework.messaging.Message; -import org.springframework.statemachine.annotation.OnTransition; -import org.springframework.statemachine.annotation.WithStateMachine; -import org.springframework.stereotype.Component; - -@Component("jenkinsJobStatusListener") -@WithStateMachine(name = "jenkinsStatemachine") -public class JenkinsJobStatusListenerImpl { - - @OnTransition(source = "WAITING_BUILD", target = "BUILDING") - public boolean jenkinsBuildingTransition(Message message) { - JenkinsJobResponse jenkinsJobResponse = (JenkinsJobResponse) message.getHeaders().get("jenkinsJobResponse"); - jenkinsJobResponse.setResult(jenkinsJobResponse.getResult()); - System.out.println("支付,状态机反馈信息:" + message.getHeaders().toString()); - return true; - } - - @OnTransition(source = "BUILDING", target = "BUILD_END") - public boolean jenkinsBuildEndTransition(Message message) { - JenkinsJobResponse jenkinsJobResponse = (JenkinsJobResponse) message.getHeaders().get("jenkinsJobResponse"); - jenkinsJobResponse.setResult(jenkinsJobResponse.getResult()); - System.out.println("支付,状态机反馈信息:" + message.getHeaders().toString()); - return true; - } - -// @OnTransition(source = "BUILDING", target = "BUILDING") -// public boolean jenkinsBuildingTransition(Message message) { +//package com.qc.soft.deploy.ease.statemachine.listener; +// +//import com.qc.soft.deploy.ease.fegin.response.JenkinsJobResponse; +//import com.qc.soft.deploy.ease.event.JenkinsJobChangeEvent; +//import org.springframework.messaging.Message; +//import org.springframework.statemachine.annotation.OnTransition; +//import org.springframework.statemachine.annotation.WithStateMachine; +//import org.springframework.stereotype.Component; +// +//@Component("jenkinsJobStatusListener") +//@WithStateMachine(name = "jenkinsStatemachine") +//public class JenkinsJobStatusListenerImpl { +// +// @OnTransition(source = "WAITING_BUILD", target = "BUILDING") +// public boolean jenkinsBuildingTransition(Message message) { // JenkinsJobResponse jenkinsJobResponse = (JenkinsJobResponse) message.getHeaders().get("jenkinsJobResponse"); -//// jenkinsJobResponse.setStatus(OrderStatus.WAIT_DELIVER); +// jenkinsJobResponse.setResult(jenkinsJobResponse.getResult()); // System.out.println("支付,状态机反馈信息:" + message.getHeaders().toString()); // return true; // } - -} +// +// @OnTransition(source = "BUILDING", target = "BUILD_END") +// public boolean jenkinsBuildEndTransition(Message message) { +// JenkinsJobResponse jenkinsJobResponse = (JenkinsJobResponse) message.getHeaders().get("jenkinsJobResponse"); +// jenkinsJobResponse.setResult(jenkinsJobResponse.getResult()); +// System.out.println("支付,状态机反馈信息:" + message.getHeaders().toString()); +// return true; +// } +// +//// @OnTransition(source = "BUILDING", target = "BUILDING") +//// public boolean jenkinsBuildingTransition(Message message) { +//// JenkinsJobResponse jenkinsJobResponse = (JenkinsJobResponse) message.getHeaders().get("jenkinsJobResponse"); +////// jenkinsJobResponse.setStatus(OrderStatus.WAIT_DELIVER); +//// System.out.println("支付,状态机反馈信息:" + message.getHeaders().toString()); +//// return true; +//// } +// +//} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/K8sClientUtils.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/K8sClientUtils.java deleted file mode 100644 index cf5a582..0000000 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/utils/K8sClientUtils.java +++ /dev/null @@ -1,263 +0,0 @@ -package com.qc.soft.deploy.ease.utils; - -import io.kubernetes.client.openapi.ApiClient; -import io.kubernetes.client.openapi.ApiException; -import io.kubernetes.client.openapi.apis.AppsV1Api; -import io.kubernetes.client.openapi.apis.CoreV1Api; -import io.kubernetes.client.openapi.models.V1DeploymentList; -import io.kubernetes.client.openapi.models.V1EndpointsList; -import io.kubernetes.client.openapi.models.V1NamespaceList; -import io.kubernetes.client.openapi.models.V1PodList; -import io.kubernetes.client.openapi.models.V1Scale; -import io.kubernetes.client.util.ClientBuilder; -import io.kubernetes.client.util.KubeConfig; -import lombok.extern.slf4j.Slf4j; - -import java.io.FileReader; -import java.io.IOException; - -@Slf4j -public class K8sClientUtils { - - private ApiClient apiClient; - - - /** - * 构建集群POD内通过SA访问的客户端 - * loading the in-cluster config2, including: - * 1. service-account CA - * 2. service-account bearer-token - * 3. service-account namespace - * 4. master endpoints(ip, port) from pre-set environment variables - */ - public K8sClientUtils() { - try { - this.apiClient = ClientBuilder.cluster().build(); - } catch (IOException e) { - log.error("构建K8s-Client异常", e); - throw new RuntimeException("构建K8s-Client异常"); - } - } - - - /** - * 构建集群外通过UA访问的客户端 - * loading the out-of-cluster config2, a kubeconfig from file-system - * - * @param kubeConfigPath kube连接配置文件 - */ - public K8sClientUtils(String kubeConfigPath) { - try { - this.apiClient = ClientBuilder.kubeconfig(KubeConfig.loadKubeConfig(new FileReader(kubeConfigPath))).build(); - } catch (IOException e) { - log.error("读取kubeConfigPath异常", e); - throw new RuntimeException("读取kubeConfigPath异常"); - } catch (Exception e) { - log.error("构建K8s-Client异常", e); - throw new RuntimeException("构建K8s-Client异常"); - } - } - - - /** - * 获取所有的Pod - * - * @return podList - */ - public V1PodList getAllPodList() { - // new a CoreV1Api - CoreV1Api api = new CoreV1Api(apiClient); - // invokes the CoreV1Api client - try { - V1PodList list = api.listPodForAllNamespaces(null, null, null, null, null, null, null, null, null, null, null); - return list; - } catch (ApiException e) { - log.error("获取podlist异常:" + e.getResponseBody(), e); - } - return null; - } - - public V1NamespaceList getAllNamespaceList() { - // new a CoreV1Api - CoreV1Api api = new CoreV1Api(apiClient); - // invokes the CoreV1Api client - try { - return api.listNamespace(null, null, null, null, null, null, null, null, null, null, null); - } catch (ApiException e) { - log.error("获取podlist异常:" + e.getResponseBody(), e); - } - return null; - } - - public V1DeploymentList getDeploymentList(String namespace) { - try { - AppsV1Api api = new AppsV1Api(apiClient); - return api.listNamespacedDeployment(namespace, null, null, null, null, null, null, null, null, null, null, null); - } catch (ApiException e) { - throw new RuntimeException(e); - } - } - - public V1EndpointsList getEndpointsList() { - // new a CoreV1Api - CoreV1Api api = new CoreV1Api(apiClient); - // invokes the CoreV1Api client - try { - return api.listEndpointsForAllNamespaces(null, null, null, null, null, null, null, null, null, null, null); - } catch (ApiException e) { - log.error("获取podlist异常:" + e.getResponseBody(), e); - } - return null; - } - - public V1Scale readNamespacedDeploymentScale(String namespace, String name) { - try { - AppsV1Api api = new AppsV1Api(apiClient); - return api.readNamespacedDeploymentScale(name, namespace, null); - } catch (ApiException e) { - throw new RuntimeException(e); - } - } - - public V1Scale replaceNamespacedDeploymentScale(String appName, String namespace, V1Scale v1Scale){ - try { - AppsV1Api api = new AppsV1Api(apiClient); - return api.replaceNamespacedDeploymentScale(appName, namespace, v1Scale, null, null, null, null); - } catch (ApiException e) { - throw new RuntimeException(e); - } - } - - - /** - * 创建k8s service - * - * @param namespace 命名空间 - * @param serviceName 服务名称 - * @param port 服务端口号(和目标pod的端口号一致) - * @param selector pod标签选择器 - * @return 创建成功的service对象 - */ -// public V1Service createService(String namespace, String serviceName, Integer port, Map selector) { -// //构建service的yaml对象 -// V1Service -// .withNewMetadata() -// .withName(serviceName) -// .endMetadata() -// .withNewSpec() -// .addNewPort() -// .withProtocol("TCP") -// .withPort(port) -// .withTargetPort(new IntOrString(port)) -// .endPort() -// .withSelector(selector) -// .endSpec() -// .build(); -// -// -// // Deployment and StatefulSet is defined in apps/v1, so you should use AppsV1Api instead of CoreV1API -// CoreV1Api api = new CoreV1Api(apiClient); -// V1Service v1Service = null; -// try { -// v1Service = api.createNamespacedService(namespace, svc, null, null, null); -// } catch (ApiException e) { -// log.error("创建service异常:" + e.getResponseBody(), e); -// } catch (Exception e) { -// log.error("创建service系统异常:", e); -// } -// return v1Service; -// } - - - /** - * 创建k8s V1Ingress - * - * @param namespace 命名空间 - * @param ingressName ingress名称 - * @param annotations ingress注解 - * @param path 匹配的路径 - * @param serviceName 路由到的服务名称 - * @param servicePort 路由到的服务端口 - * @return 创建成功的ingress对象 - */ -// public V1Ingress createV1Ingress(String namespace, String ingressName, Map annotations, String path, -// String serviceName, Integer servicePort) { -// //构建ingress的yaml对象 -// V1Ingress ingress = new V1IngressBuilder() -// .withNewMetadata() -// .withName(ingressName) -// .withAnnotations(annotations) -// .endMetadata() -// .withNewSpec() -// .addNewRule() -// .withHttp(new V1HTTPIngressRuleValueBuilder().addToPaths(new V1HTTPIngressPathBuilder() -// .withPath(path) -// .withPathType("Prefix") -// .withBackend(new V1IngressBackendBuilder() -// .withService(new V1IngressServiceBackendBuilder() -// .withName(serviceName) -// .withPort(new V1ServiceBackendPortBuilder() -// .withNumber(servicePort).build()).build()).build()).build()).build()) -// .endRule() -// .endSpec() -// .build(); -// -// -// //调用对应的API执行创建ingress的操作 -// NetworkingV1Api api = new NetworkingV1Api(apiClient); -// V1Ingress v1Ingress = null; -// try { -// v1Ingress = api.createNamespacedIngress(namespace, ingress, null, null, null); -// } catch (ApiException e) { -// log.error("创建ingress异常:" + e.getResponseBody(), e); -// } catch (Exception e) { -// log.error("创建ingress系统异常:", e); -// } -// return v1Ingress; -// } - - - /** - * 创建k8s ExtensionIngress - * - * @param namespace 命名空间 - * @param ingressName ingress名称 - * @param annotations ingress注解 - * @param path 匹配的路径 - * @param serviceName 路由到的服务名称 - * @param servicePort 路由到的服务端口 - * @return 创建成功的ingress对象 - */ -// public ExtensionsV1beta1Ingress createExtensionIngress(String namespace, String ingressName, Map annotations, String path, -// String serviceName, Integer servicePort) { -// //构建ingress的yaml对象 -// ExtensionsV1beta1Ingress ingress = new ExtensionsV1beta1IngressBuilder() -// .withNewMetadata() -// .withName(ingressName) -// .withAnnotations(annotations) -// .endMetadata() -// .withNewSpec() -// .addNewRule() -// .withHttp(new ExtensionsV1beta1HTTPIngressRuleValueBuilder().addToPaths(new ExtensionsV1beta1HTTPIngressPathBuilder() -// .withPath(path) -// .withBackend(new ExtensionsV1beta1IngressBackendBuilder() -// .withServiceName(serviceName) -// .withServicePort(new IntOrString(servicePort)).build()).build()).build()) -// .endRule() -// .endSpec() -// .build(); -// -// -// //调用对应的API执行创建ingress的操作 -// ExtensionsV1beta1Api api = new ExtensionsV1beta1Api(apiClient); -// ExtensionsV1beta1Ingress extensionsV1beta1Ingress = null; -// try { -// extensionsV1beta1Ingress = api.createNamespacedIngress(namespace, ingress, null, null, null); -// } catch (ApiException e) { -// log.error("创建ingress异常:" + e.getResponseBody(), e); -// } catch (Exception e) { -// log.error("创建ingress系统异常:", e); -// } -// return extensionsV1beta1Ingress; -// } -} \ No newline at end of file diff --git a/deploy-ease-core/src/main/resources/META-INF/spring.factories b/deploy-ease-core/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000..8bf408c --- /dev/null +++ b/deploy-ease-core/src/main/resources/META-INF/spring.factories @@ -0,0 +1,3 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +com.qc.soft.framework.basic.config.GlobalWebConfigurer + diff --git a/deploy-ease-core/src/main/resources/sql/project_environment.sql b/deploy-ease-core/src/main/resources/sql/project_environment.sql deleted file mode 100644 index 8aab76d..0000000 --- a/deploy-ease-core/src/main/resources/sql/project_environment.sql +++ /dev/null @@ -1,20 +0,0 @@ -USE deploy_ease_dev; -DROP TABLE IF EXISTS project_environment; -CREATE TABLE project_environment -( - id INT AUTO_INCREMENT PRIMARY KEY, - environment_code VARCHAR(50) NOT NULL, - environment_name VARCHAR(50) NOT NULL, - environment_type TINYINT NOT NULL COMMENT '1、K8S 2、Docker 3、单点部署', - project_code VARCHAR(50) NOT NULL, - is_vpn TINYINT NOT NULL, - create_time DATETIME NOT NULL DEFAULT NOW(), - update_time DATETIME NOT NULL DEFAULT NOW(), - is_deleted TINYINT NOT NULL DEFAULT 0 -); -INSERT INTO project_environment (environment_code, environment_name, environment_type, is_vpn, project_code) -VALUES ('dev', '开发环境', 1, 1, 'scp'); -INSERT INTO project_environment (environment_code, environment_name, environment_type, is_vpn, project_code) -VALUES ('uat', '测试环境', 1, 1, 'scp'); -INSERT INTO project_environment (environment_code, environment_name, environment_type, is_vpn, project_code) -VALUES ('prod', '生产环境', 1, 1, 'scp'); \ No newline at end of file diff --git a/deploy-ease-core/src/main/resources/sql/dictionary.sql b/deploy-ease-core/src/main/resources/sql/sys_dict.sql similarity index 70% rename from deploy-ease-core/src/main/resources/sql/dictionary.sql rename to deploy-ease-core/src/main/resources/sql/sys_dict.sql index 0d22a82..8212ff8 100644 --- a/deploy-ease-core/src/main/resources/sql/dictionary.sql +++ b/deploy-ease-core/src/main/resources/sql/sys_dict.sql @@ -1,6 +1,6 @@ USE deploy_ease_dev; -DROP TABLE IF EXISTS dictionary; -CREATE TABLE dictionary +DROP TABLE IF EXISTS sys_dict; +CREATE TABLE sys_dict ( id INT AUTO_INCREMENT PRIMARY KEY, dictionary_code VARCHAR(50) NOT NULL, @@ -12,4 +12,4 @@ CREATE TABLE dictionary update_time DATETIME NOT NULL DEFAULT NOW(), is_deleted TINYINT NOT NULL DEFAULT 0 ); -INSERT INTO dictionary ( dictionary_code, dictionary_name, dictionary_value) VALUE ('JENKINS_BASE_API', 'Jenkins地址', 'http://jenkins-rd.longi.com:8080'); +INSERT INTO sys_dict ( dictionary_code, dictionary_name, dictionary_value) VALUE ('JENKINS_BASE_API', 'Jenkins地址', 'http://jenkins-rd.longi.com:8080'); \ No newline at end of file diff --git a/deploy-ease-core/src/main/resources/sql/sys_group.sql b/deploy-ease-core/src/main/resources/sql/sys_group.sql new file mode 100644 index 0000000..55dfb7c --- /dev/null +++ b/deploy-ease-core/src/main/resources/sql/sys_group.sql @@ -0,0 +1,12 @@ +USE deploy_ease_dev; +DROP TABLE IF EXISTS sys_group; +CREATE TABLE sys_group +( + id INT AUTO_INCREMENT PRIMARY KEY, + group_code VARCHAR(50) NOT NULL, + group_name VARCHAR(50) NOT NULL, + create_time DATETIME NOT NULL DEFAULT NOW(), + update_time DATETIME NOT NULL DEFAULT NOW(), + is_deleted TINYINT NOT NULL DEFAULT 0 +); +INSERT INTO sys_group(group_code, group_name)VALUES ('scp', '计划产品项目组'); \ No newline at end of file diff --git a/deploy-ease-core/src/main/resources/sql/sys_jenkins_config.sql b/deploy-ease-core/src/main/resources/sql/sys_jenkins_config.sql new file mode 100644 index 0000000..0d262e2 --- /dev/null +++ b/deploy-ease-core/src/main/resources/sql/sys_jenkins_config.sql @@ -0,0 +1,22 @@ +USE deploy_ease_dev; +DROP TABLE IF EXISTS sys_jenkins_config; +CREATE TABLE sys_jenkins_config +( + `id` BIGINT(20) AUTO_INCREMENT, + `jenkins_code` VARCHAR(100) NOT NULL, + `jenkins_name` VARCHAR(100) NOT NULL, + `username` VARCHAR(50) NOT NULL, + `password` VARCHAR(50) NOT NULL, + `url` VARCHAR(500) NOT NULL, + `create_time` DATETIME NOT NULL DEFAULT NOW(), + `update_time` DATETIME NOT NULL DEFAULT NOW(), + `is_deleted` TINYINT NOT NULL DEFAULT 0, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_code` (jenkins_code) USING BTREE +) ENGINE = InnoDB + AUTO_INCREMENT = 1 + CHARACTER SET = utf8 + COLLATE = utf8_bin COMMENT = 'jenkins' + ROW_FORMAT = DYNAMIC; +INSERT INTO sys_jenkins_config (jenkins_code, jenkins_name, username, password, url) +VALUES ('scp_dev_uat', '计划产品Dev&Uat Jenkins', 'admin', '3%(Lb5GN,M''Yk\,)Dy"*', 'http://192.168.2.200:9096'); \ No newline at end of file diff --git a/deploy-ease-core/src/main/resources/sql/project.sql b/deploy-ease-core/src/main/resources/sql/sys_project.sql similarity index 50% rename from deploy-ease-core/src/main/resources/sql/project.sql rename to deploy-ease-core/src/main/resources/sql/sys_project.sql index 419af2e..bb702d4 100644 --- a/deploy-ease-core/src/main/resources/sql/project.sql +++ b/deploy-ease-core/src/main/resources/sql/sys_project.sql @@ -1,16 +1,13 @@ USE deploy_ease_dev; -DROP TABLE IF EXISTS project; -CREATE TABLE project +DROP TABLE IF EXISTS sys_project; +CREATE TABLE sys_project ( id INT AUTO_INCREMENT PRIMARY KEY, project_code VARCHAR(50) NOT NULL, project_name VARCHAR(50) NOT NULL, - tenant_code VARCHAR(50) NOT NULL, + group_code VARCHAR(50) NOT NULL, create_time DATETIME NOT NULL DEFAULT NOW(), update_time DATETIME NOT NULL DEFAULT NOW(), is_deleted TINYINT NOT NULL DEFAULT 0 ); -INSERT INTO project (project_code, project_name, tenant_code) -VALUES ('scp', '计划产品', 'longi'); -INSERT INTO project (project_code, project_name, tenant_code) -VALUES ('oms', '订单', 'longi'); \ No newline at end of file +INSERT INTO sys_project (project_code, project_name, group_code) VALUE('scp-meta', '元数据项目', 'scp'); \ No newline at end of file diff --git a/deploy-ease-core/src/main/resources/sql/user.sql b/deploy-ease-core/src/main/resources/sql/sys_user.sql similarity index 69% rename from deploy-ease-core/src/main/resources/sql/user.sql rename to deploy-ease-core/src/main/resources/sql/sys_user.sql index 0a35ec4..b19921b 100644 --- a/deploy-ease-core/src/main/resources/sql/user.sql +++ b/deploy-ease-core/src/main/resources/sql/sys_user.sql @@ -1,6 +1,6 @@ USE deploy_ease_dev; -DROP TABLE IF EXISTS user; -CREATE TABLE user +DROP TABLE IF EXISTS sys_user; +CREATE TABLE sys_user ( id INT AUTO_INCREMENT PRIMARY KEY, user_name VARCHAR(50) NOT NULL, @@ -10,4 +10,4 @@ CREATE TABLE user update_time DATETIME NOT NULL DEFAULT NOW(), is_deleted TINYINT NOT NULL DEFAULT 0 ); -INSERT INTO user(user_name, password, real_name)VALUES ('admin', '123456', '管理员'); \ No newline at end of file +INSERT INTO sys_user(user_name, password, real_name)VALUES ('admin', '123456', '管理员'); \ No newline at end of file diff --git a/deploy-ease-core/src/main/resources/sql/user_online.sql b/deploy-ease-core/src/main/resources/sql/sys_user_online.sql similarity index 84% rename from deploy-ease-core/src/main/resources/sql/user_online.sql rename to deploy-ease-core/src/main/resources/sql/sys_user_online.sql index 848c55d..cf6b783 100644 --- a/deploy-ease-core/src/main/resources/sql/user_online.sql +++ b/deploy-ease-core/src/main/resources/sql/sys_user_online.sql @@ -1,6 +1,6 @@ USE deploy_ease_dev; -DROP TABLE IF EXISTS user_online; -CREATE TABLE user_online +DROP TABLE IF EXISTS sys_user_online; +CREATE TABLE sys_user_online ( id INT AUTO_INCREMENT PRIMARY KEY, user_code VARCHAR(50) NOT NULL, diff --git a/deploy-ease-core/src/main/resources/sql/user_tenant.sql b/deploy-ease-core/src/main/resources/sql/sys_user_tenant.sql similarity index 67% rename from deploy-ease-core/src/main/resources/sql/user_tenant.sql rename to deploy-ease-core/src/main/resources/sql/sys_user_tenant.sql index 6a1cb6a..7e51d8b 100644 --- a/deploy-ease-core/src/main/resources/sql/user_tenant.sql +++ b/deploy-ease-core/src/main/resources/sql/sys_user_tenant.sql @@ -1,6 +1,6 @@ USE deploy_ease_dev; -DROP TABLE IF EXISTS user_tenant; -CREATE TABLE user_tenant +DROP TABLE IF EXISTS sys_user_tenant; +CREATE TABLE sys_user_tenant ( id INT AUTO_INCREMENT PRIMARY KEY, user_id VARCHAR(50) NOT NULL, @@ -9,4 +9,4 @@ CREATE TABLE user_tenant update_time DATETIME NOT NULL DEFAULT NOW(), is_deleted TINYINT NOT NULL DEFAULT 0 ); -INSERT INTO user_tenant (user_id, tenant_code) VALUES ('1', 'longi') \ No newline at end of file +INSERT INTO sys_user_tenant (user_id, tenant_code) VALUES ('1', 'longi') \ No newline at end of file diff --git a/deploy-ease-core/src/main/resources/sql/tenant.sql b/deploy-ease-core/src/main/resources/sql/tenant.sql index 94ee7af..5376955 100644 --- a/deploy-ease-core/src/main/resources/sql/tenant.sql +++ b/deploy-ease-core/src/main/resources/sql/tenant.sql @@ -10,4 +10,5 @@ CREATE TABLE tenant update_time DATETIME NOT NULL DEFAULT NOW(), is_deleted TINYINT NOT NULL DEFAULT 0 ); +INSERT INTO tenant (tenant_code, tenant_name, enabled) VALUES ('scp', '计划产品', 1); INSERT INTO tenant (tenant_code, tenant_name, enabled) VALUES ('longi', '隆基', 1); \ No newline at end of file diff --git a/deploy-ease-core/src/main/resources/sql/tenant_dictionary.sql b/deploy-ease-core/src/main/resources/sql/tenant_dict.sql similarity index 73% rename from deploy-ease-core/src/main/resources/sql/tenant_dictionary.sql rename to deploy-ease-core/src/main/resources/sql/tenant_dict.sql index 5653aa0..5858245 100644 --- a/deploy-ease-core/src/main/resources/sql/tenant_dictionary.sql +++ b/deploy-ease-core/src/main/resources/sql/tenant_dict.sql @@ -1,6 +1,6 @@ USE deploy_ease_dev; -DROP TABLE IF EXISTS tenant_dictionary; -CREATE TABLE tenant_dictionary +DROP TABLE IF EXISTS tenant_dict; +CREATE TABLE tenant_dict ( id INT AUTO_INCREMENT PRIMARY KEY, dictionary_code VARCHAR(50) NOT NULL, @@ -12,5 +12,5 @@ CREATE TABLE tenant_dictionary update_time DATETIME NOT NULL DEFAULT NOW(), is_deleted TINYINT NOT NULL DEFAULT 0 ); -INSERT INTO tenant_dictionary (dictionary_code, dictionary_name, dictionary_value, tenant_code) +INSERT INTO tenant_dict (dictionary_code, dictionary_name, dictionary_value, tenant_code) VALUES ('JENKINS_BASE_API', 'Jenkins地址', 'http://jenkins-rd.longi.com:8080', 'longi'); \ No newline at end of file diff --git a/deploy-ease-core/src/main/resources/sql/tenant_env.sql b/deploy-ease-core/src/main/resources/sql/tenant_env.sql new file mode 100644 index 0000000..d8b006f --- /dev/null +++ b/deploy-ease-core/src/main/resources/sql/tenant_env.sql @@ -0,0 +1,20 @@ +USE deploy_ease_dev; +DROP TABLE IF EXISTS tenant_env; +CREATE TABLE tenant_env +( + id INT AUTO_INCREMENT PRIMARY KEY, + code VARCHAR(50) NOT NULL, + name VARCHAR(50) NOT NULL, + type TINYINT NOT NULL COMMENT '1、K8S 2、Docker 3、单点部署', + tenant_code VARCHAR(50) NOT NULL, + is_vpn TINYINT NOT NULL, + create_time DATETIME NOT NULL DEFAULT NOW(), + update_time DATETIME NOT NULL DEFAULT NOW(), + is_deleted TINYINT NOT NULL DEFAULT 0 +); +INSERT INTO tenant_env (code, name, type, tenant_code, is_vpn) +VALUES ('scp_dev', '开发环境', 1, 'scp', 1); +INSERT INTO tenant_env (code, name, type, tenant_code, is_vpn) +VALUES ('scp_uat', '测试环境', 1, 'scp', 1); +INSERT INTO tenant_env (code, name, type, tenant_code, is_vpn) +VALUES ('scp_prod', '生产环境', 1, 'scp', 1); \ No newline at end of file diff --git a/deploy-ease-core/src/main/resources/sql/tenant_env_jenkinks.sql b/deploy-ease-core/src/main/resources/sql/tenant_env_jenkinks.sql new file mode 100644 index 0000000..8755704 --- /dev/null +++ b/deploy-ease-core/src/main/resources/sql/tenant_env_jenkinks.sql @@ -0,0 +1,15 @@ +USE deploy_ease_dev; +DROP TABLE IF EXISTS tenant_env_jenkins; +CREATE TABLE tenant_env_jenkins +( + id INT AUTO_INCREMENT PRIMARY KEY, + view_name VARCHAR(100) NOT NULL, + jenkins_code VARCHAR(50) NOT NULL, + env_code VARCHAR(50) NOT NULL, + tenant_code VARCHAR(50) NOT NULL, + create_time DATETIME NOT NULL DEFAULT NOW(), + update_time DATETIME NOT NULL DEFAULT NOW(), + is_deleted TINYINT NOT NULL DEFAULT 0 +); +INSERT INTO tenant_env_jenkins (view_name, jenkins_code, env_code, tenant_code) +VALUES ('iscmtech-dev', 'scp_dev_uat', 'scp_dev', 'scp'); \ No newline at end of file diff --git a/deploy-ease-tenant-adapter/pom.xml b/deploy-ease-tenant-adapter/pom.xml index e175a00..56440e9 100644 --- a/deploy-ease-tenant-adapter/pom.xml +++ b/deploy-ease-tenant-adapter/pom.xml @@ -84,10 +84,15 @@ mapstruct-jdk8 ${mapstruct.version} + + com.qc.soft + deploy-ease-basic + ${version} + com.qc.soft deploy-ease-api - 1.0-SNAPSHOT + ${version} com.alibaba.cloud @@ -101,6 +106,14 @@ com.alibaba.nacos nacos-client + + org.springframework.boot + spring-boot-starter-webflux + + + org.springframework.cloud + spring-cloud-starter-openfeign + @@ -121,7 +134,7 @@ com.qc.soft deploy-ease-parent - 1.0-SNAPSHOT + ${version} \ No newline at end of file diff --git a/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/synchronizer/DeployEaseTenantAdapterApplication.java b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/DeployEaseTenantAdapterApplication.java similarity index 64% rename from deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/synchronizer/DeployEaseTenantAdapterApplication.java rename to deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/DeployEaseTenantAdapterApplication.java index 0ae0ffa..3ecd643 100644 --- a/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/synchronizer/DeployEaseTenantAdapterApplication.java +++ b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/DeployEaseTenantAdapterApplication.java @@ -1,15 +1,15 @@ -package com.qc.soft.deploy.ease.synchronizer; +package com.qc.soft.deploy.ease.adapter; import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.scheduling.annotation.EnableAsync; -import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.annotation.ComponentScan; @SpringBootConfiguration @EnableAutoConfiguration -@EnableScheduling -@EnableAsync +@ComponentScan("com.qc.soft.deploy.ease.*") +@EnableFeignClients public class DeployEaseTenantAdapterApplication { public static void main(String[] args) { diff --git a/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/internal/IDictionaryServiceApi.java b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/internal/IDictionaryServiceApi.java new file mode 100644 index 0000000..c5ded1c --- /dev/null +++ b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/internal/IDictionaryServiceApi.java @@ -0,0 +1,14 @@ +package com.qc.soft.deploy.ease.adapter.api.internal; + +import com.qc.soft.deploy.ease.api.response.TenantDictionaryResponse; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; + +import java.util.List; + +@FeignClient(name = "deploy-ease-core") +public interface IDictionaryServiceApi { + + @GetMapping("/mgmt/dict/tenant") + List tenantDicts(); +} diff --git a/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/JenkinsClientApi.java b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/JenkinsClientApi.java new file mode 100644 index 0000000..f92c5eb --- /dev/null +++ b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/JenkinsClientApi.java @@ -0,0 +1,37 @@ +package com.qc.soft.deploy.ease.adapter.api.thirdparty; + +import com.alibaba.fastjson2.JSON; +import com.qc.soft.deploy.ease.adapter.api.thirdparty.response.JenkinsCrumbIssuerResponse; +import com.qc.soft.deploy.ease.adapter.enums.BusinessState; +import com.qc.soft.framework.basic.exception.BasicException; +import com.qc.soft.framework.basic.utils.BasicAuthUtils; +import com.qc.soft.framework.basic.utils.HttpUtils; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import java.util.IdentityHashMap; + +@Component +@Slf4j +public class JenkinsClientApi { + + + public JenkinsCrumbIssuerResponse getJenkinsCrumbIssue(String url, String username, String password) throws BasicException { + IdentityHashMap header = new IdentityHashMap<>(); + header.put("Authorization", BasicAuthUtils.encode(username, password)); + JenkinsCrumbIssuerResponse jenkinsCrumbIssuerResponse = HttpUtils.cookieGet(url, header, JenkinsCrumbIssuerResponse.class); + if (jenkinsCrumbIssuerResponse == null) { + log.error("Get jenkins crumb failed!"); + throw new BasicException(BusinessState.GET_JENKINS_CRUMB_FAILED); + } + if (StringUtils.isEmpty(jenkinsCrumbIssuerResponse.getCrumb()) || StringUtils.isEmpty(jenkinsCrumbIssuerResponse.getCookie())) { + log.error("Get jenkins crumb and cookie failed, response:{}!", JSON.toJSONString(jenkinsCrumbIssuerResponse)); + throw new BasicException(String.format("Get jenkins crumb and cookie failed, response %s!", JSON.toJSONString(jenkinsCrumbIssuerResponse))); + } + return jenkinsCrumbIssuerResponse; + } + + + +} diff --git a/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JenkinsApiInfoDto.java b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JenkinsApiInfoDto.java new file mode 100644 index 0000000..0c0d226 --- /dev/null +++ b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JenkinsApiInfoDto.java @@ -0,0 +1,17 @@ +package com.qc.soft.deploy.ease.adapter.api.thirdparty.response; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class JenkinsApiInfoDto { + + private String viewName; + + private String projectName; + + private String taskApi; + + private String taskDetailsApi; +} diff --git a/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JenkinsCrumbIssuerResponse.java b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JenkinsCrumbIssuerResponse.java new file mode 100644 index 0000000..a05a894 --- /dev/null +++ b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JenkinsCrumbIssuerResponse.java @@ -0,0 +1,12 @@ +package com.qc.soft.deploy.ease.adapter.api.thirdparty.response; + +import lombok.Data; + +@Data +public class JenkinsCrumbIssuerResponse { + + private String crumb; + + private String cookie; + +} diff --git a/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JenkinsLastJobDetailChangeSetDetailResponse.java b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JenkinsLastJobDetailChangeSetDetailResponse.java new file mode 100644 index 0000000..824e7c0 --- /dev/null +++ b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JenkinsLastJobDetailChangeSetDetailResponse.java @@ -0,0 +1,29 @@ +package com.qc.soft.deploy.ease.adapter.api.thirdparty.response; + +import lombok.Data; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +@Data +public class JenkinsLastJobDetailChangeSetDetailResponse { + + private String commitId; + + private Date timestamp; + + private Map author; + + private String authorEmail; + + private String comment; + + private Date date; + + private String id; + + private String msg; + + private List> paths; +} diff --git a/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JenkinsLastJobDetailChangeSetResponse.java b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JenkinsLastJobDetailChangeSetResponse.java new file mode 100644 index 0000000..dabc776 --- /dev/null +++ b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JenkinsLastJobDetailChangeSetResponse.java @@ -0,0 +1,12 @@ +package com.qc.soft.deploy.ease.adapter.api.thirdparty.response; + +import lombok.Data; + +import java.util.List; + +@Data +public class JenkinsLastJobDetailChangeSetResponse { + + private List items; + +} \ No newline at end of file diff --git a/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JenkinsLastJobDetailResponse.java b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JenkinsLastJobDetailResponse.java new file mode 100644 index 0000000..1bd2053 --- /dev/null +++ b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JenkinsLastJobDetailResponse.java @@ -0,0 +1,31 @@ +package com.qc.soft.deploy.ease.adapter.api.thirdparty.response; + +import lombok.Data; + +import java.util.Date; + +@Data +public class JenkinsLastJobDetailResponse { + + private String projectName; + + private int number; + + private boolean inProgress; + + private boolean building; + + private String result; + + private Date timestamp; + + private long duration; + + private int queueId; + + private JenkinsLastJobDetailChangeSetResponse changeSet; + +} + + + diff --git a/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JobInfoDto.java b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JobInfoDto.java new file mode 100644 index 0000000..22fcadf --- /dev/null +++ b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/api/thirdparty/response/JobInfoDto.java @@ -0,0 +1,13 @@ +package com.qc.soft.deploy.ease.adapter.api.thirdparty.response; + +import lombok.Data; + +@Data +public class JobInfoDto { + + private String name; + + private String color; + + private String url; +} diff --git a/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/config/FeignClientConfig.java b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/config/FeignClientConfig.java new file mode 100644 index 0000000..eb0256a --- /dev/null +++ b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/config/FeignClientConfig.java @@ -0,0 +1,17 @@ +package com.qc.soft.deploy.ease.adapter.config; + +import com.qc.soft.framework.basic.context.TenantContext; +import feign.RequestInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class FeignClientConfig { + @Bean + public RequestInterceptor tenantHeaderInterceptor() { + return requestTemplate -> { + requestTemplate.header("Content-Type", "application/json;charset=UTF-8"); + requestTemplate.header("x-tenant-code", TenantContext.getCurrentTenant()); + }; + } +} diff --git a/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/config/TenantProcessor.java b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/config/TenantProcessor.java new file mode 100644 index 0000000..f586b3f --- /dev/null +++ b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/config/TenantProcessor.java @@ -0,0 +1,47 @@ +package com.qc.soft.deploy.ease.adapter.config; + +import com.qc.soft.framework.basic.context.TenantContext; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; +import org.springframework.beans.factory.support.BeanDefinitionRegistry; +import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.annotation.Order; +import org.springframework.core.env.Environment; + +@Configuration +@Slf4j +@Order(value = 100) +public class TenantProcessor implements BeanDefinitionRegistryPostProcessor, InitializingBean, ApplicationContextAware { + + private ApplicationContext applicationContext; + + @Override + public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException { + } + + + @Override + public void afterPropertiesSet() { + Environment environment = applicationContext.getEnvironment(); + if (ObjectUtils.isEmpty(environment.getProperty("TENANT_CODE"))) { + throw new NullPointerException("Adapter project tenant code not found!!!"); + } + TenantContext.setCurrentTenant(environment.getProperty("TENANT_CODE")); + } + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + this.applicationContext = applicationContext; + } + + @Override + public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { + + } +} diff --git a/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/consts/Consts.java b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/consts/Consts.java new file mode 100644 index 0000000..e26eff4 --- /dev/null +++ b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/consts/Consts.java @@ -0,0 +1,7 @@ +package com.qc.soft.deploy.ease.adapter.consts; + +public class Consts { + + + +} diff --git a/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/consts/JenkinsConstants.java b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/consts/JenkinsConstants.java new file mode 100644 index 0000000..cf4ca53 --- /dev/null +++ b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/consts/JenkinsConstants.java @@ -0,0 +1,28 @@ +package com.qc.soft.deploy.ease.adapter.consts; + +public class JenkinsConstants { + + + // viewApi: ${devops.jenkins.basePath}/view/%s/api/json?pretty=true +// projectApi: ${devops.jenkins.basePath}/view/%s/job/%s/api/json?pretty=true +// projectBuildApi: ${devops.jenkins.basePath}/job/%s/%s/api/json?pretty=true +// crumbIssuerApi: ${devops.jenkins.basePath}/crumbIssuer/api/json +// buildWithParamsApi: ${devops.jenkins.basePath}/job/%s/buildWithParameters +// cleanWorkspaceApi: ${devops.jenkins.basePath}/view/%s/job/%s/doWipeOutWorkspace +// buildFailedApi: ${devops.jenkins.basePath}/view/%s/job/%s/%s/consoleText + + public static final String JENKINS_CRUMB_IS_SUER_API = "%s/crumbIssuer/api/json"; + + public static final String JENKINS_VIEW_API = "%s/view/%s/api/json?pretty=true"; + + public static final String JENKINS_PROJECT_VIEW_API = "%s/view/%s/job/%s/api/json?pretty=true"; + + public static final String JENKINS_PROJECT_JOB_DETAIL_API = "%s/job/%s/%s/api/json?pretty=true"; + + public static final String JENKINS_PROJECT_EXEC_BUILD_API = "%s/job/%s/buildWithParameters"; + + public static final String JENKINS_PROJECT_CLEAN_WORKSPACE_API = "%s/view/%s/job/%s/doWipeOutWorkspace"; + + public static final String JENKINS_PROJECT_JOB_FAILED_API = "%s/view/%s/job/%s/%s/consoleText"; + +} diff --git a/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/controller/JenkinsSSEController.java b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/controller/JenkinsSSEController.java new file mode 100644 index 0000000..3cc8949 --- /dev/null +++ b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/controller/JenkinsSSEController.java @@ -0,0 +1,33 @@ +package com.qc.soft.deploy.ease.adapter.controller; + +import com.qc.soft.deploy.ease.adapter.api.internal.IDictionaryServiceApi; +import com.qc.soft.deploy.ease.adapter.service.IJenkinsService; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import reactor.core.publisher.Flux; + +import javax.annotation.Resource; +import java.time.Duration; + +@RestController +@RequestMapping("sse") +public class JenkinsSSEController { + + @Resource + private IDictionaryServiceApi dictionaryServiceApi; + + @Resource + private IJenkinsService jenkinsService; + +// @GetMapping(value = "/jenkins/views", produces = "text/event-stream;charset=UTF-8") +// public Flux jenkinsViews() { +// return Flux.interval(Duration.ofSeconds(5)).map(index -> jenkinsService); +// } + + + @GetMapping(value = "/jenkins/crumb") + public void getJenkinsCrumbIssue() { + jenkinsService.getJenkinsCrumbIssue(null, null, null); + } +} diff --git a/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/enums/AdapterBusinessErrorCodeI.java b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/enums/AdapterBusinessErrorCodeI.java new file mode 100644 index 0000000..03340e8 --- /dev/null +++ b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/enums/AdapterBusinessErrorCodeI.java @@ -0,0 +1,6 @@ +package com.qc.soft.deploy.ease.adapter.enums; + +import com.qc.soft.framework.basic.enums.IBasicState; + +public enum AdapterBusinessErrorCodeI implements IBasicState { +} diff --git a/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/enums/BusinessState.java b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/enums/BusinessState.java new file mode 100644 index 0000000..1b735d8 --- /dev/null +++ b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/enums/BusinessState.java @@ -0,0 +1,10 @@ +package com.qc.soft.deploy.ease.adapter.enums; + +import com.qc.soft.framework.basic.entity.BasicResponseState; +import com.qc.soft.framework.basic.enums.IBasicState; + +public interface BusinessState extends IBasicState { + + + BasicResponseState GET_JENKINS_CRUMB_FAILED = BasicResponseState.builder().code("GET_JENKINS_CRUMB_FAILED").message("获取Jenkins Crumb失败").build(); +} diff --git a/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/service/IJenkinsService.java b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/service/IJenkinsService.java new file mode 100644 index 0000000..f844087 --- /dev/null +++ b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/service/IJenkinsService.java @@ -0,0 +1,9 @@ +package com.qc.soft.deploy.ease.adapter.service; + +public interface IJenkinsService { + + + public void getJenkinsCrumbIssue(String url, String username, String password); + + +} diff --git a/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/service/impl/JenkinsServiceImpl.java b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/service/impl/JenkinsServiceImpl.java new file mode 100644 index 0000000..e687261 --- /dev/null +++ b/deploy-ease-tenant-adapter/src/main/java/com/qc/soft/deploy/ease/adapter/service/impl/JenkinsServiceImpl.java @@ -0,0 +1,22 @@ +package com.qc.soft.deploy.ease.adapter.service.impl; + +import com.qc.soft.deploy.ease.adapter.api.thirdparty.JenkinsClientApi; +import com.qc.soft.deploy.ease.adapter.api.thirdparty.response.JenkinsCrumbIssuerResponse; +import com.qc.soft.deploy.ease.adapter.consts.JenkinsConstants; +import com.qc.soft.deploy.ease.adapter.service.IJenkinsService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class JenkinsServiceImpl implements IJenkinsService { + + @Resource + private JenkinsClientApi jenkinsClientApi; + + @Override + public void getJenkinsCrumbIssue(String url, String username, String password) { + JenkinsCrumbIssuerResponse admin = jenkinsClientApi.getJenkinsCrumbIssue(String.format(JenkinsConstants.JENKINS_CRUMB_IS_SUER_API, "http://192.168.2.200:9096"), "admin", "3%(Lb5GN,M'Yk\\,)Dy\"*"); + System.out.println(admin); + } +} diff --git a/deploy-ease-tenant-adapter/src/main/resources/META-INF/spring.factories b/deploy-ease-tenant-adapter/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000..e4f42f5 --- /dev/null +++ b/deploy-ease-tenant-adapter/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +com.qc.soft.framework.basic.config.GlobalWebConfigurer diff --git a/deploy-ease-tenant-adapter/src/main/resources/bootstrap.yml b/deploy-ease-tenant-adapter/src/main/resources/bootstrap.yml index 3ac7ca3..ace723d 100644 --- a/deploy-ease-tenant-adapter/src/main/resources/bootstrap.yml +++ b/deploy-ease-tenant-adapter/src/main/resources/bootstrap.yml @@ -12,12 +12,12 @@ spring: group: ${DEPLOY_ENV} namespace: ${DEPLOY_ENV} extension-configs[0]: - data-id: common.yml group: common + data-id: common.yml refresh: false extension-configs[1]: - data-id: deploy-ease-synchronizer.yml group: business + data-id: deploy-ease-tenant-adapter.yml refresh: false config: override-none: false diff --git a/deploy-ease-tenant-adapter/target/classes/META-INF/spring.factories b/deploy-ease-tenant-adapter/target/classes/META-INF/spring.factories new file mode 100644 index 0000000..e4f42f5 --- /dev/null +++ b/deploy-ease-tenant-adapter/target/classes/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +com.qc.soft.framework.basic.config.GlobalWebConfigurer diff --git a/deploy-ease-tenant-adapter/target/classes/bootstrap.yml b/deploy-ease-tenant-adapter/target/classes/bootstrap.yml index 3ac7ca3..ace723d 100644 --- a/deploy-ease-tenant-adapter/target/classes/bootstrap.yml +++ b/deploy-ease-tenant-adapter/target/classes/bootstrap.yml @@ -12,12 +12,12 @@ spring: group: ${DEPLOY_ENV} namespace: ${DEPLOY_ENV} extension-configs[0]: - data-id: common.yml group: common + data-id: common.yml refresh: false extension-configs[1]: - data-id: deploy-ease-synchronizer.yml group: business + data-id: deploy-ease-tenant-adapter.yml refresh: false config: override-none: false diff --git a/deploy-ease-tenant-adapter/target/deploy-ease-tenant-adapter-1.0.0.jar.original b/deploy-ease-tenant-adapter/target/deploy-ease-tenant-adapter-1.0.0.jar.original index 81dec15a58c8e816c086308481bc2e7fcb294409..f872e57743987e95ed720c903d0634edeffe5c6f 100644 GIT binary patch literal 25231 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%0A>)vF&S-v#$RpXpA5_oeb60hD#sx zuo5$j14Na^c9y?tBb8qqD)qZw>F(6OqN7;2M|^j*5w1{JpZOZyM*Z&BPL0a06*%|I zn1S>>z2>OaR0DlNa+R1&S^X(<)2yOvxqBUm(ff)MmU?P-z1=K*S5YGE%0|NKT95HW z>X3z)m1oPl1Vj@8Tab!MAQPLV_PG~!8T|g{2?;HmB{6L$hoM?_@iIHm}1z#D!go~qOvOjTVlPns#JN4nOgi)d*2j#y>xU!(Vq1F z2&}77tqBf!{;uYaW;Hd)-g;5S?YtItbx5}#?$o$?i#hvQ!R73j$pikSX7#Hxf3(lC zG9t9(Nxif{eIyq|$s5SqS&VEX9mc+}L)*x?>K~vrVU-FVpUCX~bowD%{$S<#)U^a1 zUEIK9#I)+LRdVb2i{wJRR}IeAFEV@kLo#k)}11jfyRzWDyVbwElvK7#&_GMVf{&03LcV#`gkO9vb-U{-P_; z3-9T567K_yA(E_nk^xE*LKP&0dE&h#t1EOBHiUfTrqxt6F!E|oZ>i0@(q5L)>j+GE z^81uG6pi$J(QO#qB$k4p1)*;)B|Nu{i{FZ&3j155mk1+87UmiP%T=?7w9vpV@ax>* zF%t%Hu!La9MowT#Ajqtn3*!Pf@-qgW5@!$4I34&t17PHxDzKTAE24Hb;xmwucMynV zoH;<7A>b=FzKdUiAfj>R03#KErw;DOS@0J>0T9^;37{7im<2fUZh#U;Lxa73g7}1erEuYf{N+^H~z)C91xuWM)DQ~k&#fQeu9Z|O4R&1dOb(? z^9fujfG`Ir$vfE%^EAbPv1G9x;5^sx%XI#!jQJa?pP!caNrT|VnFG8^;sEKn@sb0e zuI8zXEjT9Hmm1~INtRZ^LBMibV;m|F} zvIBq)3DQt5%ejGT)>~i%7d$IC_z22sSo(jM)lAI+ZVo4SK;~({EBjyAB|Lc^@GRh% z04R%Ug)h!RaA*KLE%?iTP+A1l|5IA?-wA>z1b-U|N+=AtMSkI5YhFL`&jY><8_Git zm~H&yJYbu$;jM>nzJy%kfZZ93xz5fAcx=Uld%-uNL0)6P@Gqd(g4@#IPVh}8kW=t> zft=u5PT&UcZ5faO9oS+gKvO^i&Hy`qlLp)hzB~_E$?X)#iZc`9luZA+SP!>^FU>-h zk-HYR6m+2$?h0R}gIvc=7k3qC%?@q}U$lWN9nA%`Twnx&|E#T)lFylzH0e|}wmXjb# delta 2344 zcmZ{l2{@Gd9>-q>XUH;RhJz847>q5YQq&NxErbdgvJQ@A7$wWYU^K$XGJ`Ur8T(SH zOjLGRvURx17A0#}W4~F7+%cVVy3RfKeV+IEKJWAVzrXkW|9=1X`$=i#8kZ3|XAa^K z001xm#3u-)3CV+YMT-d1i5E(%lI6&d97nblcZI6RrOr`%t|L(Pvjgy7mjd+w4?-$9 zEWq8HfDiBq_atcSsZTB7LGQkR+Q)N@qXN9qMC(LBhr&|XRx}p?3~&R05WAoo9)BhH z3c)o{JoC~$zwTbv8+@`{(0qUJhxYsYl6o2wNz=ftcXtGzZ+UYs@Reff#2au>LwOZCb$ zxdB$gZP1A<&o#4vYzT!$@O?z`p}mhvaH%Pbh{3*Sj2}@`6<7w#5swBPZVvZn?e~_C zqXt-jnFA5+%czkE8#CdoLpFd_w{@>4_g`dh#1|5{8RX>JcY=3 zSf>43V_9~|uOEycS?LW)p}4l>lqoGuMQq~P6_%kf%$NB^UX6H3N*IhuzvMlLNGPRN z9nV3bMJ*-gVV>x8+|ax*C`LO^tQl_@Q(4R0=p zOAAI+1kayG$D?gu+gbTen&~J!C;lvfSoOQ)A>o+TDbiLy&CpC1FNLUlzFA8>E1b5r$5`{utcH= zdNWnVD(oXFZ>*bu)K*5EC%ngXtIY0RRIctrjTJSAm|Ui>%hlC1a(=<@XM#Z%a!8>l zc^b3NLxU&)aGjz;txpj{{r%q9>*M-o@ZcYzZ^!2H_H^rG4@nTpD zjn2oB(n;wnO|I*oTZ5OF5%6ny*hFa4$wS@`gli1$uaXXR_r?(eZxG_*c?3>?f3vh| zR($AHdnIIrSltOLFsu| znB?`Nw<}fLrHPoRK|en8-mgm7W}R0fLy%lr4#TjueEj?iyEpV42@~rnoPWM#8J0H2 zGEYw{O?AHwX5ZpvKSF^f;#Sw^t<}NJp3htT>$0+#ZhSp2 z;HPbCKP7)mT2V{E2mX8(Bc5!;2hHaxLB>)2JYaolVO?5yW9|2tKFz@U@}0# z+Nw+{A${P~$66{9(+oGW~q{d9fYL!i~M#8hqm&+5i4b-Up ztfuRlbTi*G8g^xQBO*3M<)y}CMqm|2UC5G?gBkSJlo%l@0kLU${ zn;Rb9OzKa{EEC4%nQUv6i90(L=fE1F;sOP)v2O)C%D>jtRkeukdsj?aD;c?G-c) zLU0wq$>8gSyG5Ooqenex#ve32%+Ks!?Z29_Z1p3Ab=klKS(kBG_t094qqEi+4nUP{ zG&t&LbC{#4Hpe;IX>*#R`)m#V2C$cHm5Dz>oC8=cZaC;qgzw?8$e(P60Q34SY!X-) zo!3`0wfu*MziWtR06QA~zZtQ|y!^vV4Yxybc9LU<;6`&(gY5QG&$%I}D|Tq^C~m5Z z{eI-%G5wEn1u^%zsgCvte!h~eg;GIXT=0xW9IWkKX$Q|#0ppB3NlA0(^6 u&b99w{GNX7VK}@De70%IUT@C64fpt#`G5Cm3PS)0@PG#Z?y$QG0RI6_w%7;& diff --git a/deploy-ease-tenant-adapter/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/deploy-ease-tenant-adapter/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst index 3bede11..8adb602 100644 --- a/deploy-ease-tenant-adapter/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ b/deploy-ease-tenant-adapter/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -1 +1,19 @@ -com\qc\soft\deploy\ease\synchronizer\DeployEaseTenantAdapterApplication.class +com\qc\soft\deploy\ease\adapter\api\thirdparty\response\JenkinsCrumbIssuerResponse.class +com\qc\soft\deploy\ease\adapter\enums\AdapterBusinessErrorCodeI.class +com\qc\soft\deploy\ease\adapter\api\thirdparty\response\JenkinsLastJobDetailChangeSetResponse.class +com\qc\soft\deploy\ease\adapter\api\thirdparty\JenkinsClientApi.class +com\qc\soft\deploy\ease\adapter\api\thirdparty\response\JenkinsApiInfoDto.class +com\qc\soft\deploy\ease\adapter\api\thirdparty\response\JenkinsLastJobDetailChangeSetDetailResponse.class +com\qc\soft\deploy\ease\adapter\config\TenantProcessor.class +com\qc\soft\deploy\ease\adapter\consts\JenkinsConstants.class +com\qc\soft\deploy\ease\adapter\api\thirdparty\response\JenkinsLastJobDetailResponse.class +com\qc\soft\deploy\ease\adapter\controller\JenkinsSSEController.class +com\qc\soft\deploy\ease\adapter\api\thirdparty\response\JenkinsApiInfoDto$JenkinsApiInfoDtoBuilder.class +com\qc\soft\deploy\ease\adapter\config\FeignClientConfig.class +com\qc\soft\deploy\ease\adapter\enums\BusinessState.class +com\qc\soft\deploy\ease\adapter\consts\Consts.class +com\qc\soft\deploy\ease\adapter\api\internal\IDictionaryServiceApi.class +com\qc\soft\deploy\ease\adapter\api\thirdparty\response\JobInfoDto.class +com\qc\soft\deploy\ease\adapter\DeployEaseTenantAdapterApplication.class +com\qc\soft\deploy\ease\adapter\service\IJenkinsService.class +com\qc\soft\deploy\ease\adapter\service\impl\JenkinsServiceImpl.class diff --git a/deploy-ease-tenant-adapter/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/deploy-ease-tenant-adapter/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index ac2bde5..c359edb 100644 --- a/deploy-ease-tenant-adapter/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/deploy-ease-tenant-adapter/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1 +1,18 @@ -D:\work\github-workspace\deploy-ease-backend\deploy-ease-tenant-adapter\src\main\java\com\qc\soft\deploy\ease\synchronizer\DeployEaseTenantAdapterApplication.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-tenant-adapter\src\main\java\com\qc\soft\deploy\ease\adapter\api\internal\IDictionaryServiceApi.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-tenant-adapter\src\main\java\com\qc\soft\deploy\ease\adapter\api\thirdparty\response\JenkinsApiInfoDto.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-tenant-adapter\src\main\java\com\qc\soft\deploy\ease\adapter\api\thirdparty\JenkinsClientApi.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-tenant-adapter\src\main\java\com\qc\soft\deploy\ease\adapter\DeployEaseTenantAdapterApplication.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-tenant-adapter\src\main\java\com\qc\soft\deploy\ease\adapter\consts\JenkinsConstants.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-tenant-adapter\src\main\java\com\qc\soft\deploy\ease\adapter\api\thirdparty\response\JenkinsLastJobDetailResponse.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-tenant-adapter\src\main\java\com\qc\soft\deploy\ease\adapter\controller\JenkinsSSEController.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-tenant-adapter\src\main\java\com\qc\soft\deploy\ease\adapter\enums\BusinessState.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-tenant-adapter\src\main\java\com\qc\soft\deploy\ease\adapter\api\thirdparty\response\JenkinsLastJobDetailChangeSetResponse.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-tenant-adapter\src\main\java\com\qc\soft\deploy\ease\adapter\config\TenantProcessor.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-tenant-adapter\src\main\java\com\qc\soft\deploy\ease\adapter\consts\Consts.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-tenant-adapter\src\main\java\com\qc\soft\deploy\ease\adapter\api\thirdparty\response\JenkinsLastJobDetailChangeSetDetailResponse.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-tenant-adapter\src\main\java\com\qc\soft\deploy\ease\adapter\api\thirdparty\response\JobInfoDto.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-tenant-adapter\src\main\java\com\qc\soft\deploy\ease\adapter\config\FeignClientConfig.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-tenant-adapter\src\main\java\com\qc\soft\deploy\ease\adapter\enums\AdapterBusinessErrorCodeI.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-tenant-adapter\src\main\java\com\qc\soft\deploy\ease\adapter\api\thirdparty\response\JenkinsCrumbIssuerResponse.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-tenant-adapter\src\main\java\com\qc\soft\deploy\ease\adapter\service\IJenkinsService.java +D:\work\github-workspace\deploy-ease-backend\deploy-ease-tenant-adapter\src\main\java\com\qc\soft\deploy\ease\adapter\service\impl\JenkinsServiceImpl.java diff --git a/pom.xml b/pom.xml index 933eeaf..639c277 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.qc.soft deploy-ease-parent - 1.0-SNAPSHOT + ${version} pom @@ -13,6 +13,7 @@ 8 8 UTF-8 + Hoxton.SR12 2.3.0.RELEASE 2.3.31 2.0.51 @@ -35,6 +36,13 @@ + + org.springframework.cloud + spring-cloud-dependencies + ${spring.cloud.version} + pom + import + org.springframework.boot spring-boot-dependencies @@ -68,19 +76,55 @@ deploy-ease-tenant-adapter ${deploy-ease-tenant-adapter.version} + + com.alibaba + transmittable-thread-local + ${transmittable-thread-local.version} + + + cn.hutool + hutool-all + ${hutool.version} + + + org.apache.httpcomponents.client5 + httpclient5 + ${http5.version} + + + com.alibaba.fastjson2 + fastjson2 + ${fastjson-version} + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + - - - deploy-ease-api - deploy-ease-core - deploy-ease-tenant-adapter - + + + ${release.repository.id} + ${release.repository.name} + ${release.repository.url} + + + ${snapshot.repository.id} + ${snapshot.repository.name} + ${snapshot.repository.url} + + + + org.codehaus.mojo + flatten-maven-plugin + ${flatten-maven-plugin.version} + org.springframework.boot spring-boot-maven-plugin @@ -89,6 +133,36 @@ + + org.codehaus.mojo + flatten-maven-plugin + + true + resolveCiFriendliesOnly + + + + flatten + process-resources + + flatten + + + + flatten-clean + clean + + clean + + + + + + deploy-ease-basic + deploy-ease-api + deploy-ease-core + deploy-ease-tenant-adapter + \ No newline at end of file