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
-
- 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