Sfoglia il codice sorgente

Support build parameters by env

Yiming Liu 9 anni fa
parent
commit
b57fbd45dd

+ 1 - 4
.gitignore

@@ -24,7 +24,4 @@ target
 # git
 *.orig
 
-dev
-fat
-uat
-prd
+application-dev.properties

+ 3 - 1
apollo-adminservice/src/main/resources/application.yml

@@ -1,7 +1,9 @@
 spring:
   application:
     name: apollo-adminservice
-    
+  profiles:
+    active: ctrip
+        
 server:
   port: ${port:8090}
   

+ 8 - 0
apollo-biz/pom.xml

@@ -36,4 +36,12 @@
 			<scope>test</scope>
 		</dependency>
 	</dependencies>
+	<build>
+		<resources>
+			<resource>
+				<directory>src/main/resources</directory>
+				<filtering>true</filtering>
+			</resource>
+		</resources>
+	</build>
 </project>

+ 5 - 1
apollo-biz/src/main/java/com/ctrip/apollo/biz/datasource/TitanCondition.java

@@ -10,7 +10,11 @@ public class TitanCondition implements Condition {
 
   @Override
   public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
-    if (!StringUtils.isEmpty(context.getEnvironment().getProperty("titan.url"))) {
+    if (!StringUtils.isEmpty(context.getEnvironment().getProperty("fat.titan.url"))) {
+      return true;
+    } else if (!StringUtils.isEmpty(context.getEnvironment().getProperty("uat.titan.url"))) {
+      return true;
+    } else if (!StringUtils.isEmpty(context.getEnvironment().getProperty("pro.titan.url"))) {
       return true;
     }
     return false;

+ 46 - 13
apollo-biz/src/main/java/com/ctrip/apollo/biz/datasource/TitanSettings.java

@@ -3,28 +3,61 @@ package com.ctrip.apollo.biz.datasource;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
+import com.ctrip.apollo.core.enums.Env;
+import com.ctrip.apollo.core.enums.EnvUtils;
+import com.ctrip.framework.foundation.Foundation;
+
 @Component
 public class TitanSettings {
 
-  @Value("${titan.url:}")
-  private String titanUrl;
+  @Value("${fat.titan.url:}")
+  private String fatTitanUrl;
 
-  @Value("${titan.dbname:}")
-  private String titanDbname;
+  @Value("${uat.titan.url:}")
+  private String uatTitanUrl;
 
-  public String getTitanUrl() {
-    return titanUrl;
-  }
+  @Value("${pro.titan.url:}")
+  private String proTitanUrl;
+
+  @Value("${fat.titan.dbname:}")
+  private String fatTitanDbname;
 
-  public void setTitanUrl(String titanUrl) {
-    this.titanUrl = titanUrl;
+  @Value("${uat.titan.dbname:}")
+  private String uatTitanDbname;
+
+  @Value("${pro.titan.dbname:}")
+  private String proTitanDbname;
+
+  public String getTitanUrl() {
+    Env env = EnvUtils.transformEnv(Foundation.server().getEnvType());
+    switch (env) {
+      case FAT:
+      case FWS:
+        return fatTitanUrl;
+      case UAT:
+        return uatTitanUrl;
+      case TOOLS:
+      case PRO:
+        return proTitanUrl;
+      default:
+        return "";
+    }
   }
 
   public String getTitanDbname() {
-    return titanDbname;
+    Env env = EnvUtils.transformEnv(Foundation.server().getEnvType());
+    switch (env) {
+      case FAT:
+      case FWS:
+        return fatTitanDbname;
+      case UAT:
+        return uatTitanDbname;
+      case TOOLS:
+      case PRO:
+        return proTitanDbname;
+      default:
+        return "";
+    }
   }
 
-  public void setTitanDbname(String titanDbname) {
-    this.titanDbname = titanDbname;
-  }
 }

+ 7 - 0
apollo-biz/src/main/resources/application-ctrip.properties

@@ -0,0 +1,7 @@
+# Titan Datasource (Ctrip only)
+fat.titan.url=${fat_titan_url}
+fat.titan.dbname=${fat_titan_dbname}
+uat.titan.url=${uat_titan_url}
+uat.titan.dbname=${uat_titan_dbname}
+pro.titan.url=${pro_titan_url}
+pro.titan.dbname=${pro_titan_dbname}

+ 10 - 0
apollo-biz/src/main/resources/application.properties

@@ -0,0 +1,10 @@
+# DataSource
+spring.datasource.testWhileIdle=true
+spring.datasource.testOnBorrow=true
+spring.datasource.validationQuery=SELECT 1
+
+# Naming strategy
+spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy
+spring.jpa.hibernate.globally_quoted_identifiers=true
+spring.jpa.properties.hibernate.globally_quoted_identifiers=true
+spring.jpa.properties.hibernate.show_sql=true

+ 2 - 25
apollo-client/src/main/java/com/ctrip/apollo/util/ConfigUtil.java

@@ -1,11 +1,11 @@
 package com.ctrip.apollo.util;
 
 import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
 
 import com.ctrip.apollo.core.ConfigConsts;
 import com.ctrip.apollo.core.MetaDomainConsts;
 import com.ctrip.apollo.core.enums.Env;
+import com.ctrip.apollo.core.enums.EnvUtils;
 import com.ctrip.framework.foundation.Foundation;
 
 import org.unidal.lookup.annotation.Named;
@@ -52,34 +52,11 @@ public class ConfigUtil {
    * @throws IllegalStateException if env is set
    */
   public Env getApolloEnv() {
-    Env env = transformEnv(Foundation.server().getEnvType());
+    Env env = EnvUtils.transformEnv(Foundation.server().getEnvType());
     Preconditions.checkState(env != null, "env is not set");
     return env;
   }
 
-  private Env transformEnv(String envName) {
-    if (Strings.isNullOrEmpty(envName)) {
-      return null;
-    }
-    switch (envName.toUpperCase()) {
-      case "LPT":
-        return Env.LPT;
-      case "FAT":
-      case "FWS":
-        return Env.FAT;
-      case "UAT":
-        return Env.UAT;
-      case "PRO":
-        return Env.PRO;
-      case "DEV":
-        return Env.DEV;
-      case "LOCAL":
-        return Env.LOCAL;
-      default:
-        return null;
-    }
-  }
-
   public String getMetaServerDomainName() {
     return MetaDomainConsts.getDomain(getApolloEnv());
   }

+ 2 - 0
apollo-configservice/src/main/resources/application.yml

@@ -1,6 +1,8 @@
 spring:
   application:
     name: apollo-configservice
+  profiles:
+    active: ctrip
 
 server:
   port: ${port:8080}

+ 21 - 8
apollo-core/src/main/java/com/ctrip/apollo/core/MetaDomainConsts.java

@@ -7,21 +7,34 @@ import java.util.Properties;
 import com.ctrip.apollo.core.enums.Env;
 import com.ctrip.apollo.core.utils.ResourceUtils;
 
+/**
+ * The meta domain will load the meta server from System environment first, if not exist, will load
+ * from apollo-env.properties. If neither exists, will load the default meta url.
+ * 
+ * Currently, apollo supports local/dev/fat/uat/lpt/pro environments.
+ */
 public class MetaDomainConsts {
 
   private static Map<Env, String> domains = new HashMap<>();
 
+  public static final String DEFAULT_META_URL = "http://localhost:8080";
+
   static {
     Properties prop = new Properties();
     prop = ResourceUtils.readConfigFile("apollo-env.properties", prop);
-    domains.put(Env.LOCAL, prop.getProperty("local.meta", "http://localhost:8080"));
-    domains.put(Env.DEV, prop.getProperty("dev.meta"));
-    domains.put(Env.FAT, prop.getProperty("fat.meta"));
-    domains.put(Env.FWS, prop.getProperty("fws.meta"));
-    domains.put(Env.UAT, prop.getProperty("uat.meta"));
-    domains.put(Env.LPT, prop.getProperty("lpt.meta"));
-    domains.put(Env.TOOLS, prop.getProperty("tools.meta"));
-    domains.put(Env.PRO, prop.getProperty("pro.meta"));
+    Map<String, String> env = System.getenv();
+    domains.put(Env.LOCAL,
+        env.getOrDefault("local_meta", prop.getProperty("local.meta", DEFAULT_META_URL)));
+    domains.put(Env.DEV,
+        env.getOrDefault("dev_meta", prop.getProperty("dev.meta", DEFAULT_META_URL)));
+    domains.put(Env.FAT,
+        env.getOrDefault("fat_meta", prop.getProperty("fat.meta", DEFAULT_META_URL)));
+    domains.put(Env.UAT,
+        env.getOrDefault("uat_meta", prop.getProperty("uat.meta", DEFAULT_META_URL)));
+    domains.put(Env.LPT,
+        env.getOrDefault("lpt_meta", prop.getProperty("lpt.meta", DEFAULT_META_URL)));
+    domains.put(Env.PRO,
+        env.getOrDefault("pro_meta", prop.getProperty("pro.meta", DEFAULT_META_URL)));
   }
 
   public static String getDomain(Env env) {

+ 29 - 0
apollo-core/src/main/java/com/ctrip/apollo/core/enums/EnvUtils.java

@@ -0,0 +1,29 @@
+package com.ctrip.apollo.core.enums;
+
+import com.ctrip.apollo.core.utils.StringUtils;
+
+public final class EnvUtils {
+  
+  public static Env transformEnv(String envName) {
+    if (StringUtils.isBlank(envName)) {
+      return null;
+    }
+    switch (envName.toUpperCase()) {
+      case "LPT":
+        return Env.LPT;
+      case "FAT":
+      case "FWS":
+        return Env.FAT;
+      case "UAT":
+        return Env.UAT;
+      case "PRO":
+        return Env.PRO;
+      case "DEV":
+        return Env.DEV;
+      case "LOCAL":
+        return Env.LOCAL;
+      default:
+        return null;
+    }
+  }
+}

+ 4 - 5
apollo-core/src/main/resources/apollo-env.properties

@@ -1,6 +1,5 @@
 local.meta=http://localhost:8080
-dev.meta=${dev}
-fat.meta=${fat}
-uat.meta=${uat}
-lpt.meta=${lpt}
-pro.meta=${pro}
+dev.meta=${dev_meta}
+fat.meta=${fat_meta}
+uat.meta=${uat_meta}
+pro.meta=${pro_meta}

+ 1 - 1
apollo-core/src/test/java/com/ctrip/apollo/core/MetaDomainTest.java

@@ -11,6 +11,6 @@ public class MetaDomainTest {
   public void testGetMetaDomain() {
     Assert.assertEquals("http://localhost:8080", MetaDomainConsts.getDomain(Env.LOCAL));
     Assert.assertEquals("http://dev:8080", MetaDomainConsts.getDomain(Env.DEV));
-    Assert.assertNull(MetaDomainConsts.getDomain(Env.PRO));
+    Assert.assertEquals(MetaDomainConsts.DEFAULT_META_URL, MetaDomainConsts.getDomain(Env.PRO));
   }
 }

+ 3 - 1
apollo-portal/src/main/resources/application.yml

@@ -4,7 +4,9 @@ server:
 spring:
   application:
     name: apollo-portal
-
+  profiles:
+    active: ctrip
+    
 logging:
   level:
     org.springframework.cloud: 'DEBUG'

+ 2 - 2
pom.xml

@@ -124,12 +124,12 @@
 			<dependency>
 				<groupId>com.ctrip.framework</groupId>
 				<artifactId>framework-foundation</artifactId>
-				<version>1.1.4</version>
+				<version>1.1.5</version>
 			</dependency>
 			<dependency>
 				<groupId>com.dianping.cat</groupId>
 				<artifactId>cat-client</artifactId>
-				<version>1.4.6</version>
+				<version>1.5.0</version>
 			</dependency>
 			<dependency>
 				<groupId>com.ctrip.platform</groupId>